2017-02-01 24 views
0

の原因となる制約を印刷し、私は次のエラーを持っている:Pyomo:私はpyomoにipopt使用していますエラー

Error evaluating constraint 15: can't compute -1.65898/0. 
halt_on_ampl_error=yes 

は、どのように私はpyomoにエラーが発生した制約の名前を印刷することができますか? AMPLコマンドのよう

何か:print _sconname[15];

おかげで、M.

答えて

0

私は特にしたい制約を識別するためのマッピングを行う方法を知らないが、別のオプションは、あなたのモデルを通過することで、ゼロから縛られていない変数で割る制約を再定式化します。また、すべての変数に対して適切な初期化を提供するか、少なくともゼロ以外の値に初期化する必要があります。

1

解決プロセス中に式を評価するとき(つまりPyomoエラーではない)、このエラーはASLによってスローされています。

エラーをより分かりやすくするためには、Pyomoにソルバに「記号」ラベルを渡すよう依頼するのが賢明です。これは、効率上の理由から、デフォルトでは無効になっています。人が読めるラベルを生成するのは、単純に制約や変数に番号を付けるだけでなく、ソルバーに送信される生のモデルとほとんど対話するよりも高価です。あなたは、あなたがsolve()呼び出しでsymbolic_solver_labels=Trueを設定するスクリプトたい場合

pyomo solve --solver ipopt --stream-solver --symbolic-solver-labels #... 
  • :あなたはpyomoコマンドを使用している場合

    • は、その後、あなたは--symbolic-solver-labelsオプションを渡すことができます

      SolverFactory('ipopt').solve(model, tee=True, symbolic_solver_labels=True) 
      
  • 関連する問題