【问题标题】:How to add term in objective function without involving decision variable如何在不涉及决策变量的情况下在目标函数中添加项
【发布时间】:2019-07-10 00:27:44
【问题描述】:

我正在尝试使用 Java 解决 cplex 中的模型。而且我需要在我的目标函数中添加一个没有决策变量的术语。但显然 cplex 需要术语中的决策变量。我怎么能添加这个词?

错误信息:

IloLinearNumExpr 类型中的方法 addTerm(double, IloNumVar) 不适用于参数 (双)

【问题讨论】:

  • 您能否澄清您的问题,因为现在它似乎是多余的 max{f(x) + Const} = max{f(x)} + Const 并且从技术上讲您需要将该术语添加到最佳值?
  • 只是不要在目标中添加常数项。这是一个常数。它不会更改任何变量的解值,并且添加(大)正常数使 MIP 间隙看起来比实际值更小,并且可能导致 CPLEX 接受在 mipgap 中更差的解容忍度。

标签: java cplex


【解决方案1】:

IloLinearNumExpr 类有一个函数setConstant() 来设置表达式的常数项。

但请注意其他人的 cmets:目标函数中的常数通常不是一个好主意(它会影响相对间隙停止标准)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多