mapping - GAMS 中的条件映射
问题描述
考虑 GAMS 中的以下数据:
set i / 1,2,3 /
j / 1,2,3 /;
parameter stock(i,j);
stock(i,j) = 10;
考虑以下映射:
set jagg / b1,b2 /
map2(j,jagg) / 1.b1, 2.b1, 3.b2, 4.b2 /;
我可以使用以下方法轻松映射:
parameter stockagg(i,jagg);
stockagg(i,jagg) = sum(map2(j,jagg),stock(i,j));
但是,如果 set i等于 set j,我不想映射。也就是说,我想要以下数据作为我的结果:
1 1 10
1 b1 10
1 b2 20
2 b1 10
2 2 10
2 b2 20
3 b1 20
3 3 10
3 b2 10
4 b1 20
4 b2 10
4 4 10
在 GAMS 中是否有一种简单的方法可以做到这一点?
解决方案
不确定,如果我完全正确地回答了您的问题,但这会给您发布的结果:
set i / 1,2,3,4 /
j / 1,2,3,4,b1,b2 /;
Alias(j,jj);
parameter stock(i,j);
stock(i,j) = 10;
set jagg(j) / b1,b2 /
map2(j,jj) / 1.b1, 2.b1, 3.b2, 4.b2 /;
parameter stockagg(i,j);
stockagg(i,j) = sum(map2(jj,jagg(j))$(not sameas(i,jj)),stock(i,j))$(not sameas(i,j))
+ stock(i,j) $( sameas(i,j));
display stockagg;
推荐阅读
- java - lwjgl 纹理呈现黑色
- javascript - 如何找到机器人在特定频道中发送的消息?[discord.js]
- deno - 运行 TCP 回显服务器示例:Uncaught ConnectionReset
- java - 在文本视图中显示来自edittext的值
- javascript - 如何在 React Native 中使用不同颜色的谷歌地图标记?
- python - 关于 tkinter 中变量范围的混淆
- macos - 可执行 LLDB MacOSX Catalina 中的错误 CPU 类型
- php - 如何在 php 电子邮件中使用表格样式中的变量
- python - 数据集中的唯一标识符,索引问题
- python - 训练完成后,我的 CNN 似乎忘记了权重?