r-lp求解一个整数规划问题



用R求解整数规划问题,模型为:

# variables: x1, x2, x3
max z = 25000x1 + 18000x2 + 31000x3
s.t.:
x1 + x2 + x3 = 100
5000x1 + 11000x2 + 7000x3  <= 700000
x1 >= 10
x2 >= 10
x3 >= 10
x1, x2, x3  є {0,1}

在R中,我有以下行:

library(lpSolve)
f.obj <- c(25000, 18000, 31000)
f.con <- matrix(c(1,1,1,
5000,11000,7000,
1,0,0,
0,1,0,
0,0,1), nrow = 5, byrow = TRUE)
f.dir <- c("=", "<=", ">=", ">=", ">=")
f.rhs <- c(100, 700000, 10, 10, 10)
# Final value (z)
lp("max", f.obj, f.con, f.dir, f.rhs, int.vec = 1:5, all.bin = TRUE)
# Variables final values
lp("max", f.obj, f.con, f.dir, f.rhs, int.vec = 1:5, all.bin = TRUE)$solution

我期望得到正确的答案:

Z = 2850000 when x1 = 20, x2 = 10, x3 = 70. 

但以上代码返回:

Error: no feasible solution found

哪里出了问题,我该如何纠正?

根据lpSolve的文档,参数all.bin指定是否所有变量都是二进制的。正确的呼叫应该是

lp("max", f.obj, f.con, f.dir, f.rhs, int.vec = 1:5, all.int = TRUE)

最新更新