此网格世界环境具有以下配置和规则:
一个由边界界定的5 x 5网格世界,有4种可能的动作(北= 1,南= 2,东= 3,西= 4)。
代理从单元格[2,1](第二行,第一列)开始。
如果代理人到达单元格[5,5]的最终状态(蓝色),则代理商会获得+10的奖励。
该环境包含从单元格[2,4]到单元格[4,4]的特殊跳转,奖励为+5。
代理被障碍物(黑格)阻塞。
所有其他动作都会导致-1奖励。

1.创建网格世界环境

创建基本的网格世界环境。

env = rlPredefinedEnv("BasicGridWorld");

要指定代理的初始状态始终为[2,1],请创建一个reset函数,返回初始代理状态的状态号。该功能在每次训练和模拟开始时调用。状态从位置[1,1]开始编号。随着您向下移动第一列,然后向下移动后续的每一列,状态号会增加。因此,创建一个匿名函数句柄,将初始状态设置为2.

env.ResetFcn = @() 2;

修复随机生成器种子以获得可再现性。

rng(0)

2.创建Q-学习代理

要创建一个Q-learning agent,首先使用grid world环境中的观察和动作规范创建一个Q表。将优化器的学习率设置为0.01。

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

qOptions = rlOptimizerOptions(“LearnRate”,0.01);
接下来,使用Q值函数创建Q学习代理,并配置ε贪婪探索。有关创建Q-learning代理的更多信息,请参见rlQAgent和rlQAgentOptions。

agentOpts = rlQAgentOptions;
agentOpts.EpsilonGreedyExploration.Epsilon = .04;
agentOpts.CriticOptimizerOptions = qOptions;
qAgent = rlQAgent(qFunction,agentOpts);

3.培训Q-学习代理

要培训代理,请先指定培训选项。对于此示例,请使用以下选项:
最多训练200集。指定每集最多持续50个时间步。
当代理在连续30集内获得的平均累积奖励大于10时,停止培训。
如需详细资讯,请参阅rlTrainingOptions。

trainOpts = rlTrainingOptions;
trainOpts.MaxStepsPerEpisode = 50;
trainOpts.MaxEpisodes= 200;
trainOpts.StopTrainingCriteria = "AverageReward";
trainOpts.StopTrainingValue = 11;
trainOpts.ScoreAveragingWindowLength = 30;

使用培训Q-learning代理train功能。培训可能需要几分钟才能完成。若要在运行此示例时节省时间,请通过设置来加载预训练的代理doTraining到false。要自己训练代理,请设置doTraining到true。

doTraining = false;if doTraining% Train the agent.trainingStats = train(qAgent,env,trainOpts);
else% Load the pretrained agent for the example.load('basicGWQAgent.mat','qAgent')
end

这剧集经理窗口打开并显示培训进度。

4.验证Q-学习结果

要验证培训结果,请在培训环境中模拟代理。
在运行模拟之前,可视化环境并配置可视化以维护代理状态的跟踪。

plot(env)
env.Model.Viewer.ShowTrace = true;
env.Model.Viewer.clearTrace;

使用模拟环境中的代理sim功能。

sim(qAgent,env)

代理跟踪显示代理成功地找到了从单元格[2,4]到单元格[4,4]的跳转。

5.创建和培训SARSA代理

要创建SARSA代理,请使用与Q学习代理相同的Q值函数和ε贪婪配置。有关创建SARSA代理的更多信息,请参见rlSARSAAgent和rlSARSAAgentOptions。

agentOpts = rlSARSAAgentOptions;
agentOpts.EpsilonGreedyExploration.Epsilon = 0.04;
agentOpts.CriticOptimizerOptions = qOptions;
sarsaAgent = rlSARSAAgent(qFunction,agentOpts);

使用培训SARSA代理train功能。培训可能需要几分钟才能完成。若要在运行此示例时节省时间,请通过设置来加载预训练的代理doTraining到false。要自己训练代理,请设置doTraining到true。

doTraining = false;if doTraining% Train the agent.trainingStats = train(sarsaAgent,env,trainOpts);
else% Load the pretrained agent for the example.load('basicGWSarsaAgent.mat','sarsaAgent')
end

6.验证SARSA培训

要验证培训结果,请在培训环境中模拟代理。

plot(env)
env.Model.Viewer.ShowTrace = true;
env.Model.Viewer.clearTrace;

在环境中模拟代理。

sim(sarsaAgent,env)

在基本网格世界中训练强化学习代理相关推荐

  1. 在Unity环境中使用强化学习训练Donkey Car(转译)

    在Unity环境中使用强化学习训练Donkey Car 1.Introduction 简介 2. Train Donkey Car with Reinforcement Learning 使用强化学习 ...

  2. 强化学习(六) - 连续空间中的强化学习(RL in Continuous Spaces)及相关实例

    强化学习(六) - 连续空间中的强化学习 6.1 连续空间中的强化学习 6.2 离散空间和连续空间 6.3 离散化 实例:小车上山 6.3.1 相关程序 6.3.2 程序注解 (1) 环境测试 (2) ...

  3. 【强化学习-医疗】医疗保健中的强化学习:综述

    Article 作者:Chao Yu, Jiming Liu, Shamim Nemati 文献题目:医疗保健中的强化学习:综述 文献时间:2020 文献链接:https://arxiv.org/ab ...

  4. 游戏中应用强化学习技术,目的就是要打败人类玩家?

    来源:AI前线 作者:凌敏 采访嘉宾:黄鸿波 2016 年,DeepMind 公司开发的 AlphaGo 4:1 大胜韩国著名棋手李世石,成为第一个战胜围棋世界冠军的人工智能机器人,一时风头无两.Al ...

  5. 使用Amazon SageMaker RL 和Unity训练强化学习智能体

    [更新记录] 2022年3月25日 更新原始内容 本文目录结构 1. Overview of solution 2. Building a Docker container 3. Unity envi ...

  6. 阿尔法狗的秘密:人工智能中的强化学习

    在有监督学习(supervised learning)中,训练数据中包含了数据样本的目标. 不过现实中可没有上帝一样的监督者给出这些目标或答案! 强化学习(reinforcement learning ...

  7. IREC-GAN:在线推荐中基于模型的对抗训练强化学习

    IREC-GAN 1 Introduction 推荐系统已经成功地将用户与其在各种应用领域中最感兴趣的内容联系起来.然而,由于用户的兴趣和行为模式不同,只向每个用户呈现一小部分项目,记录的反馈更少.对 ...

  8. chatgpt中的强化学习 PPO

    PPO? 强化学习 基本概念 强化学习五要素:智能体.行为.环境.状态.奖励. 先直接将五个要素映射到文本生成任务上: 智能体:生成模型. 行为: 获取当前step token的概率分布,并选取其中一 ...

  9. 【招聘推荐】启元世界招聘深度强化学习算法工程师

    深度强化学习实验室 官网:http://www.neurondance.com/ 论坛:http://deeprl.neurondance.com/ 编辑.排版:DeepRL 深度强化学习算法工程师 ...

最新文章

  1. 算法---字符串去重
  2. IOS8开发之实现App消息推送
  3. php 输出 echo、print_r、print、var_dump 、die 区别
  4. 【C++】类型转换简述:四种类型转换方式的说明及应用
  5. kali linux 升级命令_作为高级Java,你应该了解的Linux知识
  6. 【AI视野·今日CV 计算机视觉论文速览 第156期】Mon, 9 Sep 2019
  7. Flex-iframe在SWF中嵌入网页的组件(推荐)
  8. python怎么通过占位符_如何输入占位符?
  9. 百度网盘将推出单次会员服务;苹果回应否认操纵搜索结果;Node.js 12.7.0 发布 | 极客头条...
  10. cube一站式云原生机器学习平台-加速分布式任务的运行效率
  11. 页面校验请求MmEwMD(转载)
  12. oracle 日志解析工具,Oracle logminer 日志分析工具使用
  13. 2 EDA技术实用教程【Verilog 语句基本类型】
  14. 嵌入式记录2——Kame四足巡线机器人
  15. 测试自动化风险或成功的条款
  16. HTTP网络劫持的原理与过程、网站被劫持怎么办?
  17. java之自动化观看视频
  18. python任务栏通知区域_PyQT实现通知区域图标和对话气泡
  19. CoAP协议之初探(一)
  20. SCAU 8609 哈夫曼树

热门文章

  1. java executebatch_executeBatch()相关操作汇总
  2. Leetcode 742. Closest Leaf in a Binary Tree
  3. 修改浏览器默认滚动条样式,兼容IE和谷歌
  4. Java多态性,什么是Java的多态性
  5. 一文懂高频交易程序化交易和量化交易的别
  6. hive学习推荐书籍+官方网址
  7. 康熙“坐庄”——坐出纳兰的愁闷,雪芹的家破
  8. 利用antd tree组件实现类文件夹树(文件夹图标跟随树展开状态)
  9. 计算机主机无法开机故障原因,电脑按开机键没反应的主要原因?
  10. StarRocks(二)表设计