使用 gdpopt pyomo 时指定 mip_solver 对应的可执行文件

Specify the mip_solver corresponding executable while using gdpopt pyomo

有人可以帮我解决以下问题吗?在 pyomo

中使用 gdpopt 时,我需要指定可执行求解器的路径

通常对于 glpk 求解器,可以在 SolverFactory 中将此路径指定为:

executable_path = '/home/user/lib/glpsol'

opt = SolverFactory('glpk',executable=executable_path)

但是如果我想使用 gdpopt 并以与以下示例相同的方式指定 glpk 的可执行文件,这将不起作用:

opt = SolverFactory('gdpopt',executable=executable_path)

我试过如下使用 mip_solver_args 参数,但没有成功。

opt = SolverFactory('gdpopt')

results = opt.solve(model, mip_solver='glpk', mip_solver_args={'executable':executable_path})

最后,我用 cbc 求解器尝试了同样的方法,但仍然没有成功

GDPopt 的当前求解器参数不允许在 SolverFactory 调用中指定可执行参数。我现在没有足够的带宽来完成新求解器选项的 PR 过程,但开源的好处是您可以修改 Pyomo 的安装以包含所需的 executable= 参数。

您将需要搜索在 mip_solve.py 文件中进行的 SolverFactory 次调用:https://github.com/Pyomo/pyomo/blob/main/pyomo/contrib/gdpopt/mip_solve.py。该文件应负责 GDPopt 进行的任何 MIP 子求解器调用。从那里,您可以根据需要更改文件中的 SolverFactory 调用,以分别包含 glpkcbcexecutable=executable_path