1

ipopt を使用して pyomo モデルを最適化すると、次のメッセージが表示されます。

復元フェーズは、元の問題のフィルターに受け入れられない実行可能ポイントに収束しました。復旧フェーズ中の復旧フェーズに失敗しました。

これは、ipopt が実行可能点を見つけたが、フィルターに受け入れられなかったため、ipopt は問題の局所的な最適点を見つけようとし続けなかったことを意味します。これにより、pyomo に「エラー」のステータスが返され、結果を読み込めません。インスタンスで pprint を使用しようとすると、開始点ですべての変数が得られます。iopt が復元に失敗したときの変数の値を調べたいと思います。これを行う方法はありますか?

これが私が使用しているコードです

try:
    results = opt.solve(instance, tee=tee)
    instance.solutions.load_from(results)
except Exception:
    print('MA.Solve encountered an error:', sys.exc_info()[0])
    traceback.print_exc()

    with open('results.txt', 'w') as f:
        instance.pprint(ostream=f)

そして、ここに出力があります

MA.Solve encountered an error: <class 'ValueError'>
Traceback (most recent call last):
  File "----", line 393, in ----
    results = opt.solve(self.instance, tee=tee)
  File "/usr/lib64/python3.6/site-packages/pyomo/opt/base/solvers.py", line 657, in solve
    default_variable_value=self._default_variable_value)
  File "/usr/lib64/python3.6/site-packages/pyomo/core/base/PyomoModel.py", line 249, in load_from
    % str(results.solver.status))
ValueError: Cannot load a SolverResults object with bad status: error
4

1 に答える 1