这个例子说明如何通过训练Q-学习,SARSA代理解决使用强化学习网格世界环境。有关这些代理的详细信息,请参阅Q学习代理和SARSA代理.
此网格世界环境具有以下配置和规则:
网格世界是5×5和边界为界,有四个可能的行动(北= 1,南= 2,东= 3,西= 4)。
代理从细胞[2,1](第二行,第一列)开始。
所述代理接收的奖励10,如果它到达细胞[5,5](蓝色)终端状态。
所述环境包含从细胞[2,4]细胞[4,4]具有5奖励特殊的跳跃。
药剂通过障碍物(黑细胞)阻断。
所有其他操作导致-1奖励。
创建基本的网格世界环境。
ENV = rlPredefinedEnv(“BasicGridWorld”);
要指定的代理的初始状态总是[2,1],创建一个复位功能用于返回初始代理状态的状态数。该功能被称为在每个训练集和模拟的开始。国编号从位置[1,1]。国家数量的增加,你向下移动的第一列,然后下来每个后续列。因此,创建一个匿名函数句柄,设置初始状态2
.
env。ResetFcn = @() 2;
修正随机产生的种子的可重复性。
RNG(0)
要创建一个Q学习剂,先用带有观察和动作规格从电网世界环境问答表。代表性的学习速率设置为1。
qTable = rlTable(getObservationInfo(ENV),getActionInfo(ENV));qRepresentation = rlQValueRepresentation(qTable,getObservationInfo(ENV),getActionInfo(ENV));qRepresentation.Options.LearnRate = 1;
接下来,创建一个使用此表表示的Q学习剂和配置的ε-贪婪的探索。有关创建Q学习代理的详细信息,请参阅rlQAgent
和rlQAgentOptions
.
agentOpts = rlQAgentOptions;agentOpts.EpsilonGreedyExploration。ε= .04点;qAgent = rlQAgent (qRepresentation agentOpts);
要培训代理,首先指定培训选项。对于本例,使用以下选项:
列车最多200个集。指定每次发作持续最多50个时间步。
当代理连续30次获得超过10次的平均累积奖励时,停止训练。
欲了解更多信息,请参阅rlTrainingOptions
.
trainOpts = rlTrainingOptions;trainOpts.MaxStepsPerEpisode = 50;trainOpts.MaxEpisodes = 200;trainOpts.StopTrainingCriteria =“AverageReward”;trainOpts.StopTrainingValue = 11;trainOpts.ScoreAveragingWindowLength = 30;
使用列车上的Q-学习代理培养
函数。训练可能需要几分钟才能完成。要在运行此示例时节省时间,请通过设置加载预训练的代理doTraining
至假
.自己训练特工,开始doTraining
至真正的
.
doTraining = false;如果doTraining%培训代理。env, trainingStats =火车(qAgent trainOpts);其他%加载预训练剂的例子。加载('basicGWQAgent.mat','qAgent')结束
该事件管理器窗口打开并显示训练进度。
为了验证训练成果,模拟训练环境的代理。
在运行模拟之前,可视化的环境和配置可视化,以保持座席状态的痕迹。
情节(ENV)env.Model.Viewer.ShowTrace = TRUE;env.Model.Viewer.clearTrace;
方法在环境中模拟代理SIM卡
函数。
SIM(qAgent,ENV)
代理跟踪显示剂成功地找到从细胞[2,4]细胞[4,4]跳跃。
要创建一个SARSA代理,请使用与Q-learning代理相同的Q表表示和epsilon-贪婪配置。有关创建SARSA代理的更多信息,请参见rlSARSAAgent
和rlSARSAAgentOptions
.
agentOpts = rlSARSAAgentOptions;agentOpts.EpsilonGreedyExploration.Epsilon = 0.04;sarsaAgent = rlSARSAAgent(qRepresentation,agentOpts);
用。训练萨尔萨特工培养
函数。训练可能需要几分钟才能完成。要在运行此示例时节省时间,请通过设置加载预训练的代理doTraining
至假
.自己训练特工,开始doTraining
至真正的
.
doTraining = false;如果doTraining%培训代理。trainingStats =列车(sarsaAgent,ENV,trainOpts);其他%加载预训练剂的例子。加载(“basicGWSarsaAgent.mat”,'sarsaAgent')结束
为了验证训练成果,模拟训练环境的代理。
情节(ENV)env.Model.Viewer.ShowTrace = TRUE;env.Model.Viewer.clearTrace;
在模拟环境中的代理。
sim (sarsaAgent env)
该SARSA代理发现同样的格子世界的溶液,作为Q学习剂。