主要内容

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

此示例显示如何通过培训Q-Learning和Sarsa代理商使用强化学习来解决网格世界环境。有关这些代理商的更多信息,请参阅Q学习代理萨拉代表

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

  1. 网格世界是5比5,边界有限,有四种可能的动作(北= 1,南= 2,East = 3,West = 4)。

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

  3. 如果它达到Cell [5,5](蓝色)达到终端状态,则代理收到奖励+10。

  4. 环境中包含从单元格[2,4]到单元格[4,4]的特殊跳跃,奖励+5。

  5. 该药剂被障碍物(黑细胞)堵塞。

  6. 所有其他行动都会导致-1奖励。

创建网格世界环境

创建基本网格世界环境。

Env = Rlpredefinedenv(“basicgridworld”);

要指定代理的初始状态始终[2,1],请创建一个复位函数,返回初始代理状态的状态编号。在每个训练剧集和仿真开始时调用此函数。各国的编号开始于职位[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学习代理,配置epsilon-greedy探索。有关创建Q学习代理的更多信息,请参阅rlqagent.rlqagentoptions.

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

火车Q-Learning Agent

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

  • 火车最多是200集。指定每个episode持续最多50个时间步长。

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

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

训练= rltringOptions;训练.maxstepperepisode = 50;训练.maxepisodes = 200;训练.StoptrainingCriteria =“平均”;训练.StoptrainingValue = 11;训练.ScoreaveragingWindowLength = 30;

使用该训练Q学习代理火车功能。培训可能需要几分钟才能完成。要在运行此示例的同时节省时间,请通过设置加载预制代理用圆形错误的。训练代理人,套装用圆形真的

dotraining = false;如果用圆形%训练代理人。Trainstats =火车(QAGent,Env,训练);别的%加载预磨料的代理。加载('basicgwqagent.mat''Qagent'结尾

剧集经理窗口打开并显示培训进度。

验证Q学习结果

为了验证培训结果,模拟培训环境中的代理。

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

plot(env)env.model.viewer.showtrace = true;env.model.viewer.Cleartrace;

模拟使用环境中的代理SIM功能。

SIM(QAGENT,ENV)

代理跟踪显示代理成功发现从单元格[2,4]到单元格[4,4]。

创建和训练萨拉代表

要创建Sarsa代理,请使用与Q学习代理的相同Q表表示和epsilon-greedy配置。有关创建萨拉代理商的更多信息,请参阅rlsarsaagent.rlsarsaagentoptions.

代理= rlsarsaagentoptions;Agentopts.epsilongredyexpliation.epsilon = 0.04;sarsaagent = rlsarsaagent(qrepruseentation,代理商);

使用培训萨拉代理商使用火车功能。培训可能需要几分钟才能完成。要在运行此示例的同时节省时间,请通过设置加载预制代理用圆形错误的。训练代理人,套装用圆形真的

dotraining = false;如果用圆形%训练代理人。TrainingStats =火车(SarsaAgent,Env,Trainpts);别的%加载预磨料的代理。加载('Basicgwsarsaagent.mat''sarsaagent'结尾

验证Sarsa培训

为了验证培训结果,模拟培训环境中的代理。

plot(env)env.model.viewer.showtrace = true;env.model.viewer.Cleartrace;

模拟环境中的代理。

SIM(SarsaAgent,Env)

Sarsa代理发现与Q学习代理相同的网格世界解决方案。

也可以看看

|

相关话题