Skip to content

Translation of Linear minimization probelm from matlab to r

2 messages · Haio, Petr Savicky

#
Hi everyone, i?m a new user of R and i?m trying to translate an linear
optimization problem from Matlab into r.

The matlab code is as follow:
 options = optimset('Diagnostics','on');

 [x fval exitflag] = linprog(f,A,b,Aeq,beq,lb,ub,[],options);

 exitflag
 fval
 x=round(x);
 Where:
f = Linear objective function vector (vector of 45,rows) 
A = Matrix for linear inequality constraints (3colums 45 rows matrix)
b = Vector for linear inequality constraints (3 rows vector)
Aeq = Matrix for linear equality constraints (45 colums, 8 rows )
beq = Vector for linear equality constraints (8 rows vector)
lb      =Vector of lower bounds (45 rows)
ub  =   Vector of upper bounds (45 rows)

I have tryed the package "linprog"   although i can?t find anyway to include
the linear inequality constraints into the "solveLP" function. 
Can anyone please help me?

--
View this message in context: http://r.789695.n4.nabble.com/Translation-of-Linear-minimization-probelm-from-matlab-to-r-tp4618123.html
Sent from the R help mailing list archive at Nabble.com.
#
On Tue, May 08, 2012 at 10:21:59AM -0700, Haio wrote:
Hi.

I am not sure, what is the problem with the constraints. According to
the documentation of the function solveLP(), the constraints are
provided as the arguments "bvec" and "Amat". However, i am using "lpSolve"
package and have no experience with "linprog" package. An example
of solving a simple linear program using lpSolve follows.

Consider the problem to maximize 3*x + 2*y with the constraints

    x >= 0
    y >= 0

    x +   y <= 3
  2*x +   y <= 5
    x + 2*y <= 5

then try

  library(lpSolve)
  crit <- c(3, 2)
  mat <- rbind(c(1, 1), c(1, 2), c(2, 1))
  rhs <- c(3, 5, 5)
  dir <- rep("<=", times=3)
  out <- lp("max", objective.in=crit, const.mat=mat, const.dir=dir, const.rhs=rhs)
  out

  Success: the objective function is 8 

  out$solution 
 
  [1] 2 1

Hope this helps.

Petr Savicky.