pipe1.gms : piped assignment - permutation for two dimensions

Description

```Contributor: Alex Meeraus
```

Small Model of Type : GAMS

Category : GAMS Test library

Main file : pipe1.gms

``````\$title piped assignment - permutation for two dimensions (PIPE1,SEQ=111)

\$ontext

Contributor: Alex Meeraus
\$offtext

\$version 137 goto OK
\$clearerror
\$stop
\$label OK

set i / i1*i5 /
set j / j1*j5 /

parameters a(i,j)    original
b(j,i)    permuted with assign
c(j,i)    permuted with option
cc(i,j)   copy of a with option
dbc(j,i)  diff between b and c
dcc(i,j)  diff between a and cc;

a(i,j) =  ord(j)+(ord(i)-1)*card(j);

b(j,i) = a(i,j);

option c  < a
cc < a;

dbc(j,i) = c(j,i) - b(j,i);
dcc(i,j) = a(i,j) - cc(i,j);

display dbc,dcc;

abort\$(card(dbc)) 'piped assign failed',a,b,c,dbc;
abort\$(card(dcc)) 'piped assign failed',a,cc,dcc;

variable  xx(i,j) some variable;
set       ss(i,j) this will be the domain of a
kk(i,j) this will be the domain of xx
ll(j,i) permuted kk
das(i,j) difference between ss and a
dxk(i,j) difference between kk and xx
dxl(j,i) difference between ll and xx;

xx.l(i,j) = uniform(0,1) > .8;

option ss < a
kk < xx
ll < xx;

das(i,j) = a(i,j)    xor ss(i,j);
dxk(i,j) = xx.l(i,j) xor kk(i,j);
dxl(j,i) = xx.l(i,j) xor ll(j,i);
display das,dxk,dxl;

abort\$(card(das)) 'piped assign failed',a,ss,das;
abort\$(card(dxk)) 'piped assign failed',xx.l,kk,dxk;
abort\$(card(dxl)) 'piped assign failed',xx.l,ll,dxl;
``````
GAMS Development Corp.
GAMS Software GmbH

General Information and Sales
U.S. (+1) 202 342-0180
Europe: (+49) 221 949-9170