問題タブ [pyomo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - ピョーモ - GLPK - エラー
Pyomo (v 4.4.1) と GLPK for Windows (v 4.55) をインストールしました。glpsol.exe
のディレクトリをPATH 変数に追加したglpsol --help
ので、コマンド プロンプトの任意のディレクトリからコマンドを正常に使用できます。Pyomo のブログによると、これは Pyomo に関する限り、GLPK のインストールが成功したことを示しているはずです。ただし、次の例を試してみると:
エラーが発生します:
glpsol.exe
ファイルは にあり、C:\glpk
PATH 変数に追加されています。
私はこれを進めることができないようです。どんな助けも大歓迎です!
python - Python スクリプトから PySP プログレッシブ ヘッジングを呼び出す
Pyomo ドキュメント ( https://software.sandia.gov/downloads/pub/pyomo/PyomoOnlineDocs.html#_pyomo_overview ) の 18.1 章では、Pyomoで Python スクリプトを使用する方法が説明されています。しかし、PySP プログレッシブ ヘッジを同じように使用できるかどうかはよくわかりませんでした。Python スクリプト内でモデルを定義し、ソルバーとして Gurobi を使用した PySP プログレッシブ ヘッジを使用して解決したいと考えています。私の質問は、Python スクリプトから PySP PH を呼び出すにはどうすればよいですか? 私が見つけた唯一の方法は、コマンドラインからパラメーターを指定して runph を呼び出すことです。
どうもありがとうございました。
python - pyomo.environ モジュールの下に 2 次元集合オブジェクトを作成する方法
pyomo.environ を使って LP モデルを作ってみました。しかし、セットを作るのに苦労しています。私の問題では、2 つのセットを作成する必要があります。1 つのセットは一連のノードからのもので、もう 1 つはノード間の複数のアークからのものです。Networkx を使用してネットワークを作成し、ノードとアークを保存します。ノードデータは (経度、緯度) のようにタプル形式で保存されます。アークは (nodeA, nodeB) として保存されます。ここで、nodeA と nodeB は両方ともタプルの座標です。
したがって、ノードは次のようなものです。
(-97.97516252657978、30.342243012086083)
そして、弧は次のようなものです:
((-97.97516252657978, 30.342243012086083), (-97.976196300350608, 30.34247219922803))
セットを作成しようとした方法は次のとおりです。
しかし、arc_set でエラー メッセージが表示され続けました。
どういうわけか私の arc_set が 2 つではなく 1 つのタプルになったのは奇妙だと思いました。次に、ノードとアークを文字列に変換しようとしましたが、それでもエラーが発生しました。誰かヒントを教えてくれませんか?または、このバグをどのように削除しますか? ありがとう!
python - Python Pyomo: Pyomo の変数ドメイン エラー
決定変数が特定のセットに制限されている整数計画問題を解決したいと考えています。
たとえば、決定変数 xi は [2,5,7,10] で選択する必要があります。
テストのために、次のように Pyomo を使用して Python コードを作成しました。
これらのコードを実行すると、次のようなエラー メッセージが表示されました。
ここに私の質問があります:
- このエラーの理由は何ですか?
- それに対処する方法は?
- この種の問題を処理できる他の最適化ツールはありますか?
助けてくれてありがとう!
python - インターフェイス IPyomoTask は既に定義されています
私は Pyomo を使用しています。前回の最適化の結果の一部を次に使用する一連の最適化を行いたいと考えています。
AgOpt.py
問題は、(Spyder を使用して) コードを 1 回解決すると、2 回目にこのエラーが発生することです。
「インターフェース IPyomoTask は既に定義されています」
Spyder を終了し、再度入力する必要があります。
なにか提案を?
Python とアナコンダのバージョン:
Python 3.5.2 |アナコンダ 4.2.0 (64 ビット)| (デフォルト、2016 年 7 月 5 日 11:41:13) [MSC v.1900 64 ビット (AMD64)]
performance - 非線形ソルバーでは、ソルバー時間と NLP 関数の評価に影響を与えるものは何ですか?
非線形最適化のパフォーマンスが、ソルバー エンジンのインターフェースの特定の方法によってどのように影響されるかを理解するのに、いくつかの困難があります。
最初のバージョンでは GAMS で書かれた最適化モデルがあります。IPOPT (一般的な FOOS 非線形ソルバー エンジン) は、最適化ごとに IPOPT (関数評価なし) で 1.4 CPU 秒、関数評価で 0.2 CPU 秒の実行時間を返していました。
モデルを C++ に変換し (モデルの最適化されていないコンポーネントをより適切に説明するため)、その C++ API を介して IPOPT をインターフェースした (AD 用の ADOL-C および ColPack を使用) と、IPOPT で 0.7 秒、9.4 秒の実行時間が得られました。数秒の関数評価 (IPOPT の改善は、ソースごとに IPOPT をコンパイルすることで、IPOPT の GAMS バージョンでは利用できないより優れた線形ソルバーを使用できたことが原因である可能性があります)。
そのため、C++ を使用すると、明らかに最適化が不十分なコードを使用すると、GAMS よりも 50 倍遅い結果が得られましたが、ソルバー時間の短縮によって部分的に補償されました。
現在、モデルを他の言語 (Pyomo を使用した Python、または JuMP を使用した Julia) に変換する可能性を評価しています。
しかし、最初に、各ステップでソルバーによって行われる関数評価が、実装されている特定の言語にどのように依存するかを理解したいと思います。
C++ では、最適化モデルを作成する関数が反復ごとに直接実行 (評価) されることは明らかであるため、それらの実装方法が重要です (特に、少なくとも私たちの実装では、勾配とヘシアンは毎回再計算されます)。 .
PyomoとJuMPはどうですか?Python と Julia で評価される各反復か、それとも Pyomo と JuMP が代わりに (私が推測する) C で最初にモデルをレンダリングし、勾配とヘッセ行列を一度だけ計算 (評価しない) し、それからこの「C バージョン」です。毎回評価されますか?特にpythonの場合、明らかに大きな違いがあります..
pyomo - Pyomo: if文による制約
私は現在、この問題を解決しようとしています。私はこの会社の利益を最大化する必要があります。
それは私が現在持っているコードです:
これは、2000 個の製品を超えない限り、最初の勾配のみを使用する制約のために記述しようとしたコードです。
誰かがヒントを持っていれば、それをどのように進めることができるかは素晴らしいことです.
前もってありがとう、パトリック
for-loop - Python Pyomoで「forループ」を使って反復制約を作る方法
for
Python Pyomo でループを使用して複数の制約を作成するのに苦労しています。
うまく機能するはずの私のコードの概念は以下のとおりです (これは機能していません)。
for
この 4 つの制約をloop 、m.minUsePreA
、m.minUsePreB
、m.minUsePreC
、を使用して作成したいと思いm.minUsePreD
ます。