【问题标题】:Cplex Decision Expression value limitCplex 决策表达式值限制
【发布时间】:2020-08-13 00:07:05
【问题描述】:

我在 cplex opl 中有一个决策表达式,

dexpr 浮点数 A = x[i]-b[i];

我希望 A 取 0 或更大的值,这样做的语法是什么?

【问题讨论】:

    标签: optimization cplex opl


    【解决方案1】:

    maxl() 函数用于此目的:

    range I = 1..2;
    dvar float+ x[I];
    dvar float+ b[I];
    dexpr float A[i in I] = maxl(x[i] - b[i], 0);
    

    但是,根据您使用A 的方式,使用决策变量而不是决策表达式可能会更好。假设您的模型被制定为A 将始终采用尽可能小的值(例如,因为非负值在目标函数中受到惩罚),那么您可以使用dvar float+ A[I] 并添加约束forall(i in I) A[i] >= x[i] - b[i]。这将隐式确保 A[i] 始终是 0 和差之间的最大值。在某些情况下,这可以导致更有效的求解器行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-03
      • 2015-02-04
      • 2021-10-17
      • 1970-01-01
      相关资源
      最近更新 更多