主要内容

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

此示例显示如何通过培训Q-Learning和Sarsa代理商使用强化学习来解决网格世界环境。有关这些代理商的更多信息,请参阅Q学习代理萨拉代表

此网格世界环境具有以下配置和规则:

  1. 网格世界是5比5,边界有限,有四种可能的行动(北= 1,南= 2,East = 3,West = 4)。

  2. 代理从单元格[2,1](第二行,第一列)开始。

  3. 如果它达到Cell [5,5](蓝色)达到终端状态,则该代理接收奖励+10。

  4. 环境中包含从单元格[2,4]到单元格[4,4]的特殊跳跃,奖励+5。

  5. 该药剂被障碍物(黑细胞)堵塞。

  6. 所有其他行动都会导致-1奖励。

创建网格世界环境

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

ent = rlpredefinedenv(“basicgridworld”);

要指定代理的初始状态始终[2,1],请创建一个复位函数,返回初始代理状态的状态编号。在每个训练剧集和仿真开始时调用此函数。在职位上编号[1,1]。当您移动第一列然后按下每个后续列时,状态号增加。因此,创建一个匿名功能句柄,将初始状态设置为2

env。ResetFcn = @() 2;

修复随机生成器种子的再现性。

RNG(0)

创建q学习的代理

要创建Q学习代理,首先使用网格世界环境的观察和操作规范创建Q表。将表示的学习率设置为1。

qtable = rltable(getobservationInfo(env),getActionInfo(env));qrepresentation = rlqvaluerepresentation(qtable,getobservationinfo(env),getActionInfo(env));qrepresentation.options.learnrate = 1;

接下来,使用此表表示创建Q学习代理,并配置epsilon-greedy探索。有关创建Q学习代理的更多信息,请参阅rlqagent.rlqagentoptions.

agentOpts = rlQAgentOptions;agentOpts.EpsilonGreedyExploration.Epsilon = .04点;qAgent = rlQAgent (qRepresentation agentOpts);

火车q学习的代理

要培训代理,首先指定培训选项。对于本例,使用以下选项:

  • 火车最多是200集。指定每个episode持续最多50个时间步长。

  • 当经纪人在30次连续训练中获得超过10次的平均累积奖励时,停止训练。

有关更多信息,请参见rlTrainingOptions

训练= rltringOptions;训练.maxstepperepisode = 50;训练.maxepisodes = 200;训练.StoptrainingCriteria =“AverageReward”;训练.StoptrainingValue = 11;训练.ScoreaveragingWindowLength = 30;

使用培训Q学习代理火车函数。训练可能需要几分钟才能完成。为了节省运行此示例的时间,请通过设置加载预先训练过的代理偶然错误的.自己训练代理人,设置偶然真正的

doTraining = false;如果偶然%训练代理人。env, trainingStats =火车(qAgent trainOpts);别的%加载预磨料的代理。加载('basicgwqagent.mat''qagent'的)结尾

事件管理器窗口打开并显示训练进度。

验证q学习的结果

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

在运行模拟之前,可视化环境并配置可视化以维护代理状态的跟踪。

plot(env)env.model.viewer.showtrace = true;env.model.viewer.Cleartace;

控件在环境中模拟代理SIM函数。

SIM(QAGENT,ENV)

代理跟踪显示代理成功发现从单元格[2,4]到单元格[4,4]。

创建和培训SARSA代理

要创建SARSA代理,请使用与Q-learning代理相同的Q表表示和贪心配置。有关创建SARSA代理的详细信息,请参见rlsarsaagent.rlSARSAAgentOptions

代理= rlsarsaagentoptions;Agentopts.epsilongredyexpliation.epsilon = 0.04;sarsaagent = rlsarsaagent(qrepruseentation,代理商);

训练SARSA特工使用火车函数。训练可能需要几分钟才能完成。为了节省运行此示例的时间,请通过设置加载预先训练过的代理偶然错误的.自己训练代理人,设置偶然真正的

doTraining = false;如果偶然%训练代理人。TrainingStats =火车(SarsaAgent,Env,Trainpts);别的%加载预磨料的代理。加载(“basicGWSarsaAgent.mat”'sarsaagent'的)结尾

验证Sarsa培训

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

plot(env)env.model.viewer.showtrace = true;env.model.viewer.Cleartace;

模拟环境中的代理。

sim (sarsaAgent env)

Sarsa代理发现与Q学习代理相同的网格世界解决方案。

也可以看看

|

相关的话题