1

我想模拟以下值函数。

d 是一个决策矩阵

x=t+β * w'

y=alpha*(c+beta * v')

v=max{x , y}

如果 x>y 则 v=x 并且 d= 2 如果 x

a=phi * t+beta * w'

b=phi * c+beta * v'

w=max{a , b}

如果 a>b 则 w=a 且 d= 2 如果 a

其中右侧的 w' 和 v' 是下一个周期值函数。

我需要跟踪决策矩阵 d。

我在matlab中做了以下编码。但这似乎不对。我的编码有什么问题?

    t=1;
c=1.4;
alpha=0.5;
beta=0.8;
phi=2;
v=rand;
w=rand;
d=[0,0];
diff=100;
i=1;
%% Value Interation
while diff>0.00001 
     x=t+beta*v(i);
     y=alpha*(c+beta*w(i));
     a=phi*t+beta*v(i);
     b=phi*c+beta*w(i);
     if  x>y
         w1=x; 
         d(i,1)=2;
     else
         w1=y; 
         d(i,1)=1;
     end
     if a>b
         v1=a; 
         d(i,2)=2;
     else
         v1=b; 
         d(i,2)=1;
     end
    diff=max(abs(w(i)-w1),abs(v(i)-v1));
    i=i+1;
    w(i)=w1;
    v(i)=v1;
end
4

1 回答 1

0

这是你想要的吗?特别注意 V 和 W 变量。根据公式,您的代码似乎不正确。

t=1;
c=1.4;
alpha=0.5;
beta=0.8;
phi=2;
v=rand;
w=rand;
d=[0,0];
diff_err=100;
i=1;

while diff_err>0.00001

    [v1,d(i,2)]=max([t+beta*w(i),alpha*(c+beta*v(i))]);
    [w1,d(i,1)]=max([phi*t+beta*w(i),phi*c+beta*v(i)]);

    diff_err=max(abs(w(i)-w1),abs(v(i)-v1));

    i=i+1;
    w(i)=w1;
    v(i)=v1;
end
于 2014-10-22T09:19:15.063 回答