Mapping 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

在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));
然而,我不想映射集合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;