目录
Q-learning是强化学习中的一种无模型算法,特别适合于解决决策过程中的路径规划问题。在基于Q-learning的网格地图路径规划中,算法通过学习在网格地图中从起点到终点的最佳路径,每个网格单元代表一个状态,行动则是在相邻格子间移动。
1.Q-learning算法原理
先定义几个变量:
状态S:在网格地图中,每个可到达的格子定义为一个状态,记为St,其中t表示时间步。
动作A:在每个状态St,代理(如机器人)可以选择的动作通常是向上、向下、向左或向右移动,记为At。
奖励R:完成某动作后,代理接收到的即时反馈,到达终点给予正奖励,否则可能是零或负奖励,记为Rt+1。
Q表Q(s,a):核心是Q函数,记录在状态s采取动作a后预期获得的累积奖励,初始化为任意值,通过学习不断更新。
Q-learning通过贝尔曼方程来更新Q值,其核心思想是“选择最优动作的预期回报应该等于当前回报加上从下一个状态开始,采取最优策略所能得到的最大预期回报”。
更新规则如下:
α 是学习率,决定了新旧知识融合的程度,0<α<1。
γ 是折扣因子,用于衡量未来奖励的重要性0≤γ<1。
Rt+1 是采取动作At后立即获得的奖励。
maxa′Q(St+1,a′) 是在下一状态St+1下,所有可能动作的最大Q值,反映了采取最有利策略的预期收益。
2.Q-learning路径规划步骤
- 初始化Q表:对所有状态-动作对赋予初始Q值。
- 循环:对于每个时间步t直到满足终止条件:
- 选择动作:基于当前状态St和ε-greedy策略选择动作At。
- 执行并接收奖励:执行动作At,到达状态St+1,接收即时奖励Rt+1。
- 更新Q值:根据上述Q-learning更新规则更新Q(St,At)。
- 状态转移:St←St+1,进入下一时间步。
- 路径规划:最终,从起点出发,按最大化Q值的动作选择路径,直至到达终点。
3.MATLAB强化学习工具箱简介
MATLAB 强化学习工具箱(Reinforcement Learning Toolbox)是MathWorks公司提供的一款高级工具箱,专为设计、训练和部署强化学习算法而开发。它支持多种强化学习算法,包括Q-learning、SARSA、Deep Q-Network (DQN)、Policy Gradients、Actor-Critic 方法(如A2C和A3C)、Proximal Policy Optimization (PPO) 和Soft Actor-Critic (SAC)等,适用于解决连续和离散动作空间、基于模型和无模型的强化学习问题。以下是该工具箱的一些主要特点和组件:
主要功能
-
环境交互:工具箱提供了与自定义环境或预定义环境(如OpenAI Gym、Simulink模型、MATLAB/Simulink环境)交互的能力,方便用户测试和训练强化学习算法。
-
算法库:内置多种强化学习算法,用户可以直接调用这些算法,通过配置参数进行定制化训练,而无需从头编写算法代码。
-
网络架构设计:针对深度强化学习,工具箱支持通过深度学习工具箱(Deep Learning Toolbox)设计和训练神经网络,作为智能体的策略或价值函数近似器。
-
策略和价值函数可视化:提供了丰富的可视化工具,帮助用户理解智能体学习过程中的决策策略和价值函数的变化,有利于调试和优化。
-
训练与仿真:支持批量训练和并行计算加速,利用MATLAB的Parallel Computing Toolbox和GPU资源,提高训练效率。
-
超参数调整:内置的超参数优化工具,如Bayesian Optimization,可以帮助自动寻找最优的超参数组合,提升算法性能。
-
模型预测控制器集成:可以将训练好的强化学习策略集成到Model Predictive Control (MPC)框架中,实现更复杂的控制策略。
在本课题中,用到的强化学习工具箱程序如下:
% 使用环境的观察和动作规格创建Q表
qTable = rlTable(getObservationInfo(env),getActionInfo(env));
% 创建表型表示并设置学习率为0.5
tableRep = rlRepresentation(qTable);
tableRep.Options.LearnRate = 0.5;
% 基于此表征创建Q学习智能体,配置epsilon贪心策略
agentOpts = rlQAgentOptions;
agentOpts.EpsilonGreedyExploration.Epsilon = 0.04; % 探索率
qAgent = rlQAgent(tableRep,agentOpts);
%%%% 训练Q学习智能体
% 设置训练选项
trainOpts = rlTrainingOptions;
trainOpts.MaxStepsPerEpisode = 100; % 每个回合最大步数
trainOpts.MaxEpisodes = 400; % 最大训练回合数
trainOpts.StopTrainingCriteria = "AverageReward"; % 停止训练的标准
trainOpts.StopTrainingValue = 40; % 达到此平均奖励时停止
trainOpts.ScoreAveragingWindowLength = 30; % 平均奖励计算的窗口长度
% 开始训练智能体
trainingStats = train(qAgent,env,trainOpts);
up4103