专栏首页帮你学MatLabMATLAB强化学习toolbox

MATLAB强化学习toolbox

新版本MATLAB提供了Reinforcement Learning Toolbox可以方便地建立二维基础网格环境、设置起点、目标、障碍,以及各种agent模型

这是Q-learning的训练简单实现

ccc

%% 布置环境硬件

GW = createGridWorld(6,6);

GW.CurrentState = '[6,1]';

GW.TerminalStates = '[2,5]';

GW.ObstacleStates = ["[2,3]";"[2,4]";"[3,5]";"[4,5]"];

%% 根据障碍设置可否行进

updateStateTranstionForObstacles(GW)

%% 设置reward

nS = numel(GW.States);

nA = numel(GW.Actions);

GW.R = -1*ones(nS,nS,nA);

GW.R(:,state2idx(GW,GW.TerminalStates),:) = 10;

%% 生成环境及初始位置

env = rlMDPEnv(GW);

plot(env)

env.ResetFcn = @() 6;

%% Q-learning训练参数初始化

qTable = rlTable(getObservationInfo(env),getActionInfo(env));

tableRep = rlRepresentation(qTable);

tableRep.Options.LearnRate = 1;

agentOpts = rlQAgentOptions;

agentOpts.EpsilonGreedyExploration.Epsilon = .04;

qAgent = rlQAgent(tableRep,agentOpts);

trainOpts = rlTrainingOptions;

trainOpts.MaxStepsPerEpisode = 50;

trainOpts.MaxEpisodes= 200;

trainOpts.StopTrainingCriteria = "AverageReward";

trainOpts.StopTrainingValue = 11;

trainOpts.ScoreAveragingWindowLength = 30;

%% 训练

rng(0)

trainingStats = train(qAgent,env,trainOpts);

%% 结果展示

plot(env)

env.Model.Viewer.ShowTrace = true;

env.Model.Viewer.clearTrace;

sim(qAgent,env)

这是SARSA的训练简单实现

ccc

%% 布置环境硬件

GW = createGridWorld(6,6);

GW.CurrentState = '[6,1]';

GW.TerminalStates = '[2,5]';

GW.ObstacleStates = ["[2,3]";"[2,4]";"[3,5]";"[4,5]"];

%% 设置可否行进

updateStateTranstionForObstacles(GW)

%% 设置reward

nS = numel(GW.States);

nA = numel(GW.Actions);

GW.R = -1*ones(nS,nS,nA);

GW.R(:,state2idx(GW,GW.TerminalStates),:) = 10;

%% 生成环境及初始位置

env = rlMDPEnv(GW);

plot(env)

env.ResetFcn = @() 6;

%% %% SARSA参数初始化

rng(0)

qTable = rlTable(getObservationInfo(env),getActionInfo(env));

tableRep = rlRepresentation(qTable);

tableRep.Options.LearnRate = 1;

agentOpts = rlSARSAAgentOptions;

agentOpts.EpsilonGreedyExploration.Epsilon = 0.04;

sarsaAgent = rlSARSAAgent(tableRep,agentOpts);

trainOpts = rlTrainingOptions;

trainOpts.MaxStepsPerEpisode = 50;

trainOpts.MaxEpisodes= 200;

trainOpts.StopTrainingCriteria = "AverageReward";

trainOpts.StopTrainingValue = 11;

trainOpts.ScoreAveragingWindowLength = 30;

%% 训练

trainingStats = train(sarsaAgent,env,trainOpts);

%% 结果展示

plot(env)

env.Model.Viewer.ShowTrace = true;

env.Model.Viewer.clearTrace;

sim(sarsaAgent,env)

本文分享自微信公众号 - 帮你学MatLab(MatLab_helper),作者:伏毅

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • matlab强化学习Q-Learning与Sarsa对比

    观察下一步选取哪一个动作会带来最大的奖励, 但是在真正要做决定时, 却不一定会选取到那个带来最大奖励的动作, Q-learning 只是估计了一下接下来的动作值

    万木逢春
  • MATLAB强化学习 PG 算法

    采用 policy gradient 学习方法训练agent,并行训练的参数也需要调整

    万木逢春
  • matlab强化学习-复杂网格环境搭建与训练

    先看这个向量式方法生成随机maze来训练Q—learning的agent、主要特点是地图大

    万木逢春
  • 原创哈希数据导出算法 原

    用户2836074
  • JDK8日常开发系列:Consumer详解

    程序员小明
  • 使用 Python 操作 word文档

    最近手头有一个需求是对word文档内容进行判断,搜索到一个包感觉不错,简单记录一下关键操作:

    生信菜鸟团
  • 漫画:原地删除类题型详解(二次修订版)

    题目27:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。

    程序员小浩
  • PDF文件过大如何缩小,几步教你完成压缩

    PDF已经是我们常用的文件格式了,尤其是日常办公当中,PDF是用次数也是很多,但是PDF有的时候会过大,几十兆以上,传输就变得比较麻烦,那么PDF文件过大如何缩...

    高效办公
  • 《Drools7.0.0.Final规则引擎教程》第4章 Query查询之基础

    Query查询 首先,我们先来看一下query的语法结构图: ? Query语法提供了一种查询working memory中符合约束条件的FACT对...

    用户1161110
  • 第17章 ioctl操作

    #include <sys/ioctl.h> int ioctl(int fd, unsigned long request, ...); /usr/src/...

    _gongluck

扫码关注云+社区

领取腾讯云代金券