【问题标题】:Constraint in RGLPK optimisation that depends on the result of the optimizationRGLPK 优化中的约束取决于优化的结果
【发布时间】:2018-08-06 17:35:20
【问题描述】:

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

假设我的优化器必须从 100 个元素中选择 10 个元素。每个元素都有一个分数,包含在向量 score 中,长度为 100。每个元素都有一个系数,包含在向量 coefficient 中,长度为 100。
我的约束是:(score * optim) %*% (coefficient * optim)/sum(coefficient * optim)>50,其中 optim 是一个向量,如果元素被选中则为 1,否则为 0。

知道如何编写这个约束,因为 sum(coefficient * optim) 取决于优化的结果吗?

【问题讨论】:

  • 这似乎更适合CrossValidated,因为它是关于数学而不是编程。

标签: r optimization constraints glpk


【解决方案1】:

您可以使用您写下的内容。嗯,差不多。我觉得

(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] 中是完全线性的。

【讨论】:

    猜你喜欢
    • 2020-11-06
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 2011-07-23
    • 2017-11-13
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多