此示例演示如何通过培训Q-learning和SARSA代理使用强化学习解决网格世界环境。有关这些代理的更多信息,请参阅Q-学习代理和萨尔萨特工.
此网格世界环境具有以下配置和规则:
网格世界是5乘5的,以边界为界,有四种可能的动作(北=1,南=2,东=3,西=4)。
代理从单元格[2,1](第二行,第一列)开始。
如果代理在单元格[5,5](蓝色)处达到终端状态,则将收到+10的奖励。
环境包含从[2,4]单元到[4,4]单元的特殊跳跃,奖励为+5。
该代理被障碍物(黑细胞)阻挡。
所有其他行动将获得-1奖励。
创建基本的网格世界环境。
env=rlPredefinedEnv(“基本世界”);
要指定代理的初始状态始终为[2,1],请创建一个重置函数,该函数返回初始代理状态的状态号。此函数在每次训练和模拟开始时调用。状态从位置[1,1]开始编号。当您向下移动第一列,然后再向下移动后续的每列时,状态号会增加。因此,请创建一个匿名函数句柄,将初始状态设置为2.
.
env。ResetFcn = @() 2;
修复随机生成器种子的再现性。
rng(0)
要创建Q-learning agent,首先使用grid world环境中的观察和操作规范创建一个Q表。将表示的学习速率设置为1。
qTable=rlTable(getObservationInfo(env)、getActionInfo(env));qRepresentation=rlQValueRepresentation(qTable、getObservationInfo(env)、getActionInfo(env));qRepresentation.Options.LearnRate=1;
接下来,使用此表表示创建Q-learning代理,并配置epsilon贪婪探索。有关创建Q-learning代理的更多信息,请参阅rlQAgent
和rlQAgentOptions
.
agentOpts = rlQAgentOptions;agentOpts.EpsilonGreedyExploration.Epsilon = .04点;qAgent = rlQAgent (qRepresentation agentOpts);
要培训代理,首先指定培训选项。对于本例,使用以下选项:
最多训练200集。指定每集最多持续50个时间步。
当经纪人在30次连续训练中获得超过10次的平均累积奖励时,停止训练。
有关详细信息,请参阅rlTrainingOptions
.
trainOpts=RL培训选项;trainOpts.MaxStepRepisode=50;trainOpts.MaxSpices=200;trainOpts.StopTraining标准=“AverageReward”;trainOpts.StopTrainingValue=11;trainOpts.ScoreAveragingWindowLength=30;
使用火车
函数。训练可能需要几分钟才能完成。为了节省运行此示例的时间,请通过设置加载预先训练过的代理溺爱
到错误的
.自己训练代理人,设置溺爱
到真正的
.
doTraining = false;如果溺爱%培训代理人。env, trainingStats =火车(qAgent trainOpts);其他的%加载示例的预训练代理。装载(“basicGWQAgent.mat”,“qAgent”)终止
这个事件管理器窗口打开并显示训练进度。
要验证训练结果,请在训练环境中模拟agent。
在运行模拟之前,可视化环境并配置可视化以维护代理状态的跟踪。
plot(env)env.Model.Viewer.ShowTrace=true;env.Model.Viewer.clearTrace;
控件在环境中模拟代理模拟
函数。
sim(qAgent、env)
代理跟踪显示代理成功地找到了从单元格[2,4]到单元格[4,4]的跳转。
要创建SARSA代理,请使用与Q-learning代理相同的Q表表示和贪心配置。有关创建SARSA代理的详细信息,请参见萨金特
和rlSARSAAgentOptions
.
agentOpts=rlSarAgentOptions;agentOpts.epsilongreedExploration.Epsilon=0.04;SarAgent=rlSarAgent(qRepresentation,agentOpts);
训练SARSA特工使用火车
函数。训练可能需要几分钟才能完成。为了节省运行此示例的时间,请通过设置加载预先训练过的代理溺爱
到错误的
.自己训练代理人,设置溺爱
到真正的
.
doTraining = false;如果溺爱%培训代理人。trainingStats=列车(sarsaAgent、env、trainOpts);其他的%加载示例的预训练代理。装载(“basicGWSarsaAgent.mat”,“萨萨金特”)终止
要验证训练结果,请在训练环境中模拟agent。
plot(env)env.Model.Viewer.ShowTrace=true;env.Model.Viewer.clearTrace;
在环境中模拟代理。
sim (sarsaAgent env)
SARSA代理发现与Q-learning代理相同的网格世界解决方案。