gams-math - GAMS 编译到 GDX 删除所有零值的列
问题描述
注意:下面的更新(但未解决)
在我的 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 不存储默认值,因此参数中没有零。您可能可以做的是设置$onEps。这会将您的零转换为eps
,它在数字上仍然为零,但会进入 GDX 文件。
推荐阅读
- jquery - 如何在成功提交表单(联系表单 7)后发送 ajax 请求,其中包含多个选项卡 Bootstrap 5
- api - 如何指定目录以从空手道 Github 中的不同存储库访问 yaml 中的测试资源
- swift - SwiftUI - 如何知道单击 X 按钮后是否打开了新的应用程序窗口(Mac)?
- c++ - 您如何将“while”迭代器转换为 simd 指令?
- flutter - 无法使用 Flutter 发送具有多个表单数据主体 json 和图像的 DIO 发布请求
- python - 比较两个数据框而不考虑一列
- excel - 根据可变的开始列和结束列连接 Excel 行中的单元格
- python - 在 Python 中将多个 CSV 文件读入单独的 DataFrame?
- reactjs - 使用 useContext() 时不断遇到标准的 React 钩子错误。使用这个钩子有什么好的模式?
- upload - Flutter:如何使用 formdata 和 multipartfile 上传多个资产?