パラメータの値を excel ファイルに出力するとき
- まず、gdx ファイルに出力
- 次に gdx ファイルから excel に出力
という手順をとる。
GAMS では 0 の値をとる要素はないものと同じとみなされるので、0 の値をとる要素は1)の段階で何も出力されない。このためエクセルに出力した際にも何も値が出力されない。
以下は、ゼロの値をとる要素には 0 が出力されるようにする方法。
手順
- まず、0 の値が入る要素には eps を入れておく。eps とはゼロに近いがゼロではない数値を表す特殊な記号。
- gdx ファイルから excel ファイルに出力する段階で eps をゼロに置き換える。
以下はサンプルのコード。
$title ゼロの値をとるパラメータをエクセルに出力させる方法
$ontext
Time-stamp: <2010-06-05 16:24:01 Shiro Takeda>
First-written: <2010/05/22>
ゼロの値をとるパラメータをエクセルに出力させる方法
パラメータの値を excel ファイルに出力するとき
1) まず,gdx ファイルに出力
2) 次に gdx ファイルから excel に出力
という手順をとる.
GAMS では 0 の値をとる要素はないものと同じとみなされるので,0 の値をとる要素は1)
の段階で何も出力されない.このためエクセルに出力した際にも何も値が出力されない.
以下は,ゼロの値をとる要素には 0 が出力されるようにする方法.
手順
1) まず,0 の値が入る要素には eps を入れておく.eps とはゼロに近いがゼロではない数値を
表す特殊な記号.
2) gdx ファイルから excel ファイルに出力する段階で eps をゼロに置き換える.
$offtext
set i Sample index / 1*100 /
j Sample index / 1*100 /
;
parameter a Sample parameter
b Sample parameter
;
a(i,j) = eps;
b(i,j) = 0;
display a, b;
* まず parameter を results_2.gdx に出力する.
execute_unload "results_eps.gdx", a, b;
* ----------------------------------------------------------------------
* GDXXRW で excel に出力.
display "com: GDXXRW で excel に出力.";
$ontext
epsout=string
で eps が string に置き換わる.
a には 0 が出力されるが,b には何も出力されないことをチェック.
$offtext
* cmd.txt に以下の内容を出力.
$onecho > cmd.txt
i=results_eps.gdx o=results_eps.xlsx epsout=0
par=a rng=a!A1 rdim=1 cdim=1
par=b rng=b!A1 rdim=1 cdim=1
$offecho
* cmd.txt の中身を引数として gdxxrw を実行.
execute '=gdxxrw @cmd.txt';
* --------------------
* Local Variables:
* mode: gams
* fill-column: 80
* End: