我有这样的优化问题,我试图根据列X中的唯一值来最大化列z,但也在约束条件下,每个X所选的唯一值总和最大的列Y小于(在此例如)23.使用LpSolve在R中设置线性规划优化?
例如,我有这样的样本数据:
d=data.frame(x=c(1,1,1,2,2,2,3,3,3),y=c(9,7,5,9,7,5,9,7,5),z=c(25,20,5,20,10,5,10,5,3))
,看起来像这样:
X Y Z
1 1 9 25
2 1 7 20
3 1 5 5
4 2 9 20
5 2 7 10
6 2 5 5
7 3 9 10
8 3 7 5
9 3 5 5
结果应该是这样的:
X Y Z
1 1 9 25
4 2 9 20
9 3 5 5
如何在lpSolve :: lp函数中设置此问题?
你试过了什么?你有没有想过LP与IP? – sascha
所以基本上我已经在excel中使用解算器完成了这个工作,并且希望将它移到R.我不太关注LP或IP(他们的意思)。我发现堆栈中的其他示例展示了如何移动这个过程,但没有包括如何使用picks约束的总和。 – CooperBuckeye05
您(可能)无法将其解决为纯粹的线性程序,您将需要混合整数编程(由lpsolve支持)。阅读您要使用的包装文档,查看它需要的标准格式,并自行尝试一些内容,因为目前这种格式非常广泛。 * picking *的性质将被表示为二元变量:如果选择x0,x0 = 1。只挑选三个候选人中的一个:x0 + x1 + x2 <= 1 (and > = 1如果您需要的话)。 – sascha