如何将含零值的Excel矩阵完整导入GAMS?
解决Excel含零值矩阵完整导入GAMS的问题
GAMS的gdxxrw工具默认采用稀疏存储逻辑,会忽略Excel中的零值条目,要完整保留所有矩阵元素(包括零值),只需在调用gdxxrw时添加zeros=1参数即可。
修改后的代码
Sets h hours /1*24/ d days /day1*day2/ Parameter SR(h,d); $Call gdxxrw.exe MyMatrix.xlsx par=SR rng=sheet1!B2:C25 output=MyMatrix.gdx zeros=1 $GDXIN MyMatrix.gdx $LOAD SR = SR $GDXIN display SR;
关键说明
zeros=1参数强制gdxxrw将Excel中的数值零写入GDX文件,而非忽略它们。- 注意确认Excel中的零值是数值型:空单元格或文本格式的"0"依然会被工具忽略,需提前将对应单元格格式设置为数值类型。
如果需要明确指定参数维度(避免自动识别出错),可以额外添加dim=2参数:
$Call gdxxrw.exe MyMatrix.xlsx par=SR rng=sheet1!B2:C25 output=MyMatrix.gdx zeros=1 dim=2
内容的提问来源于stack exchange,提问作者Alaa Alsaffar
相关产品推荐
相关产品推荐

