1

AMPL IDE を初めて見て、特定の線形最適化問題を解決しています。

--- Start of craft.mod ---
var x >= 0; 
var y >= 0; 
minimize cost: 4 * x + 5 * y; 
subject to m1: 9 * x + 15 * y >= 174;
subject to m2 : 1 * x + 6 * y >= 28; 
subject to m3 : 7 * x + 3 * y >= 40;
--- End of craft.mod ---

--- Start of craft.run ---
reset;
model 'craft.mod';
option solver gurobi;
solve;
display x, y, cost;
--- End of craft.run ---

モデルとスクリプトを組み合わせて仕事をします。この例では、3 つの異なるコンポーネントを持つ 2 つの購入可能な製品があります。問題は、すべてのコンポーネントの量が十分になるように、これら 2 つの製品の最適な組み合わせを見つけることです。

しかし、製品やコンポーネントが増えると、すべての制約を書き出すのはばかげていることに気付きます。したがって、別のファイルからデータを取得し、(現実的に) 必要な数の係数で動作するように簡単に拡張できる一般化されたバージョンを作成しようとしています。

私が想像しているように、次のようなデータファイルから始めています。

--- Start of craft2.dat ---
param:  PROD:   cost :=
        Z1      4
        Z2      5;
param:  COMP:   val1    val2    req :=
        A       9       15      174
        B       1       6       28
        C       7       3       40;
--- End of craft2.dat ---

しかし、モデルは現在どのように見えるべきでしょうか?

4

1 に答える 1

0

モデル パーツでは、さらにセットとパラメーターを使用する必要があります。

set COMPONENTS = {"A","B","C"};
param val1 {COMPONENTS };
param val2 {COMPONENTS };
param req {COMPONENTS };

パラメータはデータパートに入力され、方程式のセットでインデックスを付けることができます。

subject to m {i in COMPONENTS}:
   val1[i] * x + val2[i] * y >= req[i];

同じことがあなたの目的にも当てはまります。ただし、目的が 1 つしかないため、専用のセットはおそらく必要ありません。設定内容をデータ部に定義し、モデル部に書き込むだけでも可能set COMPONENTS;です。

于 2015-03-25T12:25:49.373 に答える