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が設定されます.
以下の例では,定数aに3を設定しています.
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 c(index=t); c[t] = c[t-1] + c[t-2];
定数の値は,モデルファイル内で設定する以外に,データファイルから設定する方法もあります.データファイルから設定する場合は,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データファイル」を参照ください.
上に戻る
