此示例显示如何通过培训Q-Learning和Sarsa代理商使用强化学习来解决网格世界环境。有关这些代理商的更多信息,请参阅Q学习代理和萨拉代表。
此网格世界环境具有以下配置和规则:
网格世界是5比5,边界有限,有四种可能的动作(北= 1,南= 2,East = 3,West = 4)。
代理从单元格[2,1](第二行,第一列)开始。
如果它达到Cell [5,5](蓝色)达到终端状态,则代理收到奖励+10。
环境中包含从单元格[2,4]到单元格[4,4]的特殊跳跃,奖励+5。
该药剂被障碍物(黑细胞)堵塞。
所有其他行动都会导致-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学习代理,配置epsilon-greedy探索。有关创建Q学习代理的更多信息,请参阅rlqagent.
和rlqagentoptions.
。
代理= rlqagentoptions;Adjeropts.epsilongredyexpliation.epsilon = .04;QAGENT = RLQAGENT(QREPRESENTATION,AGENSOPTS);
要培训代理,首先指定培训选项。对于此示例,请使用以下选项:
火车最多是200集。指定每个episode持续最多50个时间步长。
当代理商收到超过10个连续发作的平均累积奖励时停止培训。
有关更多信息,请参阅rltringOptions.
。
训练= rltringOptions;训练.maxstepperepisode = 50;训练.maxepisodes = 200;训练.StoptrainingCriteria =“平均”;训练.StoptrainingValue = 11;训练.ScoreaveragingWindowLength = 30;
使用该训练Q学习代理火车
功能。培训可能需要几分钟才能完成。要在运行此示例的同时节省时间,请通过设置加载预制代理用圆形
至错误的
。训练代理人,套装用圆形
至真的
。
dotraining = false;如果用圆形%训练代理人。Trainstats =火车(QAGent,Env,训练);别的%加载预磨料的代理。加载('basicgwqagent.mat'那'Qagent')结尾
这剧集经理窗口打开并显示培训进度。
为了验证培训结果,模拟培训环境中的代理。
在运行模拟之前,可视化环境并配置可视化以维护代理状态的跟踪。
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')结尾
为了验证培训结果,模拟培训环境中的代理。
plot(env)env.model.viewer.showtrace = true;env.model.viewer.Cleartrace;
模拟环境中的代理。
SIM(SarsaAgent,Env)
Sarsa代理发现与Q学习代理相同的网格世界解决方案。