我用 lp solve 来求解一个线性规划方程,这个解给出了一个向量
> lp("max", obj, con, ineqs, rhs, all.int=TRUE,)$solution
[1] 5 0 13 11 4 0 1 11 0
这很好,但我希望这个向量中的每个条目都是 1-9 之间的整数,并且每个整数只能使用一次。例如,就像矢量在下面的样子。
[1] 3 4 8 9 2 5 1 6 7
有什么办法可以做到这一点?先感谢您!
编辑
这是我用于 lp 函数的代码
obj<-c(1,1,1,1,1,1,1,1,1)
con<-matrix(c(1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,1,1,0,1,1),nrow=5,byrow=TRUE)
ineqs<-c("=", "=", "=", "=", "=")
rhs<-c(45,20,17,27,15)
基本上它的作用是解决 3x3 网格的优化问题:
x1 x2 x3
x4 x5 x6
x7 x8 x9
其中约束为x1+x2+x4+x5=20、x2+x3+x5+x6=17、x4+x5+x7+x8=27、x5+x6+x8+x9=15,每个x必须是整数介于 1 和 9 之间,并且每个 x 必须是唯一的。