我对函数get.basis()的返回感到困惑。例如,
lprec <- make.lp(0, 4)
set.objfn(lprec, c(1, 3, 6.24, 0.1))
add.constraint(lprec, c(0, 78.26, 0, 2.9), ">=", 92.3)
add.constraint(lprec, c(0.24, 0, 11.31, 0), "<=", 14.8)
add.constraint(lprec, c(12.68, 0, 0.08, 0.9), ">=", 4)
set.bounds(lprec, lower = c(28.6, 18), columns = c(1, 4))
set.bounds(lprec, upper = 48.98, columns = 4)
RowNames <- c("THISROW", "THATROW", "LASTROW")
ColNames <- c("COLONE", "COLTWO", "COLTHREE", "COLFOUR")
dimnames(lprec) <- list(RowNames, ColNames)
solve(lprec)那么基本变量是
> get.basis(lprec)
[1] -7 -2 -3然而,解决方案是
> get.variables(lprec)
[1] 28.60000 0.00000 0.00000 31.82759从解的角度看,变量1和变量4是基本的。因此,向量(-7,-2,-3)是如何来自?的。
我猜想它来自3个约束和4个决策变量。
发布于 2015-05-21 04:45:56
在回顾了有界变量的单纯形方法之后,我终于明白了它是如何发生的。这两个链接是有帮助的。示例;视频
回到这个问题上,这个结构就像

lpSolveAPI (lp_solve的R接口)在添加适当的松弛变量后,将按照以下格式重写约束结构。前三列是用于松弛变量的。因此,get.basis()的返回(即-7,-2,-3 )是代表变量4、松弛变量2和3的第7、2、3列。

对于这类具有有界变量的LP,变量在下界或上界都可以是非基本变量。get.basis(lp, nonbasic=TRUE)的返回值是-1,-4,-5,-6。减号表示这些变量在它们的下界。它意味着松弛变量1= 0,变量4= 28.6,变量5= 0,变量6= 0。
因此,最优解为28.6(非基本),0(非基本),0(非基本),31.82(基本)
https://stackoverflow.com/questions/30252489
复制相似问题