首页 > 解决方案 > 根据原始变量存储可行的解决方案

问题描述

我想从捕获SCIP_EVENTTYPE_BESTSOLFOUND事件的事件处理程序中存储一个可行的解决方案,然后我想将此解决方案作为启发式解决方案提供给另一个正在优化相同问题但具有不同参数设置的 SCIP 实例(这可能在随后的优化或并行)。
我的问题是我使用的解决方案SCIPgetBestSol()将根据转换后的问题,这可能与第二个 SCIP 实例中的转换后的问题不同。

关闭预解析(使用SCIPsetPresolving())是否足以确保 SCIP 始终引用回调函数中的原始变量?你有什么特别的方法可以推荐这样做吗?

谢谢!

标签: scip

解决方案


确保您的事件处理程序可以访问原始变量数组(SCIPget(N)OrigVars()成功了)。您始终可以使用 查询原始变量的解值,甚至从转换后的解SCIPgetSolVal(),并将这些值存储在通过 创建的解中SCIPcreateOrigSol()

为了将此解决方案提供给不同的 SCIP 实例,您必须正确获取主 SCIP 实例和辅助 SCIP 实例的变量之间的映射。为辅助 SCIP 实例创建一个新的解决方案,并将变量的解决方案值设置为其在主 SCIP 中的(前)图像变量的值。


推荐阅读