根据原始变量存储可行的解决方案
Storing feasible solutions in terms of original variables
我想存储来自捕获 SCIP_EVENTTYPE_BESTSOLFOUND
事件的事件处理程序的可行解决方案,稍后我想将此解决方案作为启发式解决方案提供给另一个正在优化相同问题的 SCIP 实例,但是具有不同的参数设置(这可能在后续优化中或并行进行)。
我的问题是,我使用 SCIPgetBestSol()
得到的解决方案将是转换后的问题,这可能与第二个 SCIP 实例中的转换后问题不同。
关闭预求解(使用 SCIPsetPresolving()
)是否足以确保 SCIP 始终引用回调函数中的原始变量?
有什么特别推荐的方法吗?
谢谢!
确保您的事件处理程序可以访问原始变量数组(SCIPget(N)OrigVars()
可以做到这一点)。您始终可以使用 SCIPgetSolVal()
查询原始变量的解值, 甚至来自转换后的解 ,并将这些值存储在通过 SCIPcreateOrigSol()
.[=13 创建的解中=]
为了将此解决方案提供给不同的 SCIP 实例,您必须正确获取主要和次要 SCIP 实例的变量之间的映射。为辅助 SCIP 实例创建一个新的解决方案,并将变量的解决方案值设置为主 SCIP 中其(预)图像变量的值。
我想存储来自捕获 SCIP_EVENTTYPE_BESTSOLFOUND
事件的事件处理程序的可行解决方案,稍后我想将此解决方案作为启发式解决方案提供给另一个正在优化相同问题的 SCIP 实例,但是具有不同的参数设置(这可能在后续优化中或并行进行)。
我的问题是,我使用 SCIPgetBestSol()
得到的解决方案将是转换后的问题,这可能与第二个 SCIP 实例中的转换后问题不同。
关闭预求解(使用 SCIPsetPresolving()
)是否足以确保 SCIP 始终引用回调函数中的原始变量?
有什么特别推荐的方法吗?
谢谢!
确保您的事件处理程序可以访问原始变量数组(SCIPget(N)OrigVars()
可以做到这一点)。您始终可以使用 SCIPgetSolVal()
查询原始变量的解值, 甚至来自转换后的解 ,并将这些值存储在通过 SCIPcreateOrigSol()
.[=13 创建的解中=]
为了将此解决方案提供给不同的 SCIP 实例,您必须正确获取主要和次要 SCIP 实例的变量之间的映射。为辅助 SCIP 实例创建一个新的解决方案,并将变量的解决方案值设置为主 SCIP 中其(预)图像变量的值。