8.2 dat形式データファイル
dat形式データファイルでは,定数Parameter
の値,集合Sの要素,変数Variable
の初期値が設定できます.拡張子が.datであるデータファイルはdat形式データファイルと解釈されます.
定数の値や変数の初期値を設定する場合は,name
引数によって定数や変数の名前を定めることができます.特にname
引数を付けない場合には,モデルファイルで定義された名称そのものがname
だと認識されます.つまり,以下の二つの例は同等です.
Parameter a;
Parameter a(name = "a");
dat形式データファイルの行末には半角セミコロン;を付ける必要があります.
次の例では,dat形式データファイルに定数a(name = "aa")
の値10を設定しています.
モデルファイル内
Parameter a(name = "aa");
データファイル内(dat形式)
aa = 10;
次の例では,dat形式データファイルに変数x(name = "xx")の初期値4を設定しています.
モデルファイル内
Variable x(name = "xx");
データファイル内(dat形式)
xx = 4;
次の例では,dat形式データファイルで集合Sの要素1 2 3を設定しています.データファイル内で定義する場合は,モデルファイル内で定義する場合と異なり,ダブルクォート"で囲ってはいけません.
モデルファイル内
Set S;
データファイル内(dat形式)
S = 1 2 3;
一つのdat形式データファイルには,まとめて複数の設定を記述することができます.以下の例では,定数a(name = aa)
の値10,変数x(name = xx)
の初期値4,集合Sの要素1 2 3を全て設定しています.
モデルファイル内
Parameter a(name = "aa"); Variable x(name = "xx"); Set S;
データファイル内(dat形式)
aa = 10; xx = 4; S = 1 2 3;
dat形式データファイル内では,任意に改行を挟むことができます.
aa = 10; xx = 4; S = 1 2 3;
//
はじまりのコメント文を付与することもできます.
// 定数の設定 aa = 10; // 初期値設定 xx = 4; // 集合の定義 S = 1 2 3;
添字を持つ定数Parameter
の値や,変数Variable
の初期値を設定するには,以下のように[]
を用います.次の例では,定数a[1]
, a[2]
, a[3]
に対して,初期値1, 0.5, -1を与えています.
モデルファイル内
Set S = "1 2 3"; Element i(set = S); Parameter a(name = "aa", index = i);
データファイル内(dat形式)
aa = [1] 1 [2] 0.5 [3] -1;
行末の半角セミコロン;は,一つの設定データの最後に記述します.改行は自由なので,データファイル部分は,以下のように記述する事もできます.
aa = [1] 1 [2] 0.5 [3] -1;
これは,モデルファイル内で以下のように記述する場合と同じ意味です.
a[1] = 1; a[2] = 0.5; a[3] = -1;
データファイル内で値を設定する場合は,添字部分にダブルクォート"
は付けません.
次は,変数x["1, p"]
, x["1, q"]
, x["2, p"]
, x["2, q"]
に初期値1, 3, 5, 7を与える例です.
モデルファイル内
Set S = "1 2"; Set T = "p q"; Element i(set = S); Element j(set = T); Variable x(name = "xx", index = (i, j));
データファイル内(dat形式)
xx = [1, p] 1 [1, q] 3 [2, p] 5 [2, q] 7;
これは,モデルファイル内で以下のように記述する場合と同じ意味です.
xx["1, p"] = 1; xx["1, q"] = 3; xx["2, p"] = 5; xx["2, q"] = 7;
集合クラスの構成要素は,明示的に定義しなくとも,モデルファイルやデータファイルの情報から自動的に定義されます.これをSIMPLEの自動代入機能と呼びます.以下の例では,自動代入機能により,集合Sの要素は1, 2, 3であると判断されます.
モデルファイル内
Set S; Element i(set = S); Parameter a(index = i);
データファイル内(dat形式)
a = [1] -1 [2] -1 [3] 1;
以下のように,csv形式データファイルでa[1]
, a[2]
, a[3]
の値を定めた場合も同様です.
i, a 1, -1 2, -1 3, 1
以下のように,モデルファイル内でa[1]
, a[2]
, a[3]
の値を定めた場合も同様です.
Set S; Element i(set = S); Parameter a(index = i); a[1] = -1; a[2] = -1; a[3] = 1;
上に戻る