如何从Coin-OR框架获取可行性泵的迭代和运行时

时间:2018-06-22 16:40:43

标签: pyomo mixed-integer-programming coin-or-cbc

我已经编写了一种算法,该算法可以找到混合整数凸优化问题的可行点。现在,我希望将其与MINLPlib库中测试平台上的Feasibility Pump for mixed-integer nonlinear programms进行比较。

我可以通过Pyomo从Coin OR项目访问BONMIN求解器,在该项目中也实现了可行性泵。 Here是此求解器的可能选项的列表。

我的问题是

  1. 以下选项是否正确测试(普通香草型)可行性泵?

    opt = SolverFactory('bonmin')
    opt.options['bonmin.algorithm'] = 'b-ifp' # Iterated Feasibility Pump as solver
    opt.options['bonmin.pump_for_minlp'] = 'yes' # Is this needed?
    opt.options['bonmin.solution_limit'] = '1' #For terminating after 1st feasible point
    

    如果没有,请注意如何正确执行操作的任何提示。

  2. 如何获取可行性泵的迭代次数(即泵送周期)?我可以在打印输出中看到迭代信息,但是如果存储在某个变量中,它将非常有帮助。

1 个答案:

答案 0 :(得分:1)

Pyomo通过ASL(AMPL求解器库)接口调用Bonmin。因此,任何适用于AMPL的选项都应与此处适当的选项相同。

对于迭代信息,有多种方法可以捕获打印输出并将其解析以检索所需的信息。最直接的方法可能是将输出传递到文件并作为小型后处理脚本/功能的一部分读取它。