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

这个例子说明如何通过训练Q-学习,SARSA代理解决使用强化学习网格世界环境。有关这些代理的详细信息,请参阅Q学习代理SARSA代理.

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

  1. 网格世界是5×5和边界为界,有四个可能的行动(北= 1,南= 2,东= 3,西= 4)。

  2. 代理从细胞[2,1](第二行,第一列)开始。

  3. 所述代理接收的奖励10,如果它到达细胞[5,5](蓝色)终端状态。

  4. 所述环境包含从细胞[2,4]细胞[4,4]具有5奖励特殊的跳跃。

  5. 药剂通过障碍物(黑细胞)阻断。

  6. 所有其他操作导致-1奖励。

创建网格世界环境

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

ENV = 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学习剂和配置的ε-贪婪的探索。有关创建Q学习代理的详细信息,请参阅rlQAgentrlQAgentOptions.

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

火车q学习的代理

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

  • 列车最多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'结束

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

验证q学习的结果

为了验证训练成果,模拟训练环境的代理。

在运行模拟之前,可视化的环境和配置可视化,以保持座席状态的痕迹。

情节(ENV)env.Model.Viewer.ShowTrace = TRUE;env.Model.Viewer.clearTrace;

方法在环境中模拟代理SIM卡函数。

SIM(qAgent,ENV)

代理跟踪显示剂成功地找到从细胞[2,4]细胞[4,4]跳跃。

创建和培训SARSA代理

要创建一个SARSA代理,请使用与Q-learning代理相同的Q表表示和epsilon-贪婪配置。有关创建SARSA代理的更多信息,请参见rlSARSAAgentrlSARSAAgentOptions.

agentOpts = rlSARSAAgentOptions;agentOpts.EpsilonGreedyExploration.Epsilon = 0.04;sarsaAgent = rlSARSAAgent(qRepresentation,agentOpts);

用。训练萨尔萨特工培养函数。训练可能需要几分钟才能完成。要在运行此示例时节省时间,请通过设置加载预训练的代理doTraining.自己训练特工,开始doTraining真正的.

doTraining = false;如果doTraining%培训代理。trainingStats =列车(sarsaAgent,ENV,trainOpts);其他%加载预训练剂的例子。加载(“basicGWSarsaAgent.mat”'sarsaAgent'结束

验证SARSA培训

为了验证训练成果,模拟训练环境的代理。

情节(ENV)env.Model.Viewer.ShowTrace = TRUE;env.Model.Viewer.clearTrace;

在模拟环境中的代理。

sim (sarsaAgent env)

该SARSA代理发现同样的格子世界的溶液,作为Q学习剂。

也可以看看

|

相关的话题