問題タブ [ampl]

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 に答える
729 参照

optimization - AMPL で推定された不可能な上限

いくつかの時間的制約といくつかの「これらのルートを満たさなければならない」制約を受けるシステム内のフローの量を最大化したい最適化を行うつもりです。最初の時間制約は、各車両が 24 時間の作業負荷 (分単位) を超えてはならないことを示しています。2 番目の時間制約は、サブツアー削除制約であり、車両が移動する時間がある前に「訪問」ノードでの開始時刻をアクティブにすることはできないなどとも述べています。回、いずれかの車両を使用 k. 最後の制約は、特定のノードからのすべての車両が 1 日の終わりに戻る必要があることを示しています。

Constraint3 と EndNode には、同じタイプの制約がさらにいくつかあります (たとえば、K1 と N2 の間の道路は 4 回の訪問を超えることができないなど、他の「事前定義された場所」を使用するだけです)。

私の問題は、Impossible deduced bounds x[K1,K1,1] has lower bound = 0 and upper bound = -76 というエラーが発生することです。これは、競合する制約に起因すると理解しています。ただし、私の質問は次のとおりです。ほとんどバイナリ変数のみを使用しているため、上記のコードが機能しない理由がわかりません。モデルで実際に行っていることを誤解していませんか?

i=j の場合にのみコンパイラが文句を言うことに気付いたので、.dat ファイルを調べたところ、i=j の場合の i と j の間の移動時間が非常に長いことに気付きました (そのため、プログラムはこれらのルートを選択しません)。ただし、その .dat ファイルを編集して TimeConstraints の制限を超えないようにすると、同じエラーが自動的に発生します (ただし、上限は -76 ではなく -1 になりました)。

誰かがこれに光を当ててくれることを願っています

前もって感謝します

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

ampl - AMPL:コマンド ファイルにデータとモデル コマンドを含めることができない場合に、NEOS サーバーを使用して変数出力を印刷する方法は?

制約と変数の数がたとえば AMPL の学生版の上限を超えるモデルを使用して最適化を行っているため、Web ページ [ http://www.neos-server.org/neos/ ] を見つけました。 solvers/milp:Gurobi/AMPL.html]で、私のタイプのモデルを解決できます。

しかし、コマンドファイル (.run ファイルと同じであると仮定します) を提供できるソルバーを使用する場合、NEOS サーバーのドキュメントは、入力ファイルのドキュメントを参照する必要があることを示しています。[ http://www.neos-guide.org/content/FAQ#ampl_variables]によれば、外観のコマンドファイルを使用して決定変数を出力できる AMPL 入力を使用しています。

問題は、NEOS が次のものを追加できないと主張していることです。

コマンドを .run ファイルに挿入すると、コンパイラは変数を見つけることができなくなります。

これを回避する方法を知っている人はいますか?前もって感謝します!

編集:他の誰かがこの問題を抱えている場合(私のインターネット検索に基づいて、多くの人が抱えていると思います)。最終的なリセットを削除してみてください。.run ファイルからのコマンド!

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

optimization - AMPL 短縮形

私はAMPLにあまり詳しくないので、次のような長い方法でいくつかの変数を定義しました

これらの制約をより短い方法で定義できれば素晴らしいと思います。そのような

しかし、私はそれを機能させることができませんでした。皆さんは何か考えがあるのだろうか。

前もって感謝します、

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

ampl - AMPL: 「n 時間ごと」に出発する車両のモデリング

ノードからの出発が「n時間ごと」にのみ発生することをモデル化したいと思います。これを 2 つの変数を使用してモデル化し始めました。starttime[i,j,k] は、車両 k が j を目的地として i を出発した時刻を示します。 i から j、それ以外は 0。モデルは次のとおりです。

問題の制約は「Constraint1」で、i は起点ノード、j は目的地ノード、k は車両です。インデックス g は、後の出発が任意の宛先ノードにできることを示すために使用されます。TimeInterval は、意図した間隔に対応します。つまり、i での TimeInterval が 2 時間の場合、i から出発する次の車両の開始時刻は、前の出発から 2 時間未満であってはなりません。オリジンは特定の製品(オリジンノードからのみ利用可能)に対応していますが、車両を特定のオリジンノードに限定しないでください。バックホールなどを利用するためにノード間をジャンプできる必要があります。つまり、実施したいこの制約は、車両自体ではなく起点ノードを制限するものではありません。

「移動時間を最大化する」という目的関数は奇妙に思えるかもしれませんが、目的関数は実際には時代遅れです。制約が満たされている場合、ソリューションは適切です。移動時間を最大化することは、単に変数 x を 1 に「強制」しようとすることです。

問題は次のとおりです。どうすればこれを行うことができますか? この定式化では、すべての x[i,j,k] 変数が答えから消えます (この制約がなければ、バイナリ変数 x の一部は 1 になり、他の変数は 0 になります。解は maxVisits 要件を満たします。制約があると、すべての x 変数は次のようになります。 0 とすべての starttimes も 0 になります. MINTO (ソルバー) は、問題が実行不可能であるとは述べていません. また、プログラムがすべての出発の比較であることを認識できるように、どのように車両を分離するのですか?時間次元を含めると、より多くの変数が得られます。

編集: 非線形ソルバーを使用して新しいモデルを試した後、奇妙な結果がいくつか見られました。具体的には、車両が 1 日に稼働できる時間の上限として 1440 (分) という制限を使用しています。このモデルを使用すると、解はすべての変数で 0 になりますが、i、j、k のすべての組み合わせの開始時間は 720 (1440 の半分) です。この解決策の原因について何か手がかりはありますか? この制約は、x が 1 でなければならない 0 より大きい starttime の間のリンクをどのように削除しましたか?

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

python - AMPL: データのセットと仕様内の大きなセット

私は現在、かなり大きな調整が必要なモデルを作成しています。基本的に、都市のセットである現在のセット V を拡張して、都市と時間のセットにする必要があります。たとえば、V の要素 Kir は、単純に "Kir" から "Kir1"、"Kir2"、...、"Kir72" に拡張して、都市 Kir と番号で指定された時間枠を表す必要があります。

これを (.mod ファイルで) 次のように定義し始めました。K を V 内に設定します。

.dat ファイルでは、これをどのように記述すればよいかよくわかりません。セット K に「文字列」Kir を含める簡単な方法がない場合は、次のように記述します。

例えば。私の質問は、どうすればこれを行うことができますか? 都市名のキルを含めることはできますか? 具体的には、元の V セットの都市間の距離のピボット テーブルを定義しました。たとえば、都市 Kir と Sto の間の元のセット V 内の距離は、拡張セット内の Kir1 と Sto1 の間の距離と同じでなければなりません。また、Kir1 と Sto72 の間の距離も同じでなければなりません。元の距離は同じである必要があります。つまり、時間枠に関係なくです。AMPL内でこれを行う簡単な方法はありますか?

編集: タグ Python を追加しました。これはPythonでも実現できると思います。以下を使用して、新しいセットを定義することができました。

例えば。私は距離行列に関して立ち往生しています

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

ampl - AMPL: 目的地都市内のモデル ターミナル

セットの AMPL ドキュメントを読んでも解決策が見つからない問題に遭遇しました。

私がモデル化したいのは、都市、たとえばキールは、別の都市、たとえば Sto から、たとえば 9 件の配達を持たなければならないということです。ただし、これらの配送は特定のターミナルに到着する必要があり、各ターミナルは毎日短い時間 (約 2 分) しか開いていません。起点ノードについても同じことが言えます。Sto からのルートは、特定のターミナルから指定する必要があります (結果でパスを「たどる」ことができます)。

セットに対して「K 内で V を設定する」操作を使用してモデル化を開始しましたが、これには、V が同じセット、または K が「ノード」を表すセットである K のサブセット (Kir、Sto など) である必要があります。 on および V は、端末「Terminal1」、「Terminal2」などの名前のセットです。

たとえば、次のように定義された「set K dimension 4」のチェックを開始しました。

セット K は、どの都市 (たとえば、Sto) から (たとえば、Kir へ) 配送を行うかを表し、Sto の出発ターミナルは Terminal1 で、Kir の配送ターミナルは Terminal2 です。これには、多数の組み合わせ (Kir だけで約 22 の端末があるなど) を手動で指定する必要があるという欠点があります。制約をモデル化する方法もわかりません。たとえば、以前に持っていた「1 次元」セット:

ここで、V は都市のみの集合、H は車両の集合、maxVisits は都市 i から都市 j への最大配達量を表し、i から j への配達が車両 k を使用して行われる場合、x は 1 です。4 次元集合 K を使用して、これをどのようにモデル化できるかわかりません。

よろしく、