Description
This test checks that the singleton sets can be used as expected when strictSingleton=0 Contributor: Lutz Westermann, January 2014
Small Model of Type : GAMS
Category : GAMS Test library
Main file : single01.gms
$title 'Check handling of singleton sets' (SINGLE01,SEQ=639)
$onText
This test checks that the singleton sets can be used as expected
when strictSingleton=0
Contributor: Lutz Westermann, January 2014
$offText
set i /i1*i3/
j /j1*j3/
k /k1*k3/
l /l1*l3/;
singleton set si(i) /i2/
sk(k) /k2/
sl(l) /l2/
sij(i,j) /i2.j2/
sjk(j,k) /j2.k2/
skl(k,l) /k2.l2/ ;
parameter pi(i)
pii(i,i)
pij(i,j)
pijk(i,j,k)
pijkl(i,j,k,l);
alias (i,a);
pi(i) = ord(i);
pij(i,j) = 10 *ord(i)+ ord(j);
pii(i,a) = 10 *ord(i)+ ord(a);
pijk(i,j,k) = 100 *ord(i)+10 *ord(j)+ ord(k);
pijkl(i,j,k,l) = 1000*ord(i)+100*ord(j)+10*ord(k)+ord(l);
scalar x,y,z;
x = pi(si);
y = sum(si,pi(si));
abort$(x<>y) 'Unexpected difference',x,y;
loop(i,
si(i)=yes;
x = pi(si);
y = sum(si,pi(si));
);
abort$(x<>y) 'Unexpected difference',x,y;
option strictSingleton = 0;
z = 0;
while(z<=2,
si(i)=yes;
x = pi(si);
y = sum(si,pi(si));
z = z+1;
);
abort$(x<>y) 'Unexpected difference',x,y;
for(z=1 to 2,
si(i)=yes;
x = pi(si);
y = sum(si,pi(si));
);
abort$(x<>y) 'Unexpected difference',x,y;
z = 0;
repeat(
si(i)=yes;
x = pi(si);
y = sum(si,pi(si));
z = z+1;
until(z>2));
abort$(x<>y) 'Unexpected difference',x,y;
x = pij(sij);
y = sum(sij,pij(sij));
abort$(x<>y) 'Unexpected difference',x,y;
loop((i,j),
sij(i,j)=yes;
x = pij(sij);
y = sum(sij,pij(sij));
);
abort$(x<>y) 'Unexpected difference',x,y;
loop(k,
x = pijkl(sij,k-pi(si),sl);
y = sum((sij,sl), pijkl(sij,k-sum(si,pi(si)),sl));
);
abort$(x<>y) 'Unexpected difference',x,y;
loop((i,j,k),
sij(i,j)=yes;
sl(l) =yes;
x = pijkl(sij,k-pi(si),sl);
y = sum((sij,sl), pijkl(sij,k-sum(si,pi(si)),sl));
);
abort$(x<>y) 'Unexpected difference',x,y;
loop(k,
x = sum(l,pijk(sij,k-pi(si)));
y = sum(l,sum(sij, pijk(sij,k-sum(si,pi(si)))));
);
abort$(x<>y) 'Unexpected difference',x,y;
loop((i,j,k),
sij(i,j)=yes;
si(i) =yes;
x = sum(l,pijk(sij,k-pi(si)));
y = sum(l,sum(sij, pijk(sij,k-sum(si,pi(si)))));
);
abort$(x<>y) 'Unexpected difference',x,y;
x = pijk(sij,sk);
y = sum((sij,sk),pijk(sij,sk));
abort$(x<>y) 'Unexpected difference',x,y;
loop((i,j,k),
sij(i,j)=yes;
sk(k) =yes;
x = pijk(sij,sk);
y = sum((sij,sk),pijk(sij,sk));
);
abort$(x<>y) 'Unexpected difference',x,y;
loop((i,j),
sij(i,j)=yes;
x = pijk(sij,sk);
y = sum((sij,sk),pijk(sij,sk));
);
abort$(x<>y) 'Unexpected difference',x,y;
loop(k,
sk(k)=yes;
x = pijk(sij,sk);
y = sum((sij,sk),pijk(sij,sk));
);
abort$(x<>y) 'Unexpected difference',x,y;
x = pijkl(si,sjk,sl);
y = sum((si,sjk,sl),pijkl(si,sjk,sl));
abort$(x<>y) 'Unexpected difference',x,y;
loop((i,j,k,l),
si(i) =yes;
sjk(j,k)=yes;
sl(l) =yes;
x = pijkl(si,sjk,sl);
y = sum((si,sjk,sl),pijkl(si,sjk,sl));
);
loop((j,k,l),
sjk(j,k)=yes;
sl(l) =yes;
x = pijkl(si,sjk,sl);
y = sum((si,sjk,sl),pijkl(si,sjk,sl));
);
loop((i,l),
si(i) =yes;
sl(l) =yes;
x = pijkl(si,sjk,sl);
y = sum((si,sjk,sl),pijkl(si,sjk,sl));
);
loop((i,j,k),
si(i) =yes;
sjk(j,k)=yes;
x = pijkl(si,sjk,sl);
y = sum((si,sjk,sl),pijkl(si,sjk,sl));
);
abort$(x<>y) 'Unexpected difference',x,y;
x = pijkl(si,'j1',skl);
y = sum((si,skl),pijkl(si,'j1',skl));
abort$(x<>y) 'Unexpected difference',x,y;
loop((i,k,l),
si(i) =yes;
skl(k,l)=yes;
x = pijkl(si,'j1',skl);
y = sum((si,skl),pijkl(si,'j1',skl));
);
abort$(x<>y) 'Unexpected difference',x,y;
x = sum(j,pijkl(si,j,skl));
y = sum(j,sum((si,skl),pijkl(si,j,skl)));
abort$(x<>y) 'Unexpected difference',x,y;
loop((i,k,l),
si(i) =yes;
skl(k,l)=yes;
x = sum(j,pijkl(si,j,skl));
y = sum(j,sum((si,skl),pijkl(si,j,skl)));
);
abort$(x<>y) 'Unexpected difference',x,y;
x = pijkl(sij,skl);
y = sum((sij,skl),pijkl(sij,skl));
abort$(x<>y) 'Unexpected difference',x,y;
loop((i,j,k,l),
sij(i,j)=yes;
skl(k,l)=yes;
x = pijkl(sij,skl);
y = sum((sij,skl),pijkl(sij,skl));
);
abort$(x<>y) 'Unexpected difference',x,y;
loop((i,j),
sij(i,j)=yes;
x = pijkl(sij,skl);
y = sum((sij,skl),pijkl(sij,skl));
);
abort$(x<>y) 'Unexpected difference',x,y;
loop((k,l),
skl(k,l)=yes;
x = pijkl(sij,skl);
y = sum((sij,skl),pijkl(sij,skl));
);
abort$(x<>y) 'Unexpected difference',x,y;
loop(i,
x = pijkl(i-pi(si),sjk,sl);
y = sum((sjk,sl), pijkl(i-sum(si,pi(si)),sjk,sl));
);
abort$(x<>y) 'Unexpected difference',x,y;
loop((i,j,k,l),
si(i)=yes;
sjk(j,k)=yes;
sl(l)=yes;
x = pijkl(i-pi(si),sjk,sl);
y = sum((sjk,sl), pijkl(i-sum(si,pi(si)),sjk,sl));
);
abort$(x<>y) 'Unexpected difference',x,y;
loop(i,
x = pijkl(i-pi(si),sjk,sl);
y = sum((sjk), pijkl(i-sum(si,pi(si)),sjk,'l2'));
);
abort$(x<>y) 'Unexpected difference',x,y;
loop((i,j,k),
si(i)=yes;
sjk(j,k)=yes;
x = pijkl(i-pi(si),sjk,sl);
y = sum((sjk), pijkl(i-sum(si,pi(si)),sjk,'l2'));
);
abort$(x<>y) 'Unexpected difference',x,y;
alias(si,sai);
x = pi(sai);
y = sum(sai,pi(sai));
abort$(x<>y) 'Unexpected difference',x,y;
loop(i,
sai(i)=yes;
x = pi(sai);
y = sum(sai,pi(sai));
);
abort$(x<>y) 'Unexpected difference',x,y;
x = pii(si,sai);
y = sum((si,sai),pii(si,sai));
abort$(x<>y) 'Unexpected difference',x,y;
loop(i,
si(i)=yes;
sai(i)=yes;
x = pii(si,sai);
y = sum((si,sai),pii(si,sai));
);
abort$(x<>y) 'Unexpected difference',x,y;
x = pii(si,si);
y = sum((si),pii(si,si));
abort$(x<>y) 'Unexpected difference',x,y;
loop(i,
si(i)=yes;
x = pii(si,si);
y = sum((si),pii(si,si));
);
abort$(x<>y) 'Unexpected difference',x,y;
alias(sjk,sajk);
loop(i,
x = pijkl(i-pi(si),sajk,sl);
y = sum((sajk,sl), pijkl(i-sum(si,pi(si)),sajk,sl));
);
abort$(x<>y) 'Unexpected difference',x,y;
loop((i,j,k),
si(i) =yes;
sajk(j,k)=yes;
sl(l) =yes;
x = pijkl(i-pi(si),sajk,sl);
y = sum((sajk,sl), pijkl(i-sum(si,pi(si)),sajk,sl));
);
abort$(x<>y) 'Unexpected difference',x,y;
set u / 1*10 /;
singleton set su(u) /5/;
x = su.val;
y = sum(su,su.val);
abort$(x<>y) 'Unexpected difference',x,y;
x = 0; y = 0;
loop(u,
su(u) = yes;
x = x + su.val;
y = y + sum(su,su.val);
);
abort$(x<>y) 'Unexpected difference',x,y;