问题描述
我正在研究MILP模型(在DoCplex中),求解器有时会使用Benders方法更快地到达解决方案,有时会使用Branch&Bound。是否有一种简单的方法可以并行运行两个求解方法,而无需在同一模型上更改变量名称(克隆模型)。并使用求解之一的输出。
解决方法
不能同时使用两种算法来求解同一模型。但是,应该容易地两次创建相同的模型,然后在两个不同的线程或进程中同时求解它。为此,您将必须使用threading
或multiprocessing
Python模块。
在类似Unix的操作系统(例如Linux或MacOS)上,一种非常简单方便的方法是使用os.fork()为每个解决方案创建一个新过程,然后从初始过程进行控制。 fork()
隐式地克隆了模型,因此可以节省一些编程时间。