主要内容

火车强化学习代理在基本格子世界

这个例子展示了如何通过训练Q-learning和SARSA代理来使用强化学习来解决网格世界环境。有关这些代理的更多信息,请参见q学习的代理撒尔沙代理

这个网格世界环境有以下配置和规则:

  1. 这个网格世界是5乘5的,有4种可能的行动(北= 1,南= 2,东= 3,西= 4)。

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

  3. 如果agent在单元格[5,5](蓝色)到达终端状态,它将获得+10的奖励。

  4. 该环境包含从细胞[2,4]到细胞[4,4]的特殊跳跃,奖励为+5。

  5. 代理被障碍物阻挡(黑色单元格)。

  6. 所有其他行动的结果是-1奖励。

创建网格世界环境

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

env = rlPredefinedEnv (“BasicGridWorld”);

要指定代理的初始状态总是[2,1],需要创建一个reset函数,该函数返回代理初始状态的状态号。在每次训练和模拟开始时调用此函数。状态从位置[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 -学习代理,并配置贪钻研。有关创建q -学习代理的更多信息,请参见rlQAgentrlQAgentOptions

agentOpts = rlQAgentOptions;agentOpts.EpsilonGreedyExploration.Epsilon = 0.04;qAgent = rlQAgent(qRepresentation,agentOpts);

火车Q学习代理

为了培养剂,先指定的培训方案。在这个例子中,使用下列选项:

  • 训练最多200集。指定每一集持续最多50个时间步骤。

  • 当代理接收到一个平均的累积奖励大于10超过30个连续发作停止训练。

有关更多信息,请参阅rlTrainingOptions

trainOpts = rlTrainingOptions;trainOpts。MaxStepsPerEpisode = 50;trainOpts。MaxEpisodes = 200;trainOpts。StopTrainingCriteria =“AverageReward”;trainOpts。StopTrainingValue = 11;trainOpts。ScoreAveragingWindowLength = 30;

训练q学习代理使用火车函数。培训可能需要几分钟才能完成。为了节省时间运行这个例子而,装载由设置一个预训练的剂doTraining.为了训练自己的代理,集doTraining真的

doTraining = FALSE;如果doTraining培训代理商。trainingStats =列车(qAgent,ENV,trainOpts);其他的%加载示例的预训练代理。负载(“basicGWQAgent.mat”“qAgent”结束

情节经理窗口打开并显示训练进度。

验证Q学习结果

为了验证训练结果,在训练环境中模拟agent。

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

plot(env) env. model . viewer . showtrace = true;env.Model.Viewer.clearTrace;

使用模拟环境中的代理sim卡函数。

sim (qAgent env)

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

创建和火车SARSA代理

要创建SARSA剂,使用相同的问表表示和ε-己贪婪配置作为用于Q学习代理。有关创建SARSA代理的详细信息,请参阅rlSARSAAgentrlSARSAAgentOptions

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

使用训练SARSA剂火车函数。培训可能需要几分钟才能完成。为了节省时间运行这个例子而,装载由设置一个预训练的剂doTraining.为了训练自己的代理,集doTraining真的

doTraining = FALSE;如果doTraining培训代理商。env, trainingStats =火车(sarsaAgent trainOpts);其他的%加载示例的预训练代理。负载('basicGWSarsaAgent.mat'“sarsaAgent”结束

验证撒尔沙培训

为了验证训练结果,在训练环境中模拟agent。

plot(env) env. model . viewer . showtrace = true;env.Model.Viewer.clearTrace;

在环境中模拟代理。

SIM(sarsaAgent,ENV)

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

另请参阅

|

相关话题