clear all;
tau=[0.8,0.4,0.2,0.05,0.01]; %tau为温度
m=5;
T=10000;
%决策机内存初始化
Avegain=zeros(m,5);
Testtime=zeros(m,5);
Ppick=zeros(m,5);
for i=1:m
sum1=sum(exp(Avegain(i,:)/tau(i)));
for j=1:5
Ppick(i,j)=exp(Avegain(i,j)/tau(i))/sum1;
end
end
Reward=zeros(m,T);
for k=1:m
for i=1:T
P0=rand(1);
for j=1:5 %摇臂数
if P0<sum(Ppick(k,k:j))
num=j;
break;
end
end
r=Slotmachine5(num);
if i==1 %更新累计奖赏
Reward(k,i)=r;
else
Reward(k,i)=(Reward(k,i-1)*(i-1)+r)/i;
end
Avegain(k,num)=(Avegain(k,num)*Testtime(k,num)+r)/(Testtime(k,num)+1); %更新所选臂的平均奖赏
Testtime(k,num)=Testtime(k,num)+1; %更新所选臂的实验次数
%更新选择频率
sum1=sum(exp(Avegain(k,:)/tau(k)));
for j=1:5
Ppick(k,j)=exp(Avegain(k,j)/tau(k))/sum1;
end
end
end
result.Testtime=Testtime;
result.Avegain=Avegain;
result.Reward=Reward;
plot(1:T,Reward);
xlabel('测试次数');
ylabel('平均累计奖赏');
legend('τ=0.8','τ=0.4','τ=0.2','τ=0.05','τ=0.01');
%legend('τ=0.2','τ=0.1','τ=0.05','τ=0.02','τ=0.005');
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
解决多臂赌机问题的MATLAB强化学习程序合集:包括使用e-greedy策略、softmax策略以及时变的e-greedy策略求解多臂赌机问题。 “I thought what I'd do was I'd pretend I was one of those deaf-mutes, or should I?”
资源推荐
资源详情
资源评论
收起资源包目录
多臂赌机问题_MatLab程序包.rar (9个子文件)
多臂赌机问题_egreedy策略
findmax.m 292B
Slotmachine5.m 279B
e_greedy.m 1KB
多臂赌机问题_softmax策略
findmax.m 292B
softmax.m 1KB
Slotmachine5.m 279B
多臂赌机问题_时变egreedy策略
findmax.m 292B
tce_greedy.m 1KB
Slotmachine5.m 279B
共 9 条
- 1
忘了面孔的Batou
- 粉丝: 705
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页