带有扰动项的马尔科夫链的matlab求解

 

 

这里给出一个带有扰动项的马尔科夫链问题,即每一次都可以采用不同的决策改变转移矩阵以及自身的收益矩阵,这里马尔科夫链就需要通过自后向前的递推得到每一步的最优策略 

这里需要对于之前的马尔科夫链的代码进行较大的改动,这里给出一种双层循环的写法,具体参考的式子如下(每一次循环判断策略数次的maxium)

 

clc;clear
tic
load homework2
% S对应每一种状态所对应的策略数
i=input('状态数');
S=[2 2]; %%%%%对应不同状态所可以使用的策略,每次使用的时候需要调整
n=input('希望得到几期的收益');
vExpect=nan*ones(n,i);
sCumulate=nan*ones(n,i);

%这里初始化第一行的期望收益
%这里进行状态一的循环
    sBest1=-100;
    vBest1=-100;
    for st=1:S(1)
        v=P1(st,:)*(R1(st,:))';
        if vBest1 < v
            vBest1=v;
            sBest1=st;
        end
    end
    %这里进行状态二的循环
    sBest2=-100;
    vBest2=-100;
    for st=1:S(2)
        v=P2(st,:)*(R2(st,:))';
        if vBest2 < v
            vBest2=v;
            sBest2=st;
        end
    end
vExpect(n,1)= vBest1;
vExpect(n,2)= vBest2;
sCumulate(n,1)= sBest1;
sCumulate(n,2)= sBest2;
for t=2:n  %这里进行的是期数的循环
    %这里进行状态一的循环
    sBest1=-100;
    vBest1=-100;
    for st=1:S(1)
        v=P1(st,:)*(R1(st,:)+vExpect(n-t+2,:))';
        if vBest1 < v
            vBest1=v;
            sBest1=st;
        end
    end
    %这里进行状态二的循环
    sBest2=-100;
    vBest2=-100;
    for st=1:S(2)
        v=P2(st,:)*(R2(st,:)+vExpect(n-t+2,:))';
        if vBest2 < v
            vBest2=v;
            sBest2=st;
        end
    end
    vExpect(n-t+1,1)= vBest1;
    vExpect(n-t+1,2)= vBest2;
    sCumulate(n-t+1,1)= sBest1;
    sCumulate(n-t+1,2)= sBest2;

end
toc

其实这里是自后向前递推,所以这里所获得的vExpect矩阵并没有什么实际的意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桃花同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值