最適化セミナーのご案内

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データファイル」を参照ください.


 

 

上に戻る