我有集合i,j和来自i和j的子集k。我想要有并集、交集和对称差。
我的电视机很大。但为了澄清这个问题,让我们I=1*3,j=6*12。
Set i /1*3/
j/6*12/
K(i ,j)
1.(6,9,11)
2.(7,11)
3.(8,9,10,12) ;
我想在k(i,j)上求并、交和对称差。
例如k(1,j)和k(2,j)。交集是'11‘,对称差是'6,7,9’,并集是'6,7,9,11‘
我必须计算k( i,j)中所有可能的组合的交集、并集和对称差,我如何在GAMS中做到这一点?我该如何对其进行编码?
我知道对于集合i和j上的联合,我可以写
Set i-u-j /#i,#j/; or /i+j/
但在这种情况下,k(i,j)是二维子集,我不知道如何得到并集?如何获得交集或对称差分?
谢谢
发布于 2018-07-23 15:29:19
试试这个:
Set i /1*3/
j/6*12/
K(i ,j) /
1.(6,9,11)
2.(7,11)
3.(8,9,10,12) / ;
Alias (i,ia);
Set intersect(i,ia,j)
symDiff(i,ia,j)
union(i,ia,j);
intersect(i,ia,j)$(ord(i)<ord(ia)) = k(i,j) and k(ia,j);
symDiff(i,ia,j)$(ord(i)<ord(ia)) = k(i,j) xor k(ia,j);
union(i,ia,j)$(ord(i)<ord(ia)) = k(i,j) or k(ia,j);
https://stackoverflow.com/questions/51400240
复制相似问题