【问题标题】:Pyomo's SolverFactory cannot create Ipopt (OSX) - possibly related to COIN-ORPyomo 的 SolverFactory 无法创建 Ipopt (OSX) - 可能与 COIN-OR 有关
【发布时间】:2015-01-28 22:21:36
【问题描述】:

我正在尝试使用 Pyomo 在 OSX 上找到 Python 模型的最佳值。我从https://github.com/shoibalc/recem 获得了脚本,并尽可能按照说明安装了 Pyomo 和 COIN-OR,更改了一些过时或似乎在 OSX 上不起作用的东西。

导致问题的代码如下。

import pyomo
from pyomo.opt.base import *
from pyomo.opt.parallel import SolverManagerFactory
from DICE2007 import createDICE2007
from DICEutils import DICE_results_writer

global start_time
start_time = time.time()

dice = createDICE2007()
dice.doc = 'OPTIMAL SCENARIO'
opt = SolverFactory('ipopt',solver_io='nl') 
tee = False
options =   """
        halt_on_ampl_error=yes"""
solver_manager = SolverManagerFactory('serial')

print '[%8.2f] create model %s OPTIMAL SCENARIO\n' %(time.time()-start_time,dice.name)

instance = dice.create()
print '[%8.2f] created instance\n' %(time.time()-start_time)

results = solver_manager.solve(instance, opt=opt, tee=tee, options=options, suffixes=['dual','rc'])

这会在最后一行(“结果”)崩溃,并显示以下错误消息:

SolverFactory 无法创建求解器“ipopt” 并返回一个 UnknownSolver 对象。这个错误是在这一点上提出的 UnknownSolver 对象被使用的地方,就好像它是有效的一样(通过调用 方法“解决”)。

原始求解器是使用以下参数创建的: 求解器_io:NL 类型:ipopt _args: () 选项: {} _options_str: []

我对这一切都很陌生,但我认为 Pyomo 可能无法访问它需要的 ipopt 文件,我认为该文件位于我下载的 COIN-OR 二进制文件中。我尝试将看似相关的文件添加到我的 PYTHONPATH 中,并将它们导入到脚本中,但这没有帮助。有什么想法我应该尝试下一步来完成这项工作,或者将脚本修改为可以工作的东西吗?

【问题讨论】:

    标签: python macos optimization ipopt


    【解决方案1】:

    我的一位同事遇到了同样的问题,他设法通过生成带有 IPOPT AMPL 可执行文件路径的求解器对象来解决它:

    opt = SolverFactory('/route/to/ipopt',solver_io='nl')
    

    【讨论】:

      猜你喜欢
      • 2020-08-01
      • 2016-10-18
      • 2022-09-23
      • 2018-01-30
      • 1970-01-01
      • 2017-02-17
      • 2020-04-09
      • 2019-07-04
      • 1970-01-01
      相关资源
      最近更新 更多