$title Simple Scenario Tree Construction Example (SRTREE,SEQ=390) $onText This model takes some scenario data (that comes from a true tree), builds a fan and lets ScenRed construct a tree. One without loss of information, the other with some reduction requirement. H. Heitsch, W. Roemisch, and C. Strugarek Stability of Multistage Stochastic Programs SIAM Journal on Optimization 17 (2006), 511-525 Keywords: stochastic programming, scenario tree construction, GAMS ScenRed $offText Set s 'scenarios' / s1*s4 / t 'stage' / t1*t5 / r 'random data' / r1*r4 /; Parameter p(s) 'probability' / (s1,s2) 0.25, s3 0.3, s4 0.2 /; Table sdata(s,t,r) r1 r2 r3 r4 s1.t1 42.5 9.1 7.5 120.0 s1.t2 39.8 11.2 8.4 90.0 s1.t3 37.6 14.0 6.3 110.0 s1.t4 38.9 12.4 8.1 130.0 s1.t5 40.3 14.9 7.2 120.0 s2.t1 42.5 9.1 7.5 120.0 s2.t2 39.8 11.2 8.4 90.0 s2.t3 37.6 14.0 6.3 110.0 s2.t4 38.9 12.4 8.1 130.0 s2.t5 38.4 15.2 8.9 100.0 s3.t1 42.5 9.1 7.5 120.0 s3.t2 39.8 11.2 8.4 90.0 s3.t3 37.6 14.0 6.3 110.0 s3.t4 35.7 13.8 7.5 120.0 s3.t5 37.6 14.9 9.3 80.0 s4.t1 42.5 9.1 7.5 120.0 s4.t2 39.8 11.2 8.4 90.0 s4.t3 37.6 14.0 6.3 110.0 s4.t4 35.7 13.8 7.5 120.0 s4.t5 36.3 12.8 10.3 90.0; * Construct a fan $eval nnodes card(s)*(card(t)-1) Set n 'nodes' / n0*n%nnodes% / nn(n) 'next nodes' anc(n,n) 'ancestor relation'; Parameter prob(n) 'node probability' rv(r,n) 'random values'; nn('n0') = yes; loop(s, loop(t$(ord(t) < card(t)), loop(nn(n), if(sameas('t1',t), anc(n+1,'n0') = yes; else anc(n+1,n) = yes; ); prob(n+1) = p(s); rv(r,n+1) = sdata(s,t+1,r); ); nn(n) = nn(n-1); ); ); prob('n0') = 1; rv(r,'n0') = sdata('s1','t1',r); * Initialize ScenRed $set srprefix test $libInclude scenred Set anc_noloss(n,n), anc_red(n,n); Parameter prob_noloss(n), prob_red(n); * Scenred call ScenredParms('red_percentage') = 0; $libInclude scenred %srprefix% tree_con n anc prob anc_noloss prob_noloss rv abort$(card(anc_noloss) <> 8) 'scenred tree construction gave incorrect noloss tree', anc_noloss; display anc_noloss; * Scenred call ScenredParms('red_num_leaves') = 3; $libInclude scenred %srprefix% tree_con n anc prob anc_red prob_red rv display anc_red;