【问题标题】:getValue() cplex C++getValue() cplex C++
【发布时间】:2020-08-01 07:33:09
【问题描述】:

实际上,我是在 C++ 上使用 cplex 的初学者。 在我通过 getValue() 作为函数参数的向量求解 MIP 后,我尝试存储变量 (IloIntVarArray) 的值,但它不起作用。有什么建议吗?

【问题讨论】:

  • 怎么不工作?求解方法和 getCplexStatus 的返回值是多少?请向我们展示一小段可重现的代码。
  • 就像 Ryan 说的,我们需要知道更多关于你到底在做什么的细节。如果你说“向量”,你的意思是std::vector?那是行不通的。 getValue() 函数将 single 变量作为参数。为了一次查询多个变量,使用函数getValues()。这将IloNumVarArrayIloIntVarArray(不是std::vector)作为参数。另请参阅 CPLEX 附带的许多示例。它们说明了如何在调用solve() 后从IloCplex 实例中查询值。另请注意,仅当 solve() 返回 true 时才有解决方案
  • 我已经解决了这些问题。谢谢你的回答!
  • @holdxx,您能否为您自己的问题添加答案并说明问题所在或关闭问题?否则问题将始终显示为未回答。

标签: c++ cplex getvalue


【解决方案1】:

这是一个例子

IloNumArray values(getEnv());
getValues(values, _x);
for (int i = 0; i < _graph->GetArcCount(); i++)
{
    ClassOfArcs* arc = _graph->GetArc(i);
    arc->value = (double)values[arc->index];
}
values.clear();

其中 x 是一个 IloNumVarArray,包含变量 x_ij 的值(从客户 i 到 j)。在示例中,我希望将 x 的值存储在 std::vector _x 中。

当您完成传递模型中的所有其他变量时,不要忘记执行 value.end() 以避免内存泄漏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多