【MATLAB强化学习工具箱】学习笔记--在基础网格环境训练强化学习智能体Train Reinforcement Learning Agent in Basic Grid World

【说明:这是强化学习工具箱的第一个基本示例,体系了大量设计要素。】

生成env

env是强化学习的环境、world、动力学、边界,定义了操作空间。

env = rlPredefinedEnv("BasicGridWorld");
plot(env)

【说明:plot(env)打开env图片之后,不要关闭,否则在train环节一直报错误。Error using matlab.graphics.primitive.Patch/set Invalid or deleted object.目前还不清楚原因,在本次学习过程中耽误了3个小时】 

【MATLAB强化学习工具箱】学习笔记--在基础网格环境训练强化学习智能体Train Reinforcement Learning Agent in Basic Grid World

 地图说明如下:

(1)地图由5×5网格组成,边界不可逾越。红色圆点是agent,可有四个基本动作(North = 1, South = 2, East = 3, West = 4);【说明:action】

(2)agent默认位置在[1,1];【说明:initial state】

(3)agent到达蓝色方块,可得10分;【说明:reward】

(4)地图中包含了特殊的动作,当从[2,4]直接跳到[4,4]可以得到5分;【说明:action,reward】

(5)黑色网格视为障碍不可逾越;【说明:action】

(6)除(3)(4)两种状态外的其他动作均减1分;【说明:action,reward】

初始化

环境初始化,确保每次重置后都从同一位置开始;

env.ResetFcn = @()1;

随机数种子初始化

rng(0)

生成Q-Learning Agent

生成Q表

从env中提取Observation和Action

qTable = rlTable(getObservationInfo(env),getActionInfo(env));
qRepresentation = rlQValueRepresentation(qTable,getObservationInfo(env),getActionInfo(env));

设置学习率为1

qRepresentation.Options.LearnRate = 1;

设置ε-greedy系数为0.04;

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

训练Q-Learing Agent

生成train配置

trainOpts = rlTrainingOptions;

设置每个迭代步最多运行步为50

trainOpts.MaxStepsPerEpisode = 50;

设置最大迭代次数为200

trainOpts.MaxEpisodes= 200;

设置停止训练判据为平均奖励;

trainOpts.StopTrainingCriteria = "AverageReward";

设置停止训练平均奖励为11分

trainOpts.StopTrainingValue = 11;

设置停止训练判据为连续30次平均奖励不小于11分

trainOpts.ScoreAveragingWindowLength = 30;

开始训练

trainingStats = train(qAgent,env,trainOpts);

训练过程如下所示:

【MATLAB强化学习工具箱】学习笔记--在基础网格环境训练强化学习智能体Train Reinforcement Learning Agent in Basic Grid World

 【MATLAB强化学习工具箱】学习笔记--在基础网格环境训练强化学习智能体Train Reinforcement Learning Agent in Basic Grid World

 训练结果展示

env.Model.Viewer.ShowTrace = true;
env.Model.Viewer.clearTrace;

仿真结果路径

sim(qAgent,env)

【MATLAB强化学习工具箱】学习笔记--在基础网格环境训练强化学习智能体Train Reinforcement Learning Agent in Basic Grid World

由浅色至深色的路径为最佳路径。注意根据特殊奖励策略,翻越了一次障碍,多得了5分。

 

上一篇:[react] React根据不同的环境打包不同的域名?


下一篇:golang 升级后 vscode 无法安装插件问题