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'])
これは最後の ("results") 行でクラッシュし、次のエラー メッセージが表示されます。
SolverFactory はソルバー「ipopt」を作成できず、UnknownSolver オブジェクトを返しました。このエラーは、UnknownSolver オブジェクトが有効であるかのように (メソッド「solve」を呼び出して) 使用された時点で発生します。
元のソルバーは次のパラメータで作成されました: solver_io: nl type: ipopt _args: () options: {} _options_str: []
私はこれらすべてに非常に慣れていませんが、Pyomoが必要なipoptファイルにアクセスできない可能性があると考えました。これは、ダウンロードしたCOIN-ORバイナリにあると思います。関連すると思われるファイルを PYTHONPATH に追加し、それらをスクリプトにインポートしようとしましたが、役に立ちませんでした。これを機能させるために、またはスクリプトを機能するものに修正するために、次に試してみるべきアイデアはありますか?