主要内容

在基本网格世界中训练强化学习代理

此示例演示如何通过培训Q-learning和SARSA代理使用强化学习解决网格世界环境。有关这些代理的更多信息,请参阅Q-学习代理萨尔萨特工

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

  1. 网格世界是5乘5的,以边界为界,有四种可能的动作(北=1,南=2,东=3,西=4)。

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

  3. 如果代理在单元格[5,5](蓝色)处达到终端状态,则将收到+10的奖励。

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

  5. 该代理被障碍物(黑细胞)阻挡。

  6. 所有其他行动将获得-1奖励。

创建网格世界环境

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

env=rlPredefinedEnv(“基本世界”);

要指定代理的初始状态始终为[2,1],请创建一个重置函数,该函数返回初始代理状态的状态号。此函数在每次训练和模拟开始时调用。状态从位置[1,1]开始编号。当您向下移动第一列,然后再向下移动后续的每列时,状态号会增加。因此,请创建一个匿名函数句柄,将初始状态设置为2.

env。ResetFcn = @() 2;

修复随机生成器种子的再现性。

rng(0)

创建q学习的代理

要创建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代理的更多信息,请参阅rlQAgentrlQAgentOptions

agentOpts = rlQAgentOptions;agentOpts.EpsilonGreedyExploration.Epsilon = .04点;qAgent = rlQAgent (qRepresentation agentOpts);

火车q学习的代理

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

  • 最多训练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”)终止

这个事件管理器窗口打开并显示训练进度。

验证q学习的结果

要验证训练结果,请在训练环境中模拟agent。

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

plot(env)env.Model.Viewer.ShowTrace=true;env.Model.Viewer.clearTrace;

控件在环境中模拟代理模拟函数。

sim(qAgent、env)

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

创建和培训SARSA代理

要创建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”,“萨萨金特”)终止

验证SARSA培训

要验证训练结果,请在训练环境中模拟agent。

plot(env)env.Model.Viewer.ShowTrace=true;env.Model.Viewer.clearTrace;

在环境中模拟代理。

sim (sarsaAgent env)

SARSA代理发现与Q-learning代理相同的网格世界解决方案。

另见

|

相关的话题