在基本网格世界中列车加固学习代理

这个例子展示了如何通过训练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

代理= rlqagentoptions;Adjeropts.epsilongredyexpliation.epsilon = .04;QAGENT = RLQAGENT(QREPRESENTATION,AGENTOPTS);

火车Q-Learning Agent

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

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

  • 当代理商收到超过10个连续发作的平均累积奖励时停止培训。

有关更多信息,请参见rltringOptions.

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

训练q学习代理使用火车函数。培训可能需要几分钟才能完成。要在运行此示例的同时节省时间,请通过设置加载预制代理doTraining.训练代理人,套装doTraining真实

dotraining = false;如果doTraining培训代理商。Trainstats =火车(QAGent,Env,训练);其他的%加载示例的预训练代理。负载(“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代理,请使用与Q学习代理的相同Q表表示和epsilon-greedy配置。有关创建萨拉代理商的更多信息,请参阅rlSARSAAgentrlsarsaagentoptions.

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

使用培训萨拉代理商使用火车函数。培训可能需要几分钟才能完成。要在运行此示例的同时节省时间,请通过设置加载预制代理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-learning代理找到相同的网格世界解。

另请参阅

|

相关主题