我有一个优化模型,我尝试针对不同的输入文件求解该模型,我将其准确地称为“在不同场景下求解模型”。因此,我需要一个循环来从 Excel 中读取每个不同工作表的数据。让我说清楚:例如,在下图中,我们有一个包含 4 个场景的数据,每个场景的工作表名称都在逐一增加
This data has to be read as a table for each scenario, like in the excel file.
我尝试用循环读取不同 Excel 工作表中的数据。我可以在 Gams 中做到这一点吗?
在 GAMS 中,我可以从 Excel 中获取数据,如下所示,但这仅适用于一种情况。我想制作一个 GAMS 代码,在循环语句中从 Excel 表中读取所有场景的数据
Table n(t,b)
$call =xls2gms r="nonbooked!A2:I9" i="excelveri.xlsx" o="nbooked.inc"
$include nbooked.inc
;
GAMS put_utility (https://www.gams.com/latest/docs/UG_Put.html#UG_Put_PutUtil) 与工具 GDXXRW (https://www.gams.com/latest/docs/T_GDXXRW.html)是解决这个问题的关键。这是一个独立的(希望是不言自明的)示例:
set i / i1*i3 /
j / j1*j4 /
sheets / Sheet1*Sheet3 /;
parameter data(i,j);
file fx; put fx;
* To make this example self contained, first prepare some data (using same mechanics as the reading)
loop(sheets,
* Create random data
data(i,j) = uniformInt(0,9);
* Write data to GDX
execute_unload 'data.gdx', data;
* Write GDX data to excel
put_utility 'exec' / 'gdxxrw.exe data.gdx par=data rng=' sheets.tl:0 '!a1';
);
* Clear data to start fresh
data(i,j) = 0;
* Load data
loop(sheets,
* Write Excel data to GDX
put_utility 'exec' / 'gdxxrw.exe data.xlsx par=data rng=' sheets.tl:0 '!a1';
* Load data from GDX
execute_load 'data.gdx', data;
* Work with the data, just display as an example
display data;
);
我希望这有帮助,
卢茨
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)