【发布时间】:2017-04-22 11:51:34
【问题描述】:
我正在尝试使用lpsolve 包解决R 中的线性规划问题。
问题来了:
这里是 R 中的可重现示例的示例:
library("lpSolve")
a <- matrix(c(1,2,5,
1/2,1,3,
1/5,1/3,1),nrow=3,byrow=T)
#
f.obj <- c(1,0,0,0)
f.con <- matrix (c(
1,1,-a[1,2],0, #Contraint 1 for a12
1,-1,a[1,2],0, #Contraint 2 for a12
1,1,0,-a[1,3], #Contraint 1 for a13
1,-1,0,a[1,3], #Contraint 2 for a13
1,0,1,-a[2,3], #Contraint 1 for a23
1,0,-1,a[2,3], #Contraint 2 for a23
0,1,1,1, #Contraint 3
0,1,0,0, #Constraint 4
0,0,1,0, #Constraint 4
0,0,0,1 #Constraint 4
), nrow=10, byrow=TRUE)
f.dir <- c(rep("<=",6), "=",rep(">",3))
f.rhs <- c(rep(1,6),1,rep(0,3))
g <- lp ("max", f.obj, f.con, f.dir, f.rhs)
g$solution
如果我有一个7 X 7 或n x n 矩阵a,我可以手动解决这个小问题。我将如何指定约束 1 和 2,尤其是我正在努力定义与 a[i,j] 相关的约束?
a = matrix(
c(1,4,9,6,6,5,5,
1/4,1,7,5,5,3,4,
1/9,1/7,1,1/5,1/5,1/7,1/5,
1/6,1/5,5,1,1,1/3,1/3,
1/6,1/5,5,1,1,1/3,1/3,
1/5,1/3,7,3,3,1,2,
1/5,1/4,5,3,3,1/2,1
),nrow = 7,byrow =T)
上述矩阵的解决方案是0.986 0.501 0.160 0.043 0.060 0.060 0.1 0.075 任何帮助将不胜感激。
【问题讨论】:
-
嗨,我认为你在 f.con 定义中的最后一行不代表约束 4:0,1,1,1 对应于 w_1 + w_2 + w_3。相反,它应该是 0,1,0,0, [w_1>0] \\ 0,0,1,0 [w_2>0] \\ 0,0,0,1 [w_3 >0]
-
嗨@Cettt 是的,我的条件 4 错了,感谢您指出。
标签: r loops matrix linear-programming lpsolve