算法伪代码:

得到Q表后,根据如下算法选择最优策略:

以机器人走房间为例,代码实现如下:

原文链接如下:https://www.jianshu.com/p/29db50000e3f

注:原文中的房间状态0-5分别对应代码中1-6

%机器人走房间Q-learning的实现
%% 基本参数
episode=100; %探索的迭代次数
alpha=1;%更新步长
gamma=0.8;%折扣因子
state_num=6;
action_num=6;
final_state=6;%目标房间
Reward_table = [
-1 -1 -1 -1 0 -1; %1
-1 -1 -1 0 -1 100; %2
-1 -1 -1 0 -1 -1; %3
-1 0 0 -1 0 -1; %4
0 -1 -1 0 -1 100; %5
-1 0 -1 -1 0 100 %6
];
%% 更新Q表
%initialize Q(s,a)
Q_table=zeros(state_num,action_num);
for i=1:episode%randomly choose a statecurrent_state=randperm(state_num,1);while current_state~=final_state%randomly choose an action from current stateoptional_action=find(Reward_table(current_state,:)>-1);chosen_action=optional_action(randperm(length(optional_action),1));%take action, observe reward and next stater=Reward_table(current_state,chosen_action);next_state=chosen_action;%update Q-tablenext_possible_action=find(Reward_table(next_state,:)>-1);maxQ=max(Q_table(next_state,next_possible_action));Q_table(current_state,chosen_action)=Q_table(current_state,chosen_action)+alpha*(r+gamma*maxQ-Q_table(current_state,chosen_action));current_state=next_state;end
end%% 选择最优路径%randomly choose a state
currentstate=randperm(state_num,1);
fprintf('Initialized state %d\n',currentstate);
%choose action which satisfies Q(s,a)=max{Q(s,a')}
while currentstate~=final_state[maxQtable,index]=max(Q_table(currentstate,:));chosenaction=index;nextstate=chosenaction;fprintf('the robot goes to %d\n',nextstate);currentstate=nextstate;
end

代码输出:

Q表:

最优策略:

Q-learning算法实现1(matlab)相关推荐

  1. 强化学习(二):Q learning 算法

    强化学习(一):基础知识 强化学习(二):Q learning算法 Q learning 算法是一种value-based的强化学习算法,Q是quality的缩写,Q函数 Q(state,action ...

  2. 【强化学习笔记】从 “酒鬼回家” 认识Q Learning算法

    1.背景 现在笔者来讲一个利用Q-learning 方法帮助酒鬼回家的一个小例子, 例子的环境是一个一维世界, 在世界的右边是酒鬼的家.这个酒鬼因为喝多了,根本不记得回家的路,只是根据自己的直觉一会向 ...

  3. Deep Q Network 算法

     Deep Q Network 算法前置基础知识: Reinforcement Learning 基本概念 Q Leaning算法原理 深度学习神经网络知识 Tensorflow.Pytorch.Py ...

  4. 强化学习入门 : 一文入门强化学习 (Sarsa、Q learning、Monte-carlo learning、Deep-Q-Network等)

    最近博主在看强化学习的资料,找到这两个觉得特别适合入门,一个是"一文入门深度学习",一个是"莫烦PYTHON". 建议:看资料的时候可以多种资料一起参考,一边调 ...

  5. q learning matlab,用Matlab实现简单的Q-learning算法(学习走出房间)

    看到一个简单有趣的Q learning例子,写了段matlab代码实现一下.有兴趣的请先阅读原文 链接 dbstop if error%stop at the error if it happens ...

  6. 【Matlab】强化Q学习算法求解迷宫问题

    本篇博客向大家介绍一个利用强化Q学习求解迷宫问题的实例. 在这个问题中,机器人只能向上下左右四个方向移动.在每一步,基于机器人动作的结果,它被教导和再教导是否是一个好的动作,最终整个过程被一次又一次地 ...

  7. matlab 投票法_SVM算法原理及其Matlab应用

    <SVM算法原理及其Matlab应用>由会员分享,可在线阅读,更多相关<SVM算法原理及其Matlab应用(18页珍藏版)>请在人人文库网上搜索. 1.SVM 算法及其 Mat ...

  8. Q学习(Q learning) 强化学习

    Q学习(Q learning) 强化学习的简单例子 Matlab实现 可视化_Morty 的挖坑记录-CSDN博客 强化学习(MATLAB) - 叮叮当当sunny - 博客园

  9. 卡尔曼滤波器求速度matlab,卡尔曼滤波器算法浅析及matlab实战

    原标题:卡尔曼滤波器算法浅析及matlab实战 作者:Liu_LongPo 出处:Liu_LongPo的博客 卡尔曼滤波器是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的 ...

  10. Online Learning算法理论与实践

    Online Learning是工业界比较常用的机器学习算法,在很多场景下都能有很好的效果.本文主要介绍Online Learning的基本原理和两种常用的Online Learning算法:FTRL ...

最新文章

  1. 每一种SDS都能做超融合吗?
  2. asp.net窗体操作总结
  3. identifyTask练习
  4. 边与最小割(bzoj 1797: [Ahoi2009]Mincut 最小割)
  5. c语言中printf读入方向,C语言习题答案.doc
  6. 永远跳票的 永远的毁灭公爵
  7. The database returned no natively generated identity value
  8. 云架构Linux运维,【Linux云计算架构:第三阶段-Linux高级运维...
  9. 基于高通芯片组的广和通FM150 5G模组GPS测试演示
  10. 公众平台服务号、订阅号、企业微信以及小程序的相关说明
  11. java有符号和无符号右移
  12. 【有图有真相】北京地区午饭线下活动——香山行圆满结束
  13. asdasdasdaa
  14. 简练软考知识点整理-项目收尾过程组
  15. sql 中or与in的查询效率对比
  16. 音乐制作软件中文版-Studio One 4.5.1 WiN-MAC
  17. 摄像头——环岛中拐点寻找
  18. Android-推荐一个视频压缩库RxFFmpeg
  19. 小米手机adb驱动_小米手机GPU驱动可独立更新性能提升;iQOO Neo3正式开卖
  20. 输入某一个出生年月就能知道某人生肖和星座

热门文章

  1. Oracle EBS OM Order is not eligible for booking
  2. 基于Aspose Task进行MS Project导出-无限制版
  3. Excel中含有汉字和数字的,只提取数字
  4. 用JavaScript验证密码是否正确有效
  5. Windows下如何查看某个端口被谁占用
  6. Python-用动漫小姐姐实现马赛克拼图
  7. 【IDEA 教程系列第 8 篇】idea 递进式选中代码
  8. Java基础 最近刚刚考完研准备复习一下基础 提桶进场
  9. AMD kernel slub 512内存泄漏分析
  10. android历史记录去重,【图片】*知识帖*求精!!安卓从1.0到如今4.2所有版本集合!!【刷机精灵吧】_百度贴吧...