GAMS

Sets

セットはGAMSモデルの基本構成要素で、モデルの代数的表現におけるインデックスに正確に対応するものである。 上記のTransportationの例では、Setステートメントが1つだけ含まれています:

  Sets i canning plants / Seattle, San-Diego / j markets / New-York, Chicago, Topeka / ; 

このステートメントの効果は、おそらく自明でしょう。 2つのセットを宣言し、それらに$i$と$j$という名前をつけた。 また、次のように集合にメンバーを割り当てた:

$i =$ {シアトル、サンディエゴ}

$j =$ {ニューヨーク、シカゴ、トピカ}

集合のメンバーに番号を付けるためにダッシュを使うことに注意することだ。

パラメータ

パラメータはGAMSのデータ入力の1つの方法である。 この場合、パラメータ$a$と$b$は集合$i$と$j$に対して定義される。

  Parameters a(i) capacity of plant i in cases / Seattle 350 San-Diego 600 / b(j) demand at market j in cases / New-York 325 Chicago 300 Topeka 275 / ; 

GAMSでは、モデルを開発する際に、説明のテキスト(小文字で表示)をモデル全体に配置することができる。 1086>

Table

データは便利な表形式で入力することも可能である。

  Table d(i,j) distance in thousands of miles New-York Chicago Topeka Seattle 2.5 1.7 1.8 San-Diego 2.5 1.8 1.4 ; 

スカラー

定数は単にスカラーとして宣言することができます。

  Scalar f freight in dollars per case per thousand miles /90/ ; 

データ操作

データ値が計算されるとき、まずパラメータを宣言し(つまりシンボルと、オプションでそれをインデックスします)、次にその代数式を指定します。

  Parameter c(i,j) transport cost in thousands of dollars per case ;c(i,j) = f * d(i,j) / 1000 ; 

変数

決定変数は、そのインデックスを指定して代数的に表現される。 この一般的な形式から、GAMSはドメイン内の各変数のインスタンスを生成する。 変数のタイプは、FREE、POSITIVE、NEGATIVE、BINARY、INTEGERのいずれかを指定する。

  Variables x(i,j) shipment quantities in cases z total transportation costs in thousands of dollars ;Positive variables x ; 

方程式

目的関数と制約方程式は、最初に名前を付けて宣言される。 それからそれらの一般的な代数式が記述される。 GAMSは、以下の出力レポートにあるように、個々の制約文を自動的に生成するのに十分な情報を(上記で入力されたデータと方程式で指定された代数的関係から)持っています。 豊富なツール群により、代数的に記述可能なあらゆる式をモデル化することができます:算術、索引、関数、例外処理ログ(例:if-then-elseやthat構造など)です。

=E=は「に等しい」
=L=は「以下」を示す
=G=は「以上」を示す

  Equations cost define objective function supply(i) observe supply limit at plant i demand(j) satisfy demand at market j ;cost .. z =e= sum((i,j), c(i,j)*x(i,j)) ;supply(i) .. sum(j, x(i,j)) =l= a(i) ;demand(j) .. sum(i, x(i,j)) =g= b(j) ; 

モデル文

モデルには固有の名前(ここではTRANSPORT)が与えられ、モデラーはこの特定の定式化に含まれるべき方程式を特定する。 この場合、すべての方程式がモデルの一部であることを示すALLを指定しました。 これは、MODEL TRANSPORT /COST, SUPPLY, DEMAND/ と同じ意味になります。 この方程式の選択により、1つのGAMS入力ファイル内で、同一または異なる与えられたデータに基づいて、異なるモデルを定式化することができます。

  Model transport /all/ ; 

Solveステートメント

Solveステートメントは、(1)どのモデルを解くか、(2)使用ソルバー(この場合LPソルバー)を選択、(3)最小化または最大化という最適化の方向、(4)目的変数を特定します。

コメントを残す

メールアドレスが公開されることはありません。