Q-learning算法实现1(matlab)
算法伪代码:
得到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)相关推荐
- 强化学习(二):Q learning 算法
强化学习(一):基础知识 强化学习(二):Q learning算法 Q learning 算法是一种value-based的强化学习算法,Q是quality的缩写,Q函数 Q(state,action ...
- 【强化学习笔记】从 “酒鬼回家” 认识Q Learning算法
1.背景 现在笔者来讲一个利用Q-learning 方法帮助酒鬼回家的一个小例子, 例子的环境是一个一维世界, 在世界的右边是酒鬼的家.这个酒鬼因为喝多了,根本不记得回家的路,只是根据自己的直觉一会向 ...
- Deep Q Network 算法
Deep Q Network 算法前置基础知识: Reinforcement Learning 基本概念 Q Leaning算法原理 深度学习神经网络知识 Tensorflow.Pytorch.Py ...
- 强化学习入门 : 一文入门强化学习 (Sarsa、Q learning、Monte-carlo learning、Deep-Q-Network等)
最近博主在看强化学习的资料,找到这两个觉得特别适合入门,一个是"一文入门深度学习",一个是"莫烦PYTHON". 建议:看资料的时候可以多种资料一起参考,一边调 ...
- q learning matlab,用Matlab实现简单的Q-learning算法(学习走出房间)
看到一个简单有趣的Q learning例子,写了段matlab代码实现一下.有兴趣的请先阅读原文 链接 dbstop if error%stop at the error if it happens ...
- 【Matlab】强化Q学习算法求解迷宫问题
本篇博客向大家介绍一个利用强化Q学习求解迷宫问题的实例. 在这个问题中,机器人只能向上下左右四个方向移动.在每一步,基于机器人动作的结果,它被教导和再教导是否是一个好的动作,最终整个过程被一次又一次地 ...
- matlab 投票法_SVM算法原理及其Matlab应用
<SVM算法原理及其Matlab应用>由会员分享,可在线阅读,更多相关<SVM算法原理及其Matlab应用(18页珍藏版)>请在人人文库网上搜索. 1.SVM 算法及其 Mat ...
- Q学习(Q learning) 强化学习
Q学习(Q learning) 强化学习的简单例子 Matlab实现 可视化_Morty 的挖坑记录-CSDN博客 强化学习(MATLAB) - 叮叮当当sunny - 博客园
- 卡尔曼滤波器求速度matlab,卡尔曼滤波器算法浅析及matlab实战
原标题:卡尔曼滤波器算法浅析及matlab实战 作者:Liu_LongPo 出处:Liu_LongPo的博客 卡尔曼滤波器是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的 ...
- Online Learning算法理论与实践
Online Learning是工业界比较常用的机器学习算法,在很多场景下都能有很好的效果.本文主要介绍Online Learning的基本原理和两种常用的Online Learning算法:FTRL ...
最新文章
- 每一种SDS都能做超融合吗?
- asp.net窗体操作总结
- identifyTask练习
- 边与最小割(bzoj 1797: [Ahoi2009]Mincut 最小割)
- c语言中printf读入方向,C语言习题答案.doc
- 永远跳票的 永远的毁灭公爵
- The database returned no natively generated identity value
- 云架构Linux运维,【Linux云计算架构:第三阶段-Linux高级运维...
- 基于高通芯片组的广和通FM150 5G模组GPS测试演示
- 公众平台服务号、订阅号、企业微信以及小程序的相关说明
- java有符号和无符号右移
- 【有图有真相】北京地区午饭线下活动——香山行圆满结束
- asdasdasdaa
- 简练软考知识点整理-项目收尾过程组
- sql 中or与in的查询效率对比
- 音乐制作软件中文版-Studio One 4.5.1 WiN-MAC
- 摄像头——环岛中拐点寻找
- Android-推荐一个视频压缩库RxFFmpeg
- 小米手机adb驱动_小米手机GPU驱动可独立更新性能提升;iQOO Neo3正式开卖
- 输入某一个出生年月就能知道某人生肖和星座
热门文章
- Oracle EBS OM Order is not eligible for booking
- 基于Aspose Task进行MS Project导出-无限制版
- Excel中含有汉字和数字的,只提取数字
- 用JavaScript验证密码是否正确有效
- Windows下如何查看某个端口被谁占用
- Python-用动漫小姐姐实现马赛克拼图
- 【IDEA 教程系列第 8 篇】idea 递进式选中代码
- Java基础 最近刚刚考完研准备复习一下基础 提桶进场
- AMD kernel slub 512内存泄漏分析
- android历史记录去重,【图片】*知识帖*求精!!安卓从1.0到如今4.2所有版本集合!!【刷机精灵吧】_百度贴吧...