【发布时间】:2021-01-28 20:50:33
【问题描述】:
注意:更新(但未解决)下方
在我的 GAMS 用例中,我希望在 .gdx 文件中而不是在主 model.gms 脚本中定义静态变量的集合。除非我定义一个仅包含零 (0) 值的列,否则这不是问题。当像这样定义一个表(“数据”)并选择“在 GAMS 工作室中使用 GDX 创建运行。我得到一个缺少列的 .gdx 文件。
Set indexA /ch1*ch5/;
Table data(indexA, *)
A_min A_max B_min B_max
ch1 1 10 0 7
ch2 2 10 0 6
ch3 3 10 0 5
ch4 4 10 0 4
ch5 5 10 0 3;
复制并粘贴 .gdx 内容:
IndexA * Value
ch1 A_min 1
ch1 A_max 10
ch1 B_max 7
ch2 A_min 2
ch2 A_max 10
ch2 B_max 6
ch3 A_min 3
ch3 A_max 10
ch3 B_max 5
ch4 A_min 4
ch4 A_max 10
ch4 B_max 4
ch5 A_min 5
ch5 A_max 10
ch5 B_max 3
“B_min”列无处可见。当尝试将此 .gdx 加载回我的脚本时,它给了我一个错误,我尝试访问“B_min”并说“标签未知”。如果我将值更改为非零,这不是问题,但我需要它为零!我尝试过使用 0.0 vs 0。没有变化。为什么我不能将某个值定义为零并将其保存在我的 .gdx 中?
编辑/更新: 我为此创造了一个丑陋的解决方法。我在 gams 中将所有“B_min 值”设置为 -1,使用该列创建了我的 .gdx 文件,但值错误。使用 GAMS API 将 .gdx 文件加载到 python 中,迭代“数据”中的每个条目以更改将 -1 值设置为 0 并将其保存。这个新的 .gdx 文件现在可以在我的测试模型中使用。我仍然真的很想为我团队中不打算在 python 中使用这项工作的其他人解决这个零问题API。
【问题讨论】:
标签: gams-math