Mapping GAMS中的条件映射
在GAMS中考虑以下数据:Mapping GAMS中的条件映射,mapping,gams-math,Mapping,Gams Math,在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
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));
然而,我不想映射集合I是否等于集合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;