整数编程的零解

时间:2019-04-25 09:06:04

标签: r

我是R编程的初学者。我正在尝试在R中进行整数编程。当我使用int.vec时,所有决策变量的输出都为0。谁能帮我了解为什么会这样。以下是我的代码。

library(lpSolve)
f.obj=c(900,900,900,900,1800,1800,1800,1800)
f.con=matrix(c(3,0,0,0,6,0,0,0,                                                                       
    0,3,0,0,0,6,0,0,                                                                       
    0,0,3,0,0,0,6,0,                                                                       
    0,0,0,3,0,0,0,6,                                                                       
    1,0,0,0,0,0,0,0,                                                                       
    0,1,0,0,0,0,0,0,                                                                       
    0,0,1,0,0,0,0,0,                                                                       
    0,0,0,1,0,0,0,0,                                                                       
    0,0,0,0,1,0,0,0,                                                                       
    0,0,0,0,0,1,0,0,                                                                       
    0,0,0,0,0,0,1,0,                                                                       
    0,0,0,0,0,0,0,1,                                                                       
    1/13,1/19,1/24,1/15,0,0,0,0,                                                           
    0,0,0,0,1/13,1/19,1/24,1/15), ncol=8, byrow=TRUE)
f.dir=c("=","=","=","=","<=","<=","<=","<=","<=","<=","<=","<=","<=","<=")
f.rhs=c(2500,500,2500,500,650,1200,800,1200,650,1200,800,1200,100,100)
solution=lp("max",f.obj,f.con,f.dir,f.rhs,int.vec = 1:8)
solution$solution

输出:

#[1] 0 0 0 0 0 0 0 0

1 个答案:

答案 0 :(得分:0)

我认为您得到的都是零,因为它是唯一的“整数”解决方案。解决方案状态= 2,表示该问题不可行。如果我们不要求前四个变量为整数,则解决方案为非零:

solution=lp(direction = "max",f.obj,f.con,f.dir,f.rhs,int.vec = 5:8)

> solution$solution
[1]   1.3333333   0.6666667   1.3333333   0.6666667 416.0000000  83.0000000
[7] 416.0000000  83.0000000