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.