此示例显示如何通过培训Q-Learning和Sarsa代理商使用强化学习来解决网格世界环境。有关这些代理商的更多信息,请参阅Q学习代理和萨拉代表.
此网格世界环境具有以下配置和规则:
网格世界是5比5,边界有限,有四种可能的行动(北= 1,南= 2,East = 3,West = 4)。
代理从单元格[2,1](第二行,第一列)开始。
如果它达到Cell [5,5](蓝色)达到终端状态,则该代理接收奖励+10。
环境中包含从单元格[2,4]到单元格[4,4]的特殊跳跃,奖励+5。
该药剂被障碍物(黑细胞)堵塞。
所有其他行动都会导致-1奖励。
创建基本的网格世界环境。
ent = rlpredefinedenv(“basicgridworld”);
要指定代理的初始状态始终[2,1],请创建一个复位函数,返回初始代理状态的状态编号。在每个训练剧集和仿真开始时调用此函数。在职位上编号[1,1]。当您移动第一列然后按下每个后续列时,状态号增加。因此,创建一个匿名功能句柄,将初始状态设置为2
.
env。ResetFcn = @() 2;
修复随机生成器种子的再现性。
RNG(0)
要创建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);
要培训代理,首先指定培训选项。对于本例,使用以下选项:
火车最多是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'的)结尾
这事件管理器窗口打开并显示训练进度。
要验证培训结果,请在培训环境中模拟代理。
在运行模拟之前,可视化环境并配置可视化以维护代理状态的跟踪。
plot(env)env.model.viewer.showtrace = true;env.model.viewer.Cleartace;
控件在环境中模拟代理SIM
函数。
SIM(QAGENT,ENV)
代理跟踪显示代理成功发现从单元格[2,4]到单元格[4,4]。
要创建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'的)结尾
要验证培训结果,请在培训环境中模拟代理。
plot(env)env.model.viewer.showtrace = true;env.model.viewer.Cleartace;
模拟环境中的代理。
sim (sarsaAgent env)
Sarsa代理发现与Q学习代理相同的网格世界解决方案。