ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

深度强化学习与经典算法对比:Matlab三维路径规划实战

深度强化学习与经典算法对比:Matlab三维路径规划实战 简介路径规划是智能机器人、无人机自主导航中的核心问题其目标是在复杂环境中快速生成从起点到终点的安全可行轨迹。传统方法中A星算法依赖于启发式搜索RRT凭借随机采样应对高维空间蚁群优化模拟群体智能人工势场则利用力场引导移动。然而在动态威胁与稀疏奖励场景下这些方法往往面临计算效率或局部最优的瓶颈。深度强化学习通过序贯决策建模让智能体在与环境交互中自主学习策略具备强泛化与实时决策潜力。本文以无人机三维避障为典型应用系统解析深度强化学习与A星、RRT、蚁群、人工势场的原理差异和互补性并基于Matlab环境探讨算法选型、奖励函数设计与对比评估方法为路径规划方向的工程实践提供可落地的参考框架。1. 一个毕设题目到底在做什么先把这个项目看穿先别急着打开代码这个题目里信息量其实很大。你手里这个“Matlab实现基于深度强化学习的三维路径规划算法设计”不是一个单一算法能交差的题目它是一个典型的对比验证型项目。核心是用深度强化学习方法作为主角但必须搭配A星算法、RRT算法、AOC算法蚁群优化、APF算法人工势场作为对照组或辅助模块最后在三维环境中统一评估。说白了毕设答辩时老师最常问的一句话就是“你的方法比别人好在哪里”——没有这些经典算法做基线你根本回答不了这个问题。整个项目可以从三个层面去理解第一层是环境三维空间怎么建模、威胁区怎么设置、起点终点怎么定义、代价函数怎么设计。这决定了所有算法跑在什么样的“世界”里。第二层是算法五种方法分别实现路径搜索。A星和RRT靠几何与采样AOC靠群体智能APF靠力场导航深度强化学习靠“试错神经网络”。第三层是评估把五种算法放在同样的地图上跑对比路径长度、规划时间、成功率、平滑度、避障能力这些指标再用图表说话。这个项目适合的人群很明确正在做机器人和无人机路径规划方向毕设/课程设计的学生尤其是遇到“算法对比改进”这类任务的人。如果你还停留在只会调用plot3画线的水平也可以从这套设计里学到一个完整的科研工作流——怎么建模、怎么对比、怎么把故事讲圆。我最初拿到这个题目时第一反应是代码注释明确写了要配AOC和APF说明这个项目的评价体系里“混合方法”和“消融实验”是重要加分项。很多做深度强化学习路径规划的学生只知道跑一个DDPG就结束完全没想过“为什么深度强化学习能赢过A星”这个问题结果答辩时就卡住了。这个题目的好处在于它逼着你把经典算法和前沿方法放在一起摩擦摩擦完了你才能说出个所以然。2. 算法选型背后的门道为什么非得这五家凑一桌2.1 四种经典算法的分类逻辑做三维路径规划算法家族谱系先理清楚不然你连参数调什么都搞不明白。A星属于搜索类它把空间离散化成栅格节点通过评估函数f(n)g(n)h(n)从起点向外扩展找到一条代价最小的节点链。RRT属于采样类它不去遍历整个空间而是随机撒点增量式构造一棵树直到树梢接近终点。AOC是群体智能类模拟蚂蚁觅食用信息素的正反馈机制在候选路径中筛选出最优路线。APF属于势场类把目标点设置成引力源、障碍物设置成斥力源让无人机顺着合力方向移动。这里有一个关键理解这四类算法本质上是四种不同的“搜索策略”。A星用启发式信息剪枝RRT用随机采样回避高维空间建模的麻烦AOC用正反馈把好路径的信息素浓度滚雪球APF则直接把几何距离和力场方向换算成运动指令。它们各自有命门A星在栅格分辨率高时计算量爆炸RRT收敛慢且路径抖动大AOC的参数敏感性极高APF会陷入局部极小值点。2.2 深度强化学习的角色定位深度强化学习把这个问题换了一个写法它不再显式地去“搜索”路径而是把路径规划建模成一个序贯决策问题。智能体无人机在每一时刻都有状态当前位置、速度、与目标距离、周围威胁信息然后输出动作下一时刻的速度或位移增量环境反馈一个奖励信号智能体通过最大化累计奖励来学习策略。具体到三维空间常用算法有DDPG、TD3、PPO、SAC这类连续动作空间的算法。毕设选择哪个我的建议是优先看你的动作维度如果动作是“三个方向的速度分量”DDPG和TD3是稳妥选择如果想快速收敛且超参数不敏感PPO的表现更稳定。我在实际对比中更倾向于TD3因为它解决了DDPG的过估计问题在避障密集场景下的震荡更少。但注意深度强化学习在三维路径规划里有一个痛点训练初期是纯随机策略智能体连目标方向都不知道靠随机动作探索出一个长航程的可行轨迹效率极低。所以很多毕设项目会引入“课程学习”——先在一个奖励稀疏的简单环境中预训练再逐步增加威胁密度。这一点后面我会在实操部分详细展开。2.3 毕设叙事逻辑对比体系和混合设计从毕设的叙事逻辑看五种算法的搭配不是随便堆的。A星提供最优性上限在栅格空间内如果启发函数一致它是最优的RRT提供高维空间的可行性下限AOC验证群体智能的三维适配度APF暴露局部极小值问题然后深度强化学习登场一方面靠神经网络的泛化能力应对复杂威胁区另一方面通过训练好的策略在毫秒级时间内给出决策。还有一条更进阶的路混合算法设计。常见做法是用RRT或A星生成一条初始路径把它作为深度强化学习奖励函数中的引导项reward shaping这样训练会快得多。或者反过来用深度强化学习在线调整APF的势场增益绕开局部极小值。这个设计是你论文里的亮点章节也是代码注释可以浓墨重彩的部分。我这里给一个结论性的建议如果你的毕设要求只是“完成设计对比”那五种算法各自独立实现就够如果你的毕设要求里有“改进”二字那一定要做至少一种混合方案否则深度强化学习部分很难体现出工程师价值。3. 三维环境建模是所有的地基地图和代价函数的设计3.1 栅格地图还是连续空间三维路径规划的第一步是建立仿真环境。Matlab里常用的方案有两种栅格法把三维空间离散成Nx * Ny * Nz的网格每个格子标记为可行/不可行/威胁等级。优点是A星好写缺点是分辨率越大内存开销越高。连续空间法把地图用障碍物列表球体、长方体、圆柱体描述路径规划算法直接在连续坐标里计算碰撞检测。RRT和APF天然适合这种表达深度强化学习也用这种环境更自然。我强烈建议你在毕设里选择混合表达障碍物用连续坐标的圆柱体/球体定义同时预处理一份栅格地图给A星用。理由很简单——五种算法放在同一张几何地图上才公平如果A星用的是栅格坐标RRT用的又是连续坐标最后对比路径长度时单位都对不齐。3.2 威胁区和禁飞区的数学化三维路径规划的难点在于威胁区域设计。最常见的是把威胁源建模成球形或圆柱形区域% 威胁区定义中心坐标 半径 威胁等级 obstacles [ 100, 100, 80, 30, 1; % [x, y, z, radius, level] 250, 180, 60, 40, 2; 400, 300, 120, 50, 3; ];路径点是否合法只需判断它到每个威胁区中心的距离是否大于半径。这里有个细节无人机本身的尺寸要折算进碰撞半径。比如无人机机翼展2米障碍物半径30米那实际碰撞距离是31米而不是30米。代码注释里如果没写这一点建议你补上这是一个很加分的“工程细节”。另外地图边界约束也不能漏。飞行区域的边界一般是[0, 500] x [0, 500] x [0, 200]路径点一旦越界就直接判为无效。在深度强化学习里这个约束可以体现为奖励惩罚越界扣分也可以体现为动作空间的裁剪clip。3.3 代价函数设计长度、安全、平滑三件套这是整个项目最核心的设计之一。路径规划的代价不能只看总长度否则所有算法都会贴着威胁区边缘走稍有偏差就撞上。我建议代价函数设计成加权和total_cost w1 * path_length w2 * threat_penalty w3 * smoothness_penalty;path_length相邻路径点的欧氏距离累加和。threat_penalty每个路径点的威胁暴露程度。可以定义成如果点进入威胁区半径1.5倍范围内代价随距离线性增长。smoothness_penalty相邻两段路径的转向角。转向角越大代价越高用来抑制“锯齿路径”。权重怎么设我建议一开始先设w11, w25, w30.2然后观察各算法生成的路径形态再调整。注意这个代价函数必须对所有算法一视同仁否则对比就没有意义。这也是你在论文里要写明的地方。4. 四种经典算法的Matlab实现细节都在注释里4.1 A星算法怎么扩展到三维A星在三维栅格里的扩展思路很简单但实现细节很容易踩坑。节点邻域从二维的4/8邻域变成三维的6/18/26邻域。6邻域是沿三个轴方向移动1步代价为126邻域包含对角方向代价是对角线长度。毕设里我建议使用26邻域它能保证路径不遗漏斜向的可行通道代价计算用norm(delta)即可。启发函数的选择也很重要。三维空间里用欧氏距离作为启发函数是最稳妥的因为它满足可采纳性 admissible保证A星找到的是最优路径。用曼哈顿距离会导致搜索节点过多计算太慢。一个经典的性能优化是使用**二叉堆Binary Heap**管理开放列表。Matlab虽然没有内置优先队列但可以用java.util.PriorityQueue接口或用heappush/heappop的自实现。这行改动对A星的速度影响巨大——地图规模到100x100x50时普通数组遍历的耗时是二叉堆的几十倍。路径平滑处理也要考虑。A星出来的路径仔细看会有“贴墙走”的情况原因是栅格移动路径天然有折角。一个简单的方法是在路径点序列上做拉普拉斯平滑new_point 0.5 * (points(i-1,:) points(i1,:));但平滑后要重新检查碰撞保证平滑后的点仍不进入威胁区。4.2 RRT实现从基础版本到RRT*改进RRT基础版本的思路非常直接从起点开始在三维空间里随机采样点x_rand在树上找最近的节点x_near沿方向步进step_size得到新点x_new检查x_near到x_new的连线是否碰撞没有碰撞就把新点加入到树中。循环往复直到新点距离终点小于阈值。实现时最关键的参数是步长。步长大收敛快但容易穿过狭窄通道步长小能找到精细路径但搜索速度慢。我的经验是设成地图最长边尺寸的2%~5%。如果地图是500x500x200步长设在10~25之间比较合适。RRT有一个著名的坑树虽然能到达终点附近但路径不是最优的。改进方法是RRT*在新节点加入后以半径r搜索附近节点重新选择父节点并重布线。这份代码里如果标注了RRT算法建议同时实现RRT*——因为答辩时老师看到你只有RRT而没有RRT*大概率会追问“如何保证路径渐进最优”。而RRT*的代码量只多30行性价比极高。目标偏置Goal Bias是另一个重要技巧。每次以5%~10%的概率直接采样终点而不是完全随机这样树会更快朝终点方向生长。不过偏置太大会让搜索丧失随机性在复杂障碍物环境中反而更容易卡住。4.3 AOC蚁群算法的三维实现要点蚁群算法在三维路径规划里的思路是先在空间中定义一组候选路径点比如在起点到终点的连线两侧撒若干可选的节点蚂蚁在这些节点之间按信息素浓度选择路径走完后根据路径质量释放信息素信息素随时间挥发下一轮蚂蚁会更倾向于选择“好路径”上的节点。核心参数有四个alpha信息素重要程度通常设为1。beta启发函数重要程度通常设为2~5。启发函数可以用下一段路径长度的倒数。rho信息素挥发速率通常取0.3~0.6。挥发太快历史经验被快速遗忘挥发太慢容易陷入局部最优。Q信息素总量常数影响收敛速度。三维场景下蚁群最大的问题是节点规模。如果每个维度设20个候选点那路径长度为20^38000种组合蚂蚁数量设50只、迭代次数设100轮勉强能收敛。如果分辨率提高计算量会指数级增长——这也是蚁群在三维规划里的天然瓶颈。一个实际建议蚁群的候选节点不要在全空间均匀撒而是以起点到终点的直线为轴在法平面内偏移生成。这样能大幅缩小搜索空间算法在100轮内基本能稳定收敛。4.4 APF人工势场绕不开的局部极小值问题人工势场法代码实现非常短核心就两个函数引力F_att k_att * (goal - pos)斥力F_rep k_rep * (1/d - 1/d0) * (1/d^2) * (pos - obstacle)/d。合力的方向就是当前的运动方向。但三维环境里有一个麻烦斥力场是多个威胁源的叠加。如果无人机同时处于多个威胁区附近合力可能指向一条非常歪斜的路径。更严重的是局部极小值问题——当引力与斥力大小相等方向相反时无人机就卡在原地。破解办法常见有几种加随机扰动检测到连续几步位置变化极小就给运动方向加上一个随机偏转。改进斥力函数在斥力中加入目标相对距离因子即(1/d - 1/d0)^2 * distance_to_goal^n这个改进能缓解目标不可达问题GNRON。与RRT混合当APF陷入局部极小值时切换到RRT搜索一个逃逸点再切回APF继续前进。在毕设里APF通常作为“对照组的对照组”——用来展示深度强化学习和混合算法对局部极小值的规避能力。所以APF部分不一定要做得完美但一定要在论文里“讲清楚问题”。5. 深度强化学习模块网络、奖励、训练流程5.1 状态空间与动作空间设置深度强化学习要想跑出理想效果状态空间的设计比网络结构更关键。我常用的是一个9维状态向量state [pos_x, pos_y, pos_z, ... % 当前位置 delta_x, delta_y, delta_z, ... % 相对目标的方向向量 nearest_threat_dist, % 最近威胁距离 speed]; % 当前速度这个设计的思路是让智能体知道“我在哪”“目标在哪”“危险有多近”“我走得有多快”。只给位置不给相对目标信息的话训练会极其缓慢因为智能体需要花大量时间自己摸索出“往目标方向走是对的”。动作空间我推荐设为3维连续量[vx, vy, vz]每个分量限定在[-2, 2] m/s。也可以输出目标位移量[dx, dy, dz]这样更像是规划层应该做的事情。注意动作输出后要加clip约束防止飞行器跑出地图边界。5.2 奖励函数的设计是成败关键奖励函数是深度强化学习的灵魂。我见过太多人卡在训练不收敛上其实不是算法问题而是奖励函数设计得让智能体完全摸不着头脑。我的奖励函数设计思路如下reward -w1 * step_penalty w2 * progress_bonus ... - w3 * threat_penalty w4 * goal_reward w5 * boundary_penalty;逐项解释step_penalty每走一步给一个小负奖励例如-0.01鼓励智能体尽快到达目标。progress_bonus对比这一步和上一步与目标的距离如果变近了就给正奖励。这个奖励能极大加速收敛属于**奖励塑形reward shaping**的标准做法。threat_penalty如果进入威胁区或距离威胁区太近给一个大负奖励例如-1到-5。goal_reward抵达终点时给100的正奖励。boundary_penalty撞到地图边界直接终止该回合并给-50。有一个细节必须注意奖励量级的比例。如果goal_reward是100step_penalty是-0.01那智能体可以为了到达目标让路径绕很远。如果期望路径更直可以把step_penalty调整到-0.1甚至-0.5让“绕路”的成本变高。5.3 训练流程与超参数建议我用TD3算法跑这个项目时训练超参数大致如下参数取值说明Actor学习率1e-4策略网络学习率Critic学习率1e-3价值网络学习率折扣因子gamma0.99越接近1越重视长期收益软更新系数tau0.005目标网络更新平滑度经验池容量1e6回放缓冲区大小批量大小256每次采样的样本数探索噪声N(0, 0.1)动作噪声最大回合数2000训练总回合数每回合步数300超过则终止本回合训练时有一个经验法则前200个回合基本都在乱飞不要慌。在回合奖励曲线中你会看到前200回合奖励值在-300到-50之间波动这是策略网络在探索环境。大约在400~800回合后如果奖励函数设计没问题累计奖励会开始抬头逐步向正值靠近。训练过程中建议实时保存模型save(agent_td3.mat, agent);不然跑到第1300回合发现效果不错但断电没保存心态直接崩掉。5.4 用训练好的模型生成路径训练完成后把actor网络从强化学习agent里提取出来做“推理模式”的路径规划% 从初始状态开始 state resetState(env); max_step 300; path zeros(max_step, 3); for t 1:max_step action predict(agent.Actor, state); [next_state, reward, is_done] stepEnv(env, action); path(t, :) next_state(1:3); state next_state; if is_done, break; end end path path(1:t, :);注意一个坑训练时加了探索噪声推理时要置零噪声否则路径会有不必要的抖动。Matlab里用evaluatePolicy函数时不会加噪声但如果你是自己写的拿动作的逻辑务必手动关闭噪声。6. 实操过程从空项目到能出图的完整流程6.1 环境准备与工程结构Matlab版本建议R2021b以上深度学习工具箱和强化学习工具箱必须要装。rlTD3Agent这个函数在R2020a后已经内置所以你不用手写TD3的更新逻辑当然毕设如果想加分可以自己实现一遍但工作量会大很多。工程目录建议这样组织project/ ├── main.m % 主程序跑对比实验 ├── env/ │ ├── createEnv.m % 创建三维环境 │ ├── resetState.m % 重置无人机状态 │ └── stepEnv.m % 环境转移函数 ├── algorithms/ │ ├── aStar3D.m % 三维A星 │ ├── rrtStar3D.m % RRT*算法 │ ├── aco3D.m % 蚁群算法 │ ├── apf3D.m % 人工势场 │ └── trainTD3.m % 深度强化学习训练脚本 ├── evaluate/ │ ├── compareAll.m % 统一对比 │ └── plotResults.m % 画图 └── utils/ ├── checkCollision.m % 碰撞检测 └── computeSmoothness.m % 平滑度计算这个结构清晰答辩时PPT里的“系统架构图”直接可以画成这个目录树。6.2 碰撞检测函数的高效写法碰撞检测是所有算法都要反复调用、最影响性能的函数。一个低效的写法是每个点都遍历所有威胁区function is_collision checkCollision(pos, obstacles) is_collision false; for i 1:size(obstacles, 1) if norm(pos - obstacles(i, 1:3)) obstacles(i, 4) margin is_collision true; return; end end end当路径点个数是几千、威胁区个数是几十时这个函数会成为瓶颈。优化办法有两个先粗判再精判如果坐标差的绝对值已经超出威胁半径直接跳过。向量化对一批路径点一次性用矩阵运算判断function collide checkCollisionBatch(path, obstacles) dx path(:,1) - obstacles(:,1); % NxM 矩阵 dy path(:,2) - obstacles(:,2); dz path(:,3) - obstacles(:,3); dist sqrt(dx.^2 dy.^2 dz.^2); collide any(dist (obstacles(:,4) margin), 2); end运行速度能快一个数量级尤其是RRT这种需要反复判断大量采样的算法。6.3 统一对比评估模块五种算法全部跑完后评估部分需要输出一组量化指标路径总长度所有相邻节点距离之和。规划时间从算法启动到返回完整路径的耗时。成功/失败是否成功找到从起点到终点的可行路径。安全性统计路径与威胁区的最小距离。平滑度计算所有转折角的平均值用转向角的标准差来评价路径的稳定性。metrics struct(); metrics.length sum(sqrt(sum(diff(path).^2, 2))); metrics.time toc; metrics.min_threat_dist min(min(dist_path_to_obstacles)); metrics.smoothness std(diff(atan2(diff(path(:,2)), diff(path(:,1)))));画图部分用plot3画出各算法的路径配合sphere画出威胁区最后加一个legend。三维图要注意设置视角view(45, 30); grid on; xlabel(X (m)); ylabel(Y (m)); zlabel(Z (m)); title(三维路径规划算法对比);6.4 仿真结果的解读套路我可以直接告诉你最终结果大概率长这样A星在密集栅格上路径长度最短但规划时间较长RRT*路径长度略长但规划时间极短AOC收敛后路径质量不错但前期参数敏感、时间最久APF秒出路径但经常卡在局部极小值导致失败深度强化学习训练完成后规划时间极短、路径平滑度和安全性综合最优。这个结果足够支撑你的毕设了。但记住在论文里一定要写明深度强化学习的优势不在“路径最短”而在“规划即时性环境适应性”。因为训练是在离线阶段完成的在线规划时只需要一次前向传播这个特性在动态环境下非常关键——这也是它和A星这类全局规划方法的定位差异。7. 踩坑记录与调试心得代码注释不会告诉你的那些事7.1 训练不收敛、奖励曲线不动这个是我见过最多人卡住的地方。先别怀疑TD3算法本身先检查奖励值范围是否合理。我调试时习惯在stepEnv里加一行fprintf(reward%.2f\n, reward)跑几个回合看奖励分布的形态。如果每一回合都在-300以下说明智能体一直在碰壁或超步数奖励函数里的引导项progress_bonus不够强。如果训练曲线在前100回合有上升但迅速平台化大概率是探索噪声太小策略没有充分尝试新动作。把噪声标准差调大到0.2~0.3再观察100回合。另一个常见陷阱状态没有归一化。把位置坐标从0~500直接喂给网络神经网络会很难学。强烈建议所有状态分量归一化到[-1,1]或[0,1]区间比如位置除以地图最大尺寸、速度除以速度上限。7.2 RRT路径出现穿墙/穿障碍现象RRT的碰撞检测只检查了x_near到x_new之间的连线但如果步长大x_new已经越过了一堵薄墙连线恰好没碰到障碍物的边界——这种情况反直觉但确实会发生。解决方法是在连线中间再细分几个点进行碰撞检测n_interp 10; interp_points linspace(0, 1, n_interp); for k 1:n_interp mid x_near (x_new - x_near) * interp_points(k); if checkCollision(mid, obstacles) % 不可行 break; end end细分点数量设为10通常是够用的如果障碍物边缘非常薄可以增加到20。7.3 AOC收敛到同一条路径出不来蚁群算法最怕的就是前期信息素全部堆积在某些局部最优路径上其他路径完全被忽略。我的经验是信息素初始化值不能为零或极小值否则算法约等于“零索引”。初始信息素设成tau0 1 / (C_nn)其中C_nn是最近邻启发式生成的路径长度。这样每只蚂蚁一开始对各条候选路径都有一定倾向不会过早锁死。7.4 APF在终点附近震荡下不去APF的一个经典bug目标点离威胁区太近导致无人机在目标点附近受到斥力大于引力一直震荡。这就是我之前提到的GNRON问题。解决方式是改进斥力函数给斥力乘上(dist_to_goal)^nn取2或3。当无人机越来越接近目标时斥力快速衰减为0这样“目标点附近等于没有斥力”问题就消失了。7.5 深度强化学习推理路径抖得厉害即使训练结束推理出来的路径也可能出现小锯齿。这不一定是训练问题而可能是动作输出频率太高、每次决策间隔太短。解决办法有规划时输出更长的航迹段每次决策输出未来3~5步的位移。推理结束后对路径做平滑但要注意再次检查碰撞。在奖励函数里加一个转向角惩罚项训练阶段就抑制高频率转向行为。7.6 Matlab版本兼容性这个项目对Matlab版本有要求。我用R2021b跑通后换到R2020a发现rlTD3Agent的参数接口名有差异深度学习网络层里fullyConnectedLayer没问题但rlAgentOptions的字段名需要调整。建议是从头到尾固定一个Matlab版本不要在写代码中途升级。如果换版本先跑一个最简单的rlTD3Agent官方demo通一遍再回到你的项目。8. 项目还能怎么往后扩展几个高性价比的方向如果你的毕设做完后还有余力或者你期望这个项目拿高分我有几个扩展方向可以给你参考动态环境让威胁区随时间移动或膨胀深度强化学习可以通过在线重规划应对变化而A星和RRT每次变化后需要完全重跑。这个对比做出来深度强化学习的优势会非常直观。多无人机协同把单机的状态从9维扩展成“自身状态其他无人机相对位置”奖励函数加上编队保持奖励。这是当前研究热点也是答辩时的加分项。真实地理数据接入把仿真里的威胁区替换成真实地形高程数据DEM用Matlab的readgeotable读入再做三维路径规划。这个贴近工程应用老师会认可。注意力机制或LSTM改进Actor网络输入历史轨迹的特征帮助智能体在部分可观测环境下更稳定地决策。这个改进点写论文时很好讲故事。但我的建议是先完成主项目跑完全部对比曲线再考虑扩展。扩展部分哪怕只有仿真截图也能作为“未来工作”写进论文。最后说一个我在实际调试中的体会这个项目的工作量分布大致是——环境搭建和代价函数设计占30%经典算法实现占30%深度强化学习训练占30%对比评估和绘图占10%。很多人总以为深度强化学习最难其实经典算法在三维空间的适配细节才最耗时。你把A星扩展到26邻域、把RRT改成RRT*、把APF的GNRON问题修掉这些基本功做好了深度强化学习反而只是锦上添花。但如果你一上来就只写深度强化学习不管那几个经典算法答辩时“对比基线缺失”这个问题会让你非常被动。代码注释这件事我也要单独说一句注释不是写给老师看的是写给三天后的自己看的。尤其是奖励函数各项权重的来由、每个算法的核心参数为什么取这个值这些不写清楚你隔两周再打开代码绝对一脸懵。相信我这个项目的代码量放到毕设里属于中等偏上但你调试时反复阅读自己代码的时间绝对超过写代码的时间。注释写到位这段时间能省一大半。本文还有配套的精品资源点击获取
返回列表