function [x]=dynamicProgTree() % states --oil reserve x(1).rsrv=[600000]; x(2).rsrv=[500000 400000]; x(3).rsrv=[400000 300000 200000]; x(4).rsrv=[300000 200000 100000 0]; % Normal and Enhanced Pumping % Value Onward at t=4 is 0 due to lease expiration x(4).Vn=[0 0 0 0]; x(4).Ve=[0 0 0 0]; x(4).V=max(x(4).Vn,x(4).Ve); % Value % Onward=oilPrice*policy-multiplier*policy^1/reserve+discountedValueOnward for i=1:3 x(3).Vn(i)=40*100000- 1*100000^2/x(3).rsrv(i)+0.9*x(4).V(i); x(3).Ve(i)=40*200000- 20*200000^2/x(3).rsrv(i)+0.9*x(4).V(i+1); end % ValueOnward= Max (Norma, Enahnced) x(3).V=max(x(3).Vn,x(3).Ve); for i=1:2 x(2).Vn(i)=30*100000- 1*100000^2/x(2).rsrv(i)+0.9*x(3).V(i); x(2).Ve(i)=30*200000- 20*200000^2/x(2).rsrv(i)+0.9*x(3).V(i+1); end x(2).V=max(x(2).Vn,x(2).Ve); for i=1:1 x(1).Vn(i)=45*100000- 1*100000^2/x(1).rsrv(i)+0.9*x(2).V(i); x(1).Ve(i)=45*200000- 20*200000^2/x(1).rsrv(i)+0.9*x(2).V(i+1); end x(1).V=max(x(1).Vn,x(1).Ve); end
Saturday, March 24, 2012
Dynamic Programming Tree in MATLAB
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment