matlab仿真值函数

时间:2014-10-22 08:51:57

标签: matlab reinforcement-learning

我想模拟以下值函数。

d是决策矩阵

x = t + beta * 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 如果一个

其中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

1 个答案:

答案 0 :(得分: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