gdxxrw で複数のパラメータを一気に excel に出力する方法


ここに載っているTips.

$title 多数のパラメータを一気に excel に出力するコード.
$ontext
Time-stamp: <2010-05-22 12:24:54 Shiro Takeda>
First-written: <2010/05/22>

多数のパラメータを excel に出力する二つの方法.

アプローチ2のが速い.特に出力するパラメータの数が多くなると実行速度が大幅に違っ
てくる.

$offtext

set i Sample index / 1*100 /
j Sample index / 1*100 /
;

parameter a Sample parameter
b Sample parameter
c Sample parameter
d Sample parameter
e Sample parameter
f Sample parameter
g Sample parameter
h Sample parameter
l Sample parameter
;
a(i,j) = uniform(0,100);
b(i,j) = uniform(0,100);
c(i,j) = uniform(0,100);
d(i,j) = uniform(0,100);
e(i,j) = uniform(0,100);
f(i,j) = uniform(0,100);
g(i,j) = uniform(0,100);
h(i,j) = uniform(0,100);
l(i,j) = uniform(0,100);
display a, b, c, d, e, f, g, h, l;

* まず parameter を results_2.gdx に出力する.
execute_unload "results_2.gdx", a, b, c, d, e, f, g, h, l;

* ----------------------------------------------------------------------
* アプローチ1
display "com: アプローチ1";
$ontext
こちらは一度の gdxxrw の実行で一つのパラメータを gdx → excel に出力する.
$offtext
execute '=gdxxrw i=results_2.gdx o=results_2_.xlsx par=a rng=sheet_a!A1 rdim=1 cdim=1'
execute '=gdxxrw i=results_2.gdx o=results_2_.xlsx par=b rng=sheet_b!A1 rdim=1 cdim=1'
execute '=gdxxrw i=results_2.gdx o=results_2_.xlsx par=c rng=sheet_c!A1 rdim=1 cdim=1'
execute '=gdxxrw i=results_2.gdx o=results_2_.xlsx par=d rng=sheet_d!A1 rdim=1 cdim=1'
execute '=gdxxrw i=results_2.gdx o=results_2_.xlsx par=e rng=sheet_e!A1 rdim=1 cdim=1'
execute '=gdxxrw i=results_2.gdx o=results_2_.xlsx par=f rng=sheet_f!A1 rdim=1 cdim=1'
execute '=gdxxrw i=results_2.gdx o=results_2_.xlsx par=g rng=sheet_g!A1 rdim=1 cdim=1'
execute '=gdxxrw i=results_2.gdx o=results_2_.xlsx par=h rng=sheet_h!A1 rdim=1 cdim=1'
execute '=gdxxrw i=results_2.gdx o=results_2_.xlsx par=l rng=sheet_l!A1 rdim=1 cdim=1'

* ----------------------------------------------------------------------
* アプローチ2
display "com: アプローチ2";
$ontext
こちらは一度の gdxxrw の実行で複数のパラメータを出力する.

それにはパラメータファイルを利用する.
$offtext
* cmd.txt に以下の内容を出力.

$onecho > cmd.txt
i=results_2.gdx o=results_2.xlsx
par=a rng=sheet_a!A1 rdim=1 cdim=1
par=b rng=sheet_b!A1 rdim=1 cdim=1
par=c rng=sheet_c!A1 rdim=1 cdim=1
par=d rng=sheet_d!A1 rdim=1 cdim=1
par=e rng=sheet_e!A1 rdim=1 cdim=1
par=f rng=sheet_f!A1 rdim=1 cdim=1
par=g rng=sheet_g!A1 rdim=1 cdim=1
par=h rng=sheet_h!A1 rdim=1 cdim=1
par=l rng=sheet_l!A1 rdim=1 cdim=1
$offecho

* cmd.txt の中身を引数として gdxxrw を実行.
execute '=gdxxrw @cmd.txt';

* Excel ファイルを開く.
* execute 'shellexecute "results_2.xlsx"';
* execute 'shellexecute "results_2_.xlsx"';

* --------------------
* Local Variables:
* mode: gams
* fill-column: 80
* End:



Similar Posts:

Leave a Reply

スパム防止用認証(空欄に適切な数値を記入してください)。 * Time limit is exhausted. Please reload the CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)