RGLPK优化中的约束取决于优化结果

时间:2018-08-06 17:35:20

标签: r optimization constraints glpk

我想在线性优化中添加一个可能不是真正线性的约束。

假设我的优化程序必须在100个元素中选择10个元素。每个元素的得分都包含在向量score中,该得分的长度为100。每个元素都有一个系数,包含在向量{{ 1}},长度为100。
我的约束是:coefficient,其中optim是一个矢量,如果选择了元素,则为1,否则为0。

有什么想法可以写这个约束,因为sum(coefficient * optim)取决于优化的结果?

1 个答案:

答案 0 :(得分:0)

您只可以使用您写下的内容。好吧,差不多。我认为

(score * optim) %*% (coefficient * optim)/sum(coefficient * optim)>50

表示

sum(i, score[i]*coefficient[i]*sqr(optim[i])) / sum(i,coefficient[i]*optim[i]) >= 50
sum(i, optim[i]) = 10   (select 10 best) 
optim[i] in {0,1}       (binary variables)

(我在这里使用一些伪数学符号)。可以改写为:

sum(i, score[i]*coefficient[i]*optim[i]) >= 50*sum(i,coefficient[i]*optim[i])
sum(i, optim[i]) = 10   (select 10 best) 
optim[i] in {0,1}       (binary variables) 

这在二进制变量optim[i]中是完全线性的。