如何定义并集、交集、对称差?
How can define Union, intersection, symmetric difference?
我已经设置了 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) 是具有二维的子集,我不知道如何获得 Union ?我怎样才能得到交集或对称差异?
谢谢
试试这个:
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);
我已经设置了 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) 是具有二维的子集,我不知道如何获得 Union ?我怎样才能得到交集或对称差异?
谢谢
试试这个:
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);