Bellman equation with recursive function

5 vues (au cours des 30 derniers jours)
Amit Kumar
Amit Kumar le 19 Jan 2019
Hello,
I have a Bellman equation for which I have constructed a code with the help of loops, that calculates for me the optimal expected value:
function [V] = Bellmanneu(C,R1,R2,T,P1,P2,P0)
r = [R1 R2]
for t=(T+1):-1:1
for c=1:1:C+1
if c<=1
V(c,t) = 0
elseif t==T+1
V(c,t) = 0
else
V(c,t) = P1 * (r(1) + V(c-1,t+1)) + P2 * (r(2) + V(c-1,t+1)) + P0 * V(c,t+1)
end
end
end
end
Basically, I want to delete the first two for-loops and instead compute a recursive function that calls itself until t equals 1.
Can anyone help me out, at least with the first few steps that need to be taken?
Any help is much appreciated!
  2 commentaires
Star Strider
Star Strider le 19 Jan 2019
What are typical inputs to your function?
Amit Kumar
Amit Kumar le 19 Jan 2019
Hi, i`d like to keep it simple, so C=2, T=2 (important inputs),
P1=0.2, P2=0.6, P3=0.2, R1=50, R2=100.

Connectez-vous pour commenter.

Réponses (1)

Amit Kumar
Amit Kumar le 23 Jan 2019
With some help I could break down the whole function to the following:
function V = belmantest(C,R1,R2,T,P1,P2,P0)
V = zeros(C+1, T+1) % Pre-allocation!!!
for t = T:-1:1
V(2:C+1, t) = P1 * (R1 + V(1:C, t+1)) + P2 * (R2 + V(1:C,t+1)) + P0 * V(2:C+1, t+1)
end
end
Now, it is the last for-loop that I somehow need to get rid of.
Any suggestions?

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by