c++ - 如何使用 IloCplex::readSolution() 并在查询 cplex 类实例后获取 var。值(value)观和其他值(value)观?

标签 c++ cplex

我需要读取之前存储在 .sol 文件中的现有解决方案,然后在调用“解决”之后使用 IloCplex 的实例。 我需要写这样的东西:

iloNumVar var(0.0,1.0,ILOBOOL,"var_name");
...
cplex.readSolution("incumbent.sol");
cplex.getObjValue();
cplex.getValue(var);

作为 cplex.get* 的任何调用都会抛出异常。 我可以做些什么来实现我的目标?

提前致谢。

最佳答案

“CPLEX 读取 SOL 文件作为高级开始。SOL 文件包含基础状态(如果可用)和解值。基础状态可用于使用单纯形优化器的高级开始;解值可用于交叉“从障碍解决方案或作为 MIP 从混合整数解决方案开始。混合整数解决方案可能来自传统的 MIP 优化或来自解决方案池的成员。”从技术上讲,您需要在调用 cplex.get* 方法之前使用 cplex.solve() 求解 LP。否则,如果读取解决方案并调用 cplex.get* 方法而不调用 cplex.solve(),Cplex 将抛出 CPLEX 错误 1217:不存在解决方案。

所以 IloCplex::readSolutionIloCplex::writeSolution 方法的最佳用途是解决模型,编写解决方案,然后根据需要修改模型,读取解决方案,然后调用 cplex.solve() 然后调用 cplex.get*

此外,我建议阅读最佳值如下:

IloNumVarArray vars(env); // plus your bounds and  type
...
IloNumArray vals(env);
cplex.getValues(vals, vars);

关于c++ - 如何使用 IloCplex::readSolution() 并在查询 cplex 类实例后获取 var。值(value)观和其他值(value)观?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35091923/

相关文章:

c++ - QMap 返回作为引用有问题吗?

c++ - 更改现有 cv::Mat 尺寸,同时保留适合新尺寸的内容

cplex - Docplex 与 CPLEX Python API

java - 在哪里可以找到 CPLEX 库(不是 AIMMS 的 GUI)?

java - 如何使用 JAVA Concert 在 CPLEX 中结合时间限制和间隙终止标准

c++ - 链表中修改的数据不会反射(reflect)在内存中

c++:STL哈希编译问题

c++ - 尝试在MSYS2/MinGW-w64上编译时,许多内部标准库会编译错误

java - Benders.Strategy 使用 Java 和 opl

c - 如何在我的代码中使用 CPLEX 时间限制?