問題タブ [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.

0 投票する
1 に答える
339 参照

python - 時系列に欠損値がある ODE システムでの Pyomo のパラメーター推定

次の形式の特定の一連の微生物のダイナミクスを説明するための 7 つの方程式の ODE システムがあります。

が関与するさまざまな化学種および微生物種 (化合物のサブインデックスであっても) である場合、 は収率係数であり、は疑似反応です。

基本的にすべての降伏係数と速度定数 (合計 15) であるすべての未知のパラメーターの推定に Pyomo を使用しています。

次のコードは、各動的変数の完全な実験的時系列で使用すると完全に機能します。

ただし、動的変数の一部の 1 つまたは最大 2 つの時系列の終わりに値が欠落している別の実験データで同じ推定ルーチンを実行しようとしています。

つまり、これらの完全な実験データは (.dat ファイル内で) 次のようになります。

私の不完全なデータ セットの 1 つで、すべての時系列が完全になる可能性がありますが、次のようなものがあります。

私は、異なる時系列に関して特定の変数の導関数を取得するように Pyomo に指定できるという知識を持っています。しかし、いざやってみるとうまくいかなかったのは、これらが結合ODEだからだと思います。基本的に私の質問は、Pyomo でこの問題を克服する方法があるかどうかです。

前もって感謝します。

0 投票する
2 に答える
1503 参照

python - pyomo で「コンポーネント Pd[1] の取得中にエラーが発生しました: コンポーネントが構築されていません」というエラーを回避するにはどうすればよいですか。

私はpyomoが初めてです。単純な最大化問題を実行しようとしていますが、次のエラー メッセージが表示され続けます: Error retrieving component Pd[1]: The component has not been constructed.. 最後の 5 つの制約のみがこの問題を引き起こします。最初の 3 つの制約は正常に機能します。IPythonコンソールでこのコマンドを使用して実行しています!pyomo --solver-manager=neos --solver=cbc battpyomo.py battpyomo.dat

データ ファイルでは、セット T とパラメーター p のみを定義します。

セット T := 1 2 3 4 5 6 7 8 9;

パラメータ: p :=
1 51.12
2
48.79 3 39.56
4 36.27
5 36.16
6 34.90
7 33.33
8 21.16
9 24.42;

以下は、battbyomo.py のコードです。

0 投票する
1 に答える
2800 参照

python - セットと範囲セットを使用してpyomoでマルチレベルのインデックス作成を使用するには?

のモデルに複数レベルのインデックスがあり、次のpyomoように変数にインデックスを付ける必要があります。

しかし、これは何らかの理由で不可能のようです。次のようにマルチレベル インデックスを使用できます。

ただし、これは機能しません。

...例外をスローします:

最初のものは機能し、2 つ目は機能しないのはなぜですか?

0 投票する
1 に答える
66 参照

python - PySp-Pyomo エラー: 'dict' に属性 'f' がありません

私はプロモーションと PySP が初めてです。Vehicle Routing Problems の下にある確率的プログラミングのチュートリアルのソリューションを複製しようとしていますがhttps://projects.coin-or.org/Coopr/browser/pyomo.data/trunk/pyomo/data/pysp/vehicle_routing/3-7f?rev=9398&order=name 、PS3-7b を抜粋して、他のすべてのコードを、それぞれのフォルダーに複製してコマンドを実行すると、

次のエラーをスローします

'今数日間私を悩ませています。私が間違っていることについての助け。

ありがとう

0 投票する
1 に答える
275 参照

pyomo - NL / ASLソルバーインターフェースでPyomoを使用するときにcplexから.rcサフィックスを受け取る

NL / ASL インターフェイスで Pyomo を使用して、cplex ソルバーから変数の .rc または .urc サフィックスを取得したいと考えています。このインターフェースは通常、モデルのデフォルトの cplex インターフェースよりも高速です。ただし、これらのサフィックスを返すように NL インターフェイスを取得できないようです。デフォルトのオプションで cplex ソルバーを使用すると、rc サフィックスの値が得られます。ただし、solver_io='nl' を使用するか、ソルバーを 'cplexamp' に設定すると (これは同じことをすると思います)、rc 値が得られません。(デュアルは取得できますが、rc は取得できません。)

コード例を次に示します。

ドキュメントでは、サフィックスを介してコストを削減することが具体的に言及されており、AMPL では .rc サフィックスがこれの標準的な場所のようですが、Pyomo の NL インターフェースを介してこれを読むことはできません。誰かが私を正しい方向に向けることができますか?

0 投票する
1 に答える
394 参照

ipopt - Pyomo Ipopt が解決策を返さない

私のスクリプトは次のとおりです。

これは非常に単純な問題であり、プログラムは最適解を見つけたと述べていますが、解の数は 0 であり、解は表示されていません。

何か案は??

どうもありがとう。

0 投票する
1 に答える
151 参照

pyomo - AMPL 車の例の再定式化

例として、Ipopt ソース コード tarball に含まれるアンプル カーの問題を移行しようとしています。終了条件 (最終反復でゼロ速度の場所に到達) とコスト関数 (最終時間を最小化) に問題があります。

誰かが次のモデルを修正するのを手伝ってくれますか?

0 投票する
1 に答える
219 参照

pyomo - Pyomo: 制約を追加して「car ampl example」を拡張する

Pyomo リポジトリで「ampl car example」の素晴らしい実装を見た後、新しい機能と制約で問題を拡張し続けたいと思っていますが、開発中に次の問題を発見しました。誰かがそれらを修正できますか?

1) 新しい制約「電気自動車」が追加されました: 現在、加速度は一定の速度になるまで順守することによって制限され、一定の電力モデルが使用されます。私が思うように、この制約を実装することはできません。でコメントされていますが、ピョーモは制約が変数に関連していると文句を言っています。(現在、Umax は車速に依存します)。

2) 新しいコンフォート アクセラレーションとジャークの制約が追加されました。それらは正しく機能しているように見えますが、ピョーモの第一人者がそれらを監督し、それらが本当に正しい方法で実装されているかどうかを教えてくれればいいと思います.

3) 冗長性を減らすために、最後のものについて。一意の制約でaccelerationLとaccelerationUを組み合わせる方法はありますか? jerkL と jerkU も同様です。

4) 最後の特徴は、2 段階に分かれた速度制限制約です。繰り返しますが、私はそれを機能させることができないので、コードでコメントされています。誰かがそれを修正することを敢えてしますか?

事前にどうもありがとう、パブロ

0 投票する
1 に答える
877 参照

mathematical-optimization - ILP ソルバーの下限の提案

私が試したソルバー (CPLEX、CBC) で解決するのに非常に時間がかかる整数線形計画法の問題があります。彼らはそれを完全に証明するのに永遠にかかります.

最小化問題の客観的な値の自明な下限を計算するのは簡単ですが、CPLEX の出力 (Best Bound 列) を見ると、長い間、その下限に近づいていないことがわかります。すぐに本当に良い解を見つけますが、最適な解がもっと優れている可能性があると誤って考えます。

これらのソルバーがどのように機能するかはよくわからないことを認めざるを得ませんが、信じられないほど楽観的なソリューションを探して、途方もなく弱い下限を改善しようとして時間を無駄にしているようです。だから私の質問は:

  1. ソルバーに適切な目的の下限を伝えることで、より速く実行できるでしょうか?

  2. もしそうなら、どのソルバーが追加入力として提供された既知の下限を受け入れることができますか?

例として、実行例からの CPLEX の出力の最初の数行を貼り付けます (目標のさらなる改善と最良の境界の非常に遅い改善なしで、はるかに長く続きます)。

ソルバーに、目的が 10 未満の解を探す必要がないように (より単純な方法でそれを証明できるため)、特に負の目的値を使用しないように (私のモデルでは不可能なため) 教えてくれたらいいのにと思います。