我有基于 CPLEX 求解器(可行性泵 2.0)的 MIP 程序。
我的任务是让这个程序在 CBC 求解器上运行。
所以我尝试用相应的功能更改代码,但程序大小太大,无法修改每个 CPLEX 代码(源代码大小几乎 2MB)。
你知道有效的方法或有用的参考吗?
我有基于 CPLEX 求解器(可行性泵 2.0)的 MIP 程序。
我的任务是让这个程序在 CBC 求解器上运行。
所以我尝试用相应的功能更改代码,但程序大小太大,无法修改每个 CPLEX 代码(源代码大小几乎 2MB)。
你知道有效的方法或有用的参考吗?
事情可能比您目前想象的要复杂:我怀疑每个 CPLEX 函数是否存在等效的 CBC 函数。即使一个函数具有相同的签名,它也可能具有稍微不同的语义。所以无论如何都必须一一检查。某些 CPLEX 功能甚至可能在 CBC 中没有等效功能,并且使用的某些功能可能不受 CBC 支持。
更好的方法是(如建议的一些评论)调整代码,以便它使用一些抽象和通用接口,您可以通过 CBC 和 CPLEX 实现这些接口。然后,您可以随时更换底层求解器。
如果您不想移动到抽象接口,最好的选择可能是
这里的困难步骤是 2。这在很大程度上取决于您的代码使用哪些 CPLEX 函数以及将它们映射到 CBC 函数的难易程度。