clear
clc
states=8; %初始数量
actions=8; %动作数量
final_state=8; %目标状态
episode=100; %迭代次数
gamma=1; %折扣系数
alpha=0.8; %学习速率
p_max=zeros(states,actions);%按Q值表选最大值进行动作的概率
T=5; %退火温度
reward=-1*[inf inf 47 inf inf 24 inf inf;
inf inf 55 31 31 inf 74 79;
47 55 inf 88 23 25 66 inf;
inf 31 88 inf inf 120 inf 29;
inf 31 23 inf inf inf 42 inf;
24 inf 25 120 inf inf inf inf;
inf 74 66 inf 42 inf inf 66;
inf 79 inf 29 inf inf 66 inf];
tic
Q_table=zeros(states,states);
for i=1:episode
current_state=randperm(states,1); %随机指定一个起始节点
while current_state~=final_state; %当前节点是否为目标节点
optinal_action=find(reward(current_state,:)>=-1000); %当前状态的可能动作集
if length(optinal_action)==0 %判断当前状态的可能动作集是否为空
print("not connected")
break
else
next_action=choose_next_action(Q_table,current_state,optinal_action,p_max); %根据退火算法选择当前状态的一个动作
next_state_optinal=find(reward(next_action,:)>=-1000);
maxQ=max(Q_table(next_action,next_state_optinal));
Q_current=Q_table(current_state,next_action);
Q_table(current_state,next_action)=(1-alpha)*Q_table(current_state,next_action)+alpha*(reward(current_state,next_action)+gamma*maxQ);
Q_next=Q_table(current_state,next_action);
p_max(current_state,next_action)=pmax(Q_current,Q_next,T);
current_state=next_action;
end
end
if i==episode/2
reward=-1*[inf inf 47 inf inf 24 inf inf;
inf inf 55 31 31 inf 74 79;
47 55 inf 88 23 25 66 inf;
inf 31 88 inf inf 120 inf 59;
inf 31 23 inf inf inf 42 inf;
24 inf 25 120 inf inf inf inf;
inf 74 66 inf 42 inf inf 66;
inf 79 inf 59 inf inf 66 inf];
Q_table
end
end
Q_table
toc
function [next_action]=choose_next_action(Q_table,current_state,optinal_action,p_max)
[max_Q,max_action]=max(Q_table(current_state,optinal_action));
if rand<=p_max(current_state,optinal_action(max_action))
next_action=optinal_action(randperm(length(optinal_action),1));
else
next_action=optinal_action(max_action);
end
end
function [p_max]=pmax(Q_current,Q_next,T)
p_max=exp(-abs((Q_current-Q_next)/T/Q_next));
end

JJJ69
- 粉丝: 6382
- 资源: 5917
最新资源
- 管家婆辉煌食品版TOP+15.0
- 《计算机编程 2 级存储库》(毕业设计,源码,教程)简单部署即可运行 功能完善、操作简单,适合毕设或课程设计.zip
- 基于Comsol的电力变压器匝间故障计算模型研究:电磁场与电路的物理场分析及其应用,Comsol电力变压器匝间故障计算模型:基于电磁场与电路物理场研究,分析匝间绝缘故障下的电磁场分布及电压电流计算结果
- 《基于机器学习开发的验光平台》(毕业设计,源码,教程)简单部署即可运行 功能完善、操作简单,适合毕设或课程设计.zip
- 基于Maxwell的8极12槽内置式永磁同步电机设计:“一”字与“V”型转子结构性能对比及建模学习,基于Maxwell的8极12槽内置式永磁同步电机设计:“一”字与“V”型转子结构性能对比及建模学习指
- 《用于电动遥控赛车的单圈计时器》(毕业设计,源码,教程)简单部署即可运行 功能完善、操作简单,适合毕设或课程设计.zip
- 基于STM32的FOC弦波无刷电机控制方法与源码解析,含Video教程分享,基于STM32的FOC弦波无刷电机控制源码分享及视频教程揭秘,foc 基于stm32 弦波无刷电机控制资料 源码 带vide
- STM32 普通IO模拟串口UART(完整代码-已编译验证)
- 《免费数电-Multisim电路仿真大合集(120例)-电子类专业实验/毕设实战资源库》
- 《大创项目 基于机器学习开发的预测经济增长软件》(毕业设计,源码,教程)简单部署即可运行 功能完善、操作简单,适合毕设或课程设计.zip
- 基于DBSCAN密度聚类算法的优化风电-负荷场景生成与削减模型研究,基于DBSCAN密度聚类的风电-负荷场景生成与削减策略,基于DBSCAN密度聚类的风电-负荷场景削减方法 关键词:密度聚类 场景削减
- 《使用神经网络和机器学习的自主缩小模型汽车的开发》(毕业设计,源码,教程)简单部署即可运行 功能完善、操作简单,适合毕设或课程设计.zip
- 基于Simulink仿真的单相PWM整流无桥图腾柱pfc技术研究:220V输入电压,500V输出电压,低纹波,高功率因数,低电流THD,开关频率达20kHz,电力电子入门学习指南 ,基于Simulin
- COMSOL交流电弧模型的多物理场耦合研究:涵盖温度场、流体场与电磁场分析的参考指南,基于多物理场耦合的COMSOL交流电弧模型:涵盖温度场、流体场与电磁场综合分析参考指南,[COMSOL交流电弧模型
- 基于Swing库的Java简易俄罗斯方块游戏开发教程与代码解析
- 图像识别拍照以及保存图片
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


