Linear programming problem, RGPLK - "no feasible solution".
Liu Evans, Gareth <Gareth.Liu-Evans <at> liverpool.ac.uk> writes:
In my post at https://stat.ethz.ch/pipermail/r-help/2011-October/292019.html I included an undefined term "ej". The problem code should be as follows. It seems like a simple linear programming problem, but for some reason my code is not finding the solution. obj <- c(rep(0,3),1) col1 <-c(1,0,0,1,0,0,1,-2.330078923,0) col2 <-c(0,1,0,0,1,0,1,-2.057855981,0) col3 <-c(0,0,1,0,0,1,1,-1.885177032,0) col4 <-c(-1,-1,-1,1,1,1,0,0,1) mat <- cbind(col1, col2, col3, col4) dir <- c(rep("<=", 3), rep(">=", 3), rep("==", 2), ">=") rhs <- c(rep(0, 7), 1, 0) sol <- Rglpk_solve_LP(obj, mat, dir, rhs, types = NULL, max = FALSE, bounds = c(-100,100), verbose = TRUE) The R output says there is no feasible solution, but e.g. (-2.3756786, 0.3297676, 2.0459110, 2.3756786) is feasible. The output is "GLPK Simplex Optimizer, v4.42 9 rows, 4 columns, 19 non-zeros 0: obj = 0.000000000e+000 infeas = 1.000e+000 (2) PROBLEM HAS NO FEASIBLE SOLUTION"
Please have a closer look at the help page "?Rglpk_solve_LP". The way to
define the bounds is a bit clumsy, but then it works:
sol <- Rglpk_solve_LP(obj, mat, dir, rhs, types = NULL, max = FALSE,
bounds = list(lower=list(ind=1:4, val=rep(-100,4)),
upper=list(ind=1:4, val=rep(100,4))),
verbose=TRUE)
GLPK Simplex Optimizer, v4.42
9 rows, 4 columns, 19 non-zeros
0: obj = -1.000000000e+02 infeas = 1.626e+03 (2)
* 10: obj = 1.000000000e+02 infeas = 0.000e+00 (0)
* 13: obj = 2.247686558e+00 infeas = 0.000e+00 (0)
OPTIMAL SOLUTION FOUND
> sol
$optimum
[1] 2.247687
$solution
[1] -2.247687e+00 -6.446292e-31 2.247687e+00 2.247687e+00
One other thing, a possible bug - if I run this code with "dir" shorter than it should be, R crashes. My version of R is 2.131.56322.0, and I'm running it on Windows 7.
If you can reproduce that R crashes -- which it shall never do -- inform the maintainer of this package. On Mac it doesn't crash, it goes into an infinite loop with "Execution aborted.Error detected in file glplib03.c at line 83". Regards, Hans Werner
Regards, Gareth