! windh4.lng;
! Stochastic dynamic programming in Markov Chains (for spatial pulse harvesting)
solved with linear programming when there are stochastic windthrows.;
! Lohmander Peter 99-10-15;
model:
horizon = 5;
v01 = 100;
v02 = 100;
min = @sum(ts(t,s):w(t,s));
@for(ts(t,s1)|t#LT#horizon: [wait]w(t,s1) @sum(state(s2):trans(s1,s2) * w(t+1,s2)) );
@for(time(t)|t#LT#horizon: [cut1if1]w(t,2) rev1(t));
@for(time(t)|t#LT#horizon: [cut2if2]w(t,3) rev2(t));
@for(time(t)|t#LT#horizon: [cut1if12]w(t,4) rev1(t)+@sum(state(s2):trans(3,s2) * w(t+1,s2)));
@for(time(t)|t#LT#horizon: [cut2if12]w(t,4) rev2(t)+@sum(state(s2):trans(2,s2) * w(t+1,s2)));
@for(time(t)|t#LT#horizon: [cut12if12]w(t,4) rev12(t));
w(horizon,1) = 0;
@for(ts(t,s):rev1(t) = @exp(-t*perl*r)*((p01+p11*perl*t)*(v01+v11*perl*t)+L1));
! State = 1 when no stand is standing.
data:
trans = .0 .0 .0 .0
enddata
-----------------------------------------------------
Variable Value Reduced Cost
REV1( 1) 27305.96 0.0000000E+00
REV2( 1) 27305.96 0.0000000E+00
REV12( 1) 55111.92 0.0000000E+00
TRANS( 1, 1) 0.0000000E+00 0.0000000E+00
W( 1, 1) 0.0000000E+00 1.000000
W( 2, 1) 0.0000000E+00 1.210000
W( 3, 1) 0.0000000E+00 1.019500
W( 4, 1) 0.0000000E+00 1.028525
W( 5, 1) 0.0000000E+00 0.0000000E+00
Row Slack or Surplus Dual Price
WAIT( 1, 1) 0.0000000E+00 0.0000000E+00
WAIT( 2, 1) 0.0000000E+00 0.0000000E+00
WAIT( 3, 1) 0.0000000E+00 0.0000000E+00
WAIT( 4, 1) 0.0000000E+00 0.0000000E+00
CUT1IF1( 1) 630.2939 0.0000000E+00
CUT2IF2( 1) 630.2939 0.0000000E+00
CUT1IF12( 1) 8813.164 0.0000000E+00
CUT2IF12( 1) 8813.164 0.0000000E+00
CUT12IF12( 1) 8943.458 0.0000000E+00
Welcome to the home page of Peter Lohmander: