scensol5.gms : Test handling of scenario dictionary sets with more than 50 entries

Description

This test makes sure that we can handle scenario dictionary sets with more than
50 entries. With GAMS releases before 24.2.3 this caused an error potentially.

Contributor: Lutz Westermann


Small Model of Type : GAMS


Category : GAMS Test library


Main file : scensol5.gms

$Title Test handling of scenario dictionary sets with more than 50 entries (SCENSOL5,SEQ=659)

$Ontext
This test makes sure that we can handle scenario dictionary sets with more than
50 entries. With GAMS releases before 24.2.3 this caused an error potentially.

Contributor: Lutz Westermann
$Offtext


Sets  i     units              / Depot1*Depot5 /
      j     inputs and outputs / stock, wages, issues, receipts, reqs /
      ji(j) inputs             / stock, wages                         /
      jo(j) outputs            /               issues, receipts, reqs / ;

alias(i,k);

Table data(i,j)
         stock  wages  issues  receipts  reqs
Depot1     3      5      40       55      30
Depot2     2.5    4.5    45       50      40
Depot3     4      6      55       45      30
Depot4     6      7      48       20      60
Depot5     2.3    3.5    28       50      25
;

Parameter slice(j)     / #j 0 /
          Rand1_k(i)   / #i 0 /
          Rand2_k(i)   / #i 0 /
          Rand3_k(i)   / #i 0 /
          Rand4_k(i)   / #i 0 /
          Rand5_k(i)   / #i 0 /
          Rand6_k(i)   / #i 0 /
          Rand7_k(i)   / #i 0 /
          Rand8_k(i)   / #i 0 /
          Rand9_k(i)   / #i 0 /
          Rand10_k(i)  / #i 0 /
          Rand11_k(i)  / #i 0 /
          Rand12_k(i)  / #i 0 /
          Rand13_k(i)  / #i 0 /
          Rand14_k(i)  / #i 0 /
          Rand15_k(i)  / #i 0 /
          Rand16_k(i)  / #i 0 /
          Rand17_k(i)  / #i 0 /
          Rand18_k(i)  / #i 0 /
          Rand19_k(i)  / #i 0 /
          Rand20_k(i)  / #i 0 /
          Rand21_k(i)  / #i 0 /
          Rand22_k(i)  / #i 0 /
          Rand23_k(i)  / #i 0 /
          Rand24_k(i)  / #i 0 /
          Rand25_k(i)  / #i 0 /
          Rand26_k(i)  / #i 0 /
          Rand27_k(i)  / #i 0 /
          Rand28_k(i)  / #i 0 /
          Rand29_k(i)  / #i 0 /
          Rand30_k(i)  / #i 0 /
          Rand31_k(i)  / #i 0 /
          Rand32_k(i)  / #i 0 /
          Rand33_k(i)  / #i 0 /
          Rand34_k(i)  / #i 0 /
          Rand35_k(i)  / #i 0 /
          Rand36_k(i)  / #i 0 /
          Rand37_k(i)  / #i 0 /
          Rand38_k(i)  / #i 0 /
          Rand39_k(i)  / #i 0 /
          Rand40_k(i)  / #i 0 /
          Rand41_k(i)  / #i 0 /
          Rand42_k(i)  / #i 0 /
          Rand43_k(i)  / #i 0 /
          Rand44_k(i)  / #i 0 /
          Rand45_k(i)  / #i 0 /
          Rand46_k(i)  / #i 0 /
          Rand47_k(i)  / #i 0 /
          Rand48_k(i)  / #i 0 /
          Rand49_k(i)  / #i 0 /
          Rand50_k(i)  / #i 0 /  ;

Positive variables u(jo)
                   v(ji)
                   Rand1
                   Rand2
                   Rand3
                   Rand4
                   Rand5
                   Rand6
                   Rand7
                   Rand8
                   Rand9
                   Rand10
                   Rand11
                   Rand12
                   Rand13
                   Rand14
                   Rand15
                   Rand16
                   Rand17
                   Rand18
                   Rand19
                   Rand20
                   Rand21
                   Rand22
                   Rand23
                   Rand24
                   Rand25
                   Rand26
                   Rand27
                   Rand28
                   Rand29
                   Rand30
                   Rand31
                   Rand32
                   Rand33
                   Rand34
                   Rand35
                   Rand36
                   Rand37
                   Rand38
                   Rand39
                   Rand40
                   Rand41
                   Rand42
                   Rand43
                   Rand44
                   Rand45
                   Rand46
                   Rand47
                   Rand48
                   Rand49
                   Rand50;

Variable           eff;

Equations defe
          denom
          lime(i)
          randEq1
          randEq2
          randEq3
          randEq4
          randEq5
          randEq6
          randEq7
          randEq8
          randEq9
          randEq10
          randEq11
          randEq12
          randEq13
          randEq14
          randEq15
          randEq16
          randEq17
          randEq18
          randEq19
          randEq20
          randEq21
          randEq22
          randEq23
          randEq24
          randEq25
          randEq26
          randEq27
          randEq28
          randEq29
          randEq30
          randEq31
          randEq32
          randEq33
          randEq34
          randEq35
          randEq36
          randEq37
          randEq38
          randEq39
          randEq40
          randEq41
          randEq42
          randEq43
          randEq44
          randEq45
          randEq46
          randEq47
          randEq48
          randEq49
          randEq50;

defe..     eff =e= sum(jo, u(jo)*slice(jo));
denom..    sum(ji, v(ji)*slice(ji)) =e= 1;
lime(i)..  sum(jo, u(jo)*data(i,jo))=l= sum(ji, v(ji)*data(i,ji));
randEq1..  sum(jo, u(jo)*slice(jo)) =g= Rand1;
randEq2..  sum(jo, u(jo)*slice(jo)) =g= Rand2;
randEq3..  sum(jo, u(jo)*slice(jo)) =g= Rand3;
randEq4..  sum(jo, u(jo)*slice(jo)) =g= Rand4;
randEq5..  sum(jo, u(jo)*slice(jo)) =g= Rand5;
randEq6..  sum(jo, u(jo)*slice(jo)) =g= Rand6;
randEq7..  sum(jo, u(jo)*slice(jo)) =g= Rand7;
randEq8..  sum(jo, u(jo)*slice(jo)) =g= Rand8;
randEq9..  sum(jo, u(jo)*slice(jo)) =g= Rand9;
randEq10.. sum(jo, u(jo)*slice(jo)) =g= Rand10;
randEq11.. sum(jo, u(jo)*slice(jo)) =g= Rand11;
randEq12.. sum(jo, u(jo)*slice(jo)) =g= Rand12;
randEq13.. sum(jo, u(jo)*slice(jo)) =g= Rand13;
randEq14.. sum(jo, u(jo)*slice(jo)) =g= Rand14;
randEq15.. sum(jo, u(jo)*slice(jo)) =g= Rand15;
randEq16.. sum(jo, u(jo)*slice(jo)) =g= Rand16;
randEq17.. sum(jo, u(jo)*slice(jo)) =g= Rand17;
randEq18.. sum(jo, u(jo)*slice(jo)) =g= Rand18;
randEq19.. sum(jo, u(jo)*slice(jo)) =g= Rand19;
randEq20.. sum(jo, u(jo)*slice(jo)) =g= Rand20;
randEq21.. sum(jo, u(jo)*slice(jo)) =g= Rand21;
randEq22.. sum(jo, u(jo)*slice(jo)) =g= Rand22;
randEq23.. sum(jo, u(jo)*slice(jo)) =g= Rand23;
randEq24.. sum(jo, u(jo)*slice(jo)) =g= Rand24;
randEq25.. sum(jo, u(jo)*slice(jo)) =g= Rand25;
randEq26.. sum(jo, u(jo)*slice(jo)) =g= Rand26;
randEq27.. sum(jo, u(jo)*slice(jo)) =g= Rand27;
randEq28.. sum(jo, u(jo)*slice(jo)) =g= Rand28;
randEq29.. sum(jo, u(jo)*slice(jo)) =g= Rand29;
randEq30.. sum(jo, u(jo)*slice(jo)) =g= Rand30;
randEq31.. sum(jo, u(jo)*slice(jo)) =g= Rand31;
randEq32.. sum(jo, u(jo)*slice(jo)) =g= Rand32;
randEq33.. sum(jo, u(jo)*slice(jo)) =g= Rand33;
randEq34.. sum(jo, u(jo)*slice(jo)) =g= Rand34;
randEq35.. sum(jo, u(jo)*slice(jo)) =g= Rand35;
randEq36.. sum(jo, u(jo)*slice(jo)) =g= Rand36;
randEq37.. sum(jo, u(jo)*slice(jo)) =g= Rand37;
randEq38.. sum(jo, u(jo)*slice(jo)) =g= Rand38;
randEq39.. sum(jo, u(jo)*slice(jo)) =g= Rand39;
randEq40.. sum(jo, u(jo)*slice(jo)) =g= Rand40;
randEq41.. sum(jo, u(jo)*slice(jo)) =g= Rand41;
randEq42.. sum(jo, u(jo)*slice(jo)) =g= Rand42;
randEq43.. sum(jo, u(jo)*slice(jo)) =g= Rand43;
randEq44.. sum(jo, u(jo)*slice(jo)) =g= Rand44;
randEq45.. sum(jo, u(jo)*slice(jo)) =g= Rand45;
randEq46.. sum(jo, u(jo)*slice(jo)) =g= Rand46;
randEq47.. sum(jo, u(jo)*slice(jo)) =g= Rand47;
randEq48.. sum(jo, u(jo)*slice(jo)) =g= Rand48;
randEq49.. sum(jo, u(jo)*slice(jo)) =g= Rand49;
randEq50.. sum(jo, u(jo)*slice(jo)) =g= Rand50;

model dea /all /;

parameter scopt / SkipBaseCase 1 /

set dict / k      . scenario. ''
           slice  . param   . data
           scopt  . opt     . ''
           Rand1  . level   . Rand1_k
           Rand2  . level   . Rand2_k
           Rand3  . level   . Rand3_k
           Rand4  . level   . Rand4_k
           Rand5  . level   . Rand5_k
           Rand6  . level   . Rand6_k
           Rand7  . level   . Rand7_k
           Rand8  . level   . Rand8_k
           Rand9  . level   . Rand9_k
           Rand10 . level   . Rand10_k
           Rand11 . level   . Rand11_k
           Rand12 . level   . Rand12_k
           Rand13 . level   . Rand13_k
           Rand14 . level   . Rand14_k
           Rand15 . level   . Rand15_k
           Rand16 . level   . Rand16_k
           Rand17 . level   . Rand17_k
           Rand18 . level   . Rand18_k
           Rand19 . level   . Rand19_k
           Rand20 . level   . Rand20_k
           Rand21 . level   . Rand21_k
           Rand22 . level   . Rand22_k
           Rand23 . level   . Rand23_k
           Rand24 . level   . Rand24_k
           Rand25 . level   . Rand25_k
           Rand26 . level   . Rand26_k
           Rand27 . level   . Rand27_k
           Rand28 . level   . Rand28_k
           Rand29 . level   . Rand29_k
           Rand30 . level   . Rand30_k
           Rand31 . level   . Rand31_k
           Rand32 . level   . Rand32_k
           Rand33 . level   . Rand33_k
           Rand34 . level   . Rand34_k
           Rand35 . level   . Rand35_k
           Rand36 . level   . Rand36_k
           Rand37 . level   . Rand37_k
           Rand38 . level   . Rand38_k
           Rand39 . level   . Rand39_k
           Rand40 . level   . Rand40_k
           Rand41 . level   . Rand41_k
           Rand42 . level   . Rand42_k
           Rand43 . level   . Rand43_k
           Rand44 . level   . Rand44_k
           Rand45 . level   . Rand45_k
           Rand46 . level   . Rand46_k
           Rand47 . level   . Rand47_k
           Rand48 . level   . Rand48_k
           Rand49 . level   . Rand49_k
           Rand50 . level   . Rand50_k /;

solve dea using lp max eff scenario dict;