1

私は LINGO にまったく慣れていませんが、LINGO でこの例を見つけました。
モデル:

! A 6 Warehouse 8 Vendor Transportation Problem;
SETS:
WAREHOUSES / WH1 WH2 WH3 WH4 WH5 WH6/: CAPACITY;
VENDORS / V1 V2 V3 V4 V5 V6 V7 V8/ : DEMAND;
LINKS( WAREHOUSES, VENDORS): COST, VOLUME;
ENDSETS
! The objective;
MIN = @SUM( LINKS( I, J):
COST( I, J) * VOLUME( I, J));
! The demand constraints;
@FOR( VENDORS( J):
@SUM( WAREHOUSES( I): VOLUME( I, J)) =
DEMAND( J));
! The capacity constraints;
@FOR( WAREHOUSES( I):
@SUM( VENDORS( J): VOLUME( I, J)) <=
CAPACITY( I));
! Here is the data;
DATA:
CAPACITY = 60 55 51 43 41 52;
DEMAND = 35 37 22 32 41 32 43 38;
COST = 6 2 6 7 4 2 5 9
4 9 5 3 8 5 8 2
5 2 1 9 7 4 3 3
7 6 7 3 9 2 7 1
2 3 9 5 7 2 6 5
5 5 2 2 8 1 4 3;
ENDDATA
END

このコードで理解できないことがいくつかあります。
ここに画像の説明を入力

  1. 派生セットLINKS( WAREHOUSES, VENDORS): COST, VOLUME; では、LINKS メンバーが であることをどのように認識しますかV1WH1,V1WH2,..,V1WH6,V2WH1,V2WH2,...,V6WH6,...,V8WH1,...,V8WH6
    これは、次のように指定されたときに、各ベンダーがすべての倉庫に接続されていることを知る方法です。LINKS( WAREHOUSES, VENDORS): COST, VOLUME;

  2. ボリュームデータはこれで与えられますか?それはどのように入手したのですか?

4

1 に答える 1

1

私はずっと前にLingoで少し仕事をしていました。その後状況は変わりましたが、私は彼らのユーザー マニュアル(Lingo 14) を調べました - 31 ページを参照してください。SETS 定義がどのように機能するかが説明されています。

1) デカルト積のすべてのセット メンバーがWAREHOUSES x PRODUCTS自動的に生成されます (すべての「組み合わせ」を考慮して、ラベルを連結することによって)。

現在、特定のペア Warehouse-vendor を接続しない場合、そのCOSTパラメーターは未定義のままにしておく必要があります。ユーザー マニュアルの 118 ページの「データ セクションでの値の省略」を探してください。COSTマトリックス内のセパレータとしてコンマを使用し、空のフィールド (例: 5, 5, , 6...) を使用する必要があります。

2)VOLUMEは変数であり、パラメーターではありません。の値はVOLUMEソルバーによって検出されます。これらの値は、最適な出荷量を表します (すべてのベンダーが要求したものを入手し、出荷の総コストが最小になる場合)。

于 2015-05-24T13:44:55.647 に答える