数理最適化セミナーのご案内

5.4 定数クラスParameter

 定数はParameterというクラスで表現されます.具体的にaという定数を定義するには以下のように記述します.

Parameter a;

 複数の定数を一度に定義するには,集合クラスSetと添字クラスElementを用います.以下の例では,3個の定数b[1], b[2], b[3]を一度に定義しています.

Set S;
S = "1 2 3";
Element i(set = S);
Parameter b(index = i);

 以下の例では,6個の定数c[1, p, c[1, q], c[2, p], c[2, q], c[3, p], c[3, q]を一度に定義しています.

Set S;
Set T;
S = "1 2 3";
T = "p, q";
Element i(set = S);
Element j(set = T);
Parameter c(index = (i, j));

 定数の値は=で設定します.定数の値を明示的に指定しない場合は,自動的に0が設定されます.

 以下の例では,定数a3を設定しています.

a = 3;

 以下の例では定数b[1], b[2], b[3]5をまとめて設定しています.

b[i] = 5;

 個別に設定する場合は,以下のように記述します.

b[1] = 5;
b[2] = 5;
b[3] = 5;

 添字が複数の場合は,まとめて設定する場合と個別に設定する場合の記述が異なります.以下の例では定数c[1, p], c[1, q], c[2, p], c[2, q], c[3, p], c[3, q]6をまとめて設定しています.

c[i, j] = 6;

 個別に設定する場合は,添字をダブルクォート"で囲む必要があります.具体的には以下のように記述します.

c["1, p"] = 6;
c["1, q"] = 6;
c["2, p"] = 6;
c["2, q"] = 6;
c["3, p"] = 6;
c["3, q"] = 6;

 定数の値は,モデルファイル内で設定する以外に,データファイルから設定する方法もあります.データファイルから設定する場合は,Parameterの引数にnameを付ける必要があります.以下は,定数aに3をデータファイルfoo.datから設定する場合の例です.

 モデルファイル内

Parameter a(name = "cost");

 foo.dat

cost = 3;

 nameで設定する名前はダブルクォート"で囲む必要があります.名前に空白や機種依存文字を用いる事はできません.nameを省略した場合,モデルファイル内で定義された名前であるとみなされます.即ち,以下の二つは同等です.

Parameter a;
Parameter a(name = "a");

 以下は,定数b[1], b[2], b[3]5をデータファイルfoo.datから設定する場合の例です.データファイルから値を設定する場合,まとめて設定する方法は無く,個別に設定する方法のみが存在します.

 モデルファイル内

Parameter b(name = "b");

 foo.dat

b = [1] 5 [2] 5 [3] 5;

 以下は,定数c[1, p], c[1, q], c[2, p], c[2, q], c[3, p], c[3, q]6をデータファイルfoo.datから設定する場合の例です.モデルファイルから設定する場合と異なり,添字をダブルクォートで囲む必要はありません.

 モデルファイル内

Parameter c(name = "c");

 foo.dat

c = [1, p] 6 [1, q] 6
    [2, p] 6 [2, q] 6
    [3, p] 6 [3, q] 6;

 データファイルの種類や書式に関するより詳細な説明は「8データファイル」を参照ください.


 

 

上に戻る