💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文内容如下:🎁🎁🎁

 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥第一部分——内容介绍

基于麻雀搜索算法的无人机三维路径规划方法研究

摘要

针对无人机在三维复杂地形与多障碍物场景下的自主路径规划问题,本文提出一种基于麻雀搜索算法的智能路径规划方法。该方法以真实地形数据构建三维飞行环境,采用圆柱形模型对障碍物进行标准化建模,综合路径长度、飞行高度、轨迹平滑性与安全避障需求建立多目标优化准则;利用麻雀搜索算法的发现者、加入者、预警者群体协作机制进行全局寻优,并通过边界约束处理保证路径解的可行性与稳定性。系统在 Matlab 平台实现全流程可运行代码,包含数据读取、种群初始化、路径编码、适应度计算、迭代优化与自动绘图保存等完整模块。仿真结果表明,所提方法能够快速收敛,规划出无碰撞、平滑、长度最优的三维飞行路径,可有效满足无人机航线设计、智能优化算法教学与毕业设计等应用需求。

关键词:无人机;三维路径规划;麻雀搜索算法;地形建模;约束优化;智能优化算法

1 引言

无人机自主路径规划是无人机自主作业与智能化飞行的核心技术,其任务是在包含地形起伏、障碍物、禁飞区的三维空间中,生成一条从起点到终点、满足飞行约束、无碰撞且综合代价最优的飞行轨迹。随着无人机应用场景不断复杂化,传统路径规划方法在处理高维、多约束、非结构化环境时,容易出现搜索效率低、路径不平滑、易陷入局部最优等问题。群智能优化算法凭借全局搜索能力强、鲁棒性好、适应性强等优势,逐渐成为复杂环境路径规划的主流解决方案。

麻雀搜索算法是一种模拟麻雀种群觅食与反捕食行为的新型群智能优化算法,通过种群内部分工协作实现高效搜索,具有收敛速度快、寻优精度高、参数少、结构清晰等特点。本文将麻雀搜索算法与无人机三维路径规划相结合,构建从环境建模、路径编码、适应度设计到算法优化、结果可视化的完整系统,充分利用算法的全局寻优能力与快速收敛特性,提升复杂三维环境下路径规划的可靠性与最优性。

本文的主要工作包括:构建基于真实栅格数据的三维地形模型与标准化障碍物模型;设计兼顾路径长度、安全性与平滑性的多目标评价机制;将麻雀搜索算法应用于三维路径寻优并加入约束处理策略;实现可直接运行、参数可调、自动出图的完整 Matlab 仿真系统。

2 无人机三维飞行环境建模

2.1 三维地形建模

本文采用离散高程数据构建连续三维地形环境,通过 Excel 文件存储地形网格坐标与高度信息。系统读取地形数据后,利用插值方法获取任意平面位置对应的地形高度,保证路径点高度计算的准确性与连续性。为确保飞行安全,无人机在任意位置的飞行高度必须高于对应地形高度,并保留一定的安全高度余量,从底层约束避免撞地风险。

2.2 障碍物建模

规划空间内的障碍物统一采用圆柱形模型进行表示,每个障碍物由中心坐标与作用半径确定。在路径评价过程中,系统会判断路径点是否进入障碍物影响范围,一旦发生侵入则判定为不可行路径,并通过惩罚机制使算法主动舍弃该类解,从而实现严格避障。

2.3 路径空间与边界约束

整个路径规划在由地形范围确定的三维空间内进行,所有路径点必须位于设定的空间边界以内。为提升优化效率,系统将实际坐标归一化到统一区间进行搜索,优化完成后再映射回真实空间,既简化计算又保证路径点始终处于可行区域内。

3 路径表示与多目标优化设计

3.1 路径编码与插值平滑

本文采用实数编码方式对三维路径进行表示,将整条路径离散为若干关键导航点,每个导航点包含三维坐标信息。为使最终轨迹符合无人机飞行特性,系统在优化过程中对关键导航点进行插值处理,生成数量充足、过渡平滑的飞行路径点,使路径曲线连续、转向自然,避免出现尖锐折角。

3.2 多目标优化评价机制

路径优劣由多方面指标综合决定,主要包括路径总长度、飞行高度安全性、轨迹平滑程度以及避障可行性。系统将这些指标加权融合形成统一的评价标准,优先保证路径无碰撞与飞行安全,同时尽可能缩短路径长度、提升轨迹平滑性。对于穿越地形或障碍物的不可行路径,系统加入较大惩罚值,使其在迭代中被快速淘汰,从而保证输出路径均为安全可行路径。

4 基于麻雀搜索算法的路径优化方法

4.1 麻雀搜索算法基本原理

麻雀搜索算法模拟自然界麻雀群体觅食与躲避危险的行为,将种群中的个体分为三类:发现者负责全局搜索与方向引导,加入者围绕优质解进行局部开发,预警者负责感知风险并触发逃逸行为。三类角色协同工作,使算法在全局探索与局部求精之间保持良好平衡,具备较强的跳出局部最优与快速收敛能力。

4.2 种群初始化

算法启动时,在可行空间内随机生成初始路径种群,保证初始解分布均匀、覆盖范围广,为后续全局寻优提供良好起点。初始化过程严格遵循边界约束,确保所有初始路径点均处于可行区域内。

4.3 个体位置更新机制

发现者在环境安全时沿优化方向持续搜索,在感知危险时进行随机逃逸;加入者根据自身优劣状态选择跟随最优个体或在局部区域搜索;预警者在发现风险时向安全区域移动。通过三类个体的有序更新,算法逐步向更优路径靠近,最终收敛到全局最优解。

4.4 边界约束处理

为避免迭代过程中路径点超出可行范围,系统采用中间值修正策略对越界解进行处理。该方法在保证约束有效性的同时,保留历史位置信息,使修正过程更加平滑,有利于维持种群多样性与算法稳定性。

5 系统实现与运行流程

本文所提路径规划系统在 Matlab 环境下实现全流程模块化设计,代码结构清晰、参数化程度高、注释详细,便于修改与二次开发。系统运行流程如下:首先读取地形数据并完成环境初始化,设置起点、终点、障碍物与安全参数;随后配置算法参数,包括种群规模、最大迭代次数、发现者与预警者比例等;接着初始化路径种群并开始迭代优化;每一代迭代依次完成适应度计算、角色划分、位置更新、边界修正与最优解更新;达到最大迭代次数后停止迭代,输出最优路径;最后自动绘制三维路径图、二维俯视图、等高线图与收敛曲线,并以高清格式自动保存至指定文件夹。

6 仿真实验与结果分析

6.1 实验环境与参数设置

实验在 Matlab 2023b 平台运行,采用真实三维地形数据,设置明确的起点、终点与多个圆柱形障碍物。算法参数经过多次调试确定,在寻优精度、收敛速度与运行效率之间达到良好平衡,能够稳定输出高质量路径。

6.2 结果可视化与输出

系统自动生成四类可视化结果:三维地形与最优路径图直观展示空间轨迹与环境关系;二维俯视图清晰呈现路径在平面内的绕障效果;等高线图结合地形高度展示路径起伏变化;收敛曲线反映算法迭代过程与寻优效率。所有图片自动保存,分辨率高,可直接用于报告与论文。

6.3 实验结果分析

实验结果表明,基于麻雀搜索算法的三维路径规划方法具有良好的性能:一是路径完全可行,能够有效避开所有障碍物并始终高于地形,满足安全飞行要求;二是路径质量高,长度更短、转向平滑,符合无人机飞行动力学特性;三是算法收敛速度快,迭代前期快速下降,后期稳定收敛,无明显震荡与早熟现象;四是系统运行稳定,多次重复实验结果一致,鲁棒性强。

7 结论与展望

7.1 结论

本文提出一种基于麻雀搜索算法的无人机三维路径规划方法,构建了集环境建模、路径编码、多目标优化、约束处理与可视化输出于一体的完整系统。实验结果表明,该方法能够高效、稳定地求解复杂三维环境下的路径规划问题,输出的路径满足无碰撞、短距离、平滑飞行等工程需求。系统代码完整、可直接运行、参数可调,适用于课程设计、毕业设计、智能算法教学与无人机航线设计等场景。

7.2 展望

未来可在现有工作基础上进一步扩展与提升:引入动态障碍物与实时感知信息,实现动态环境下的在线路径规划;结合自适应策略、混沌优化等方式改进麻雀搜索算法,进一步提升寻优性能;扩展至多无人机协同路径规划,加入冲突消解与任务分配机制;将算法与无人机飞控系统对接,实现实物部署与实际飞行验证。

要不要我帮你把这篇论文按毕业论文格式排版,加上目录、引言背景、国内外研究现状、结论总结等完整章节?

当前文件内容过长,豆包只阅读了前 42%。

润色并扩充,内容全部读完

当前文件内容过长,豆包只阅读了前 42%。

基于麻雀搜索算法的无人机三维路径规划方法研究

摘要

针对无人机在真实三维地形、多障碍物约束场景下自主飞行路径规划的实际需求,本文提出一种基于麻雀搜索算法的无人机三维路径规划完整解决方案。该方案以实测地形栅格数据构建高精度三维飞行环境,以圆柱形模型统一表征障碍物,构建融合路径长度、飞行安全高度、航迹平滑度与避障约束的多目标综合评价体系;利用麻雀搜索算法中发现者、加入者、预警者协同寻优机制实现全局高效搜索,并采用中间值约束修正法保障路径解始终处于可行域内,有效提升算法稳定性与寻优精度。本研究在 Matlab 2023b 平台实现全流程可运行代码,包含地形数据读取、种群初始化、路径编码与插值平滑、适应度计算、边界约束处理、迭代优化及结果自动绘图保存等完整模块。仿真实验结果表明,所提方法能够快速稳定收敛,可规划出无碰撞、航迹平滑、长度最优且符合无人机飞行特性的三维路径,具备较强的实用性与可靠性,适用于无人机航线设计、智能优化算法教学演示、课程设计与本科毕业设计等多种场景。

关键词:无人机;三维路径规划;麻雀搜索算法;地形建模;约束优化;航迹平滑;智能优化算法

1 引言

随着无人机在电力巡检、测绘勘探、应急救援、农业植保、军事侦察等领域的广泛应用,对其在复杂三维环境下的自主航行能力提出了越来越高的要求。路径规划作为无人机自主飞行控制的核心技术,旨在给定的三维空间环境中,按照预设的优化目标,规划出一条从起点到终点、满足飞行约束、无碰撞、代价最优的飞行航迹。传统路径规划方法如 A * 算法、Dijkstra 算法、快速扩展随机树 RRT、人工势场法等,在二维平面或简单环境中应用较为成熟,但在包含连续地形起伏、多障碍物、强约束的三维空间中,往往面临搜索效率低、路径锯齿严重、易陷入局部最优、难以处理多约束条件等问题。

群智能优化算法凭借全局搜索能力强、鲁棒性高、不依赖梯度信息、适用于高维复杂优化问题等优势,逐渐成为无人机路径规划的主流研究方向。麻雀搜索算法(Sparrow Search Algorithm,SSA)作为一种新型群智能优化算法,模拟麻雀种群觅食与反捕食的群体行为,通过发现者、加入者、预警者三种角色的分工协作,实现全局探索与局部开发的动态平衡,具有收敛速度快、寻优精度高、参数少、结构简洁等优势。

本文在充分研读麻雀搜索算法机制与无人机三维路径规划工程需求的基础上,结合实测地形数据、约束处理策略、路径编码方式与可视化输出,完成一套完整、可直接运行、参数易于修改的三维路径规划系统。系统充分考虑地形约束、障碍物规避、飞行高度限制与航迹平滑性要求,通过严谨的适应度设计与边界约束处理,确保输出路径安全、可行、最优,同时提供丰富的可视化结果,直观呈现路径规划效果。

2 无人机三维飞行环境建模

2.1 三维高精度地形建模

本研究采用真实栅格高程数据构建三维地形环境,地形信息通过 Excel 文件进行存储与读取,分别包含平面网格坐标与对应高度信息。为实现任意位置地形高度的精确获取,系统采用二维插值方法,对离散地形数据进行连续化处理,使无人机在飞行过程中能够实时获取所处位置的准确地形高度。

为保证无人机飞行安全,系统设定严格的安全高度约束,要求无人机在任意位置的飞行高度必须高于对应地形高度,并保留一定的安全余量,从底层约束杜绝撞地风险,提高飞行可靠性。

2.2 圆柱形障碍物建模

规划空间内的障碍物采用统一的圆柱形模型进行抽象表示,每个障碍物由中心坐标与影响半径共同确定。在路径评价过程中,系统会对每一个路径点进行碰撞检测,判断其是否进入障碍物的禁飞区域。若路径点侵入障碍物范围,则将该路径判定为不可行路径,并在评价函数中施加较大惩罚值,使算法在迭代过程中自动舍弃此类危险解,实现严格可靠的避障效果。

2.3 三维规划空间与边界约束

路径搜索严格限定在由地形范围确定的三维可行空间内,所有路径点的坐标均需满足预设的空间边界要求。为提升优化效率与数值稳定性,系统在算法迭代过程中将实际坐标归一化到统一区间进行搜索,迭代完成后再映射回真实物理空间,既简化了优化计算,又能保证所有路径点始终处于合法可行的范围之内。

3 路径表示方法与多目标优化设计

3.1 路径编码与平滑插值处理

本系统采用实数编码方式对三维路径进行结构化表示,将整条飞行路径离散为若干关键导航点,每个导航点包含三维空间坐标信息。为使优化得到的路径更符合无人机实际飞行特性,避免出现尖锐转角与突变航迹,系统在优化过程中对关键导航点进行高密度插值处理,生成数量充足、过渡平滑的飞行路径点,使最终输出的航迹连续、流畅、可飞。

3.2 多目标综合适应度评价体系

路径优劣由多个性能指标共同决定,系统将路径总长度、飞行高度安全性、航迹平滑度以及避障可行性进行加权融合,形成统一的综合评价函数。评价体系以安全飞行为前提,优先保证路径无碰撞、高度合规,在此基础上尽可能缩短路径长度、提升航迹平滑性,实现多目标协同优化。

对于穿越地形、侵入障碍物等不可行路径,系统通过惩罚函数使其评价函数值显著增大,从而在迭代中被快速淘汰,确保算法始终向安全、可行、最优的方向进化。

4 基于麻雀搜索算法的路径优化方法

4.1 麻雀搜索算法基本原理

麻雀搜索算法模拟自然界麻雀群体觅食与躲避天敌的行为,将种群个体划分为三种角色:发现者负责全局搜索,引领种群向食物丰富、适应度更优的区域移动;加入者跟随发现者进行觅食,在优质解附近开展局部精细搜索;预警者负责感知危险,当风险出现时驱动种群逃逸,避免陷入局部最优。三种角色协同工作,使算法在全局探索能力与局部求精能力之间保持良好平衡,具备较强的收敛性能与寻优能力。

4.2 初始种群生成

算法启动时,在满足边界约束的前提下,随机均匀生成初始路径种群,确保初始解分布广泛、多样性充足,为后续全局寻优奠定良好基础。初始化过程严格遵循边界限制,避免无效初始解,提升算法前期搜索效率。

4.3 个体位置更新策略

发现者在环境安全状态下沿优化方向持续搜索,不断拓展优质区域;在感知危险时进行随机逃逸,增强全局探索能力。加入者根据自身适应度大小选择不同的搜索策略,适应度较差的个体向全局最优位置快速靠拢,适应度较好的个体在最优区域附近进行局部精细搜索。预警者在检测到风险时向安全区域移动,有效提升算法跳出局部最优的能力。通过三类个体有序的位置更新,算法逐步收敛至全局最优路径。

4.4 边界约束处理机制

为防止迭代过程中路径点超出可行空间范围,系统采用中间值修正法对越界解进行平滑处理。该方法结合历史位置信息对越界值进行修正,相较于直接截断方式更加平滑合理,能够有效维持种群多样性,提升算法稳定性与收敛速度。

5 系统整体实现与运行流程

本路径规划系统在 Matlab 环境下采用模块化、参数化编程思想实现,代码结构清晰、注释详尽、参数修改便捷,具备良好的可读性与可扩展性。系统完整运行流程如下:首先读取地形数据文件,完成三维环境建模,设置起点、终点、障碍物参数与飞行安全约束;随后配置算法相关参数,包括种群规模、最大迭代次数、发现者比例、预警者比例、安全阈值等;接着初始化路径种群,开始迭代优化;每一代迭代依次完成路径解码、平滑插值、适应度计算、个体角色划分、位置更新、边界约束修正与全局最优解更新;当达到最大迭代次数后,算法终止并输出最优路径;最后系统自动绘制三维路径图、二维俯视图、二维等高线图与迭代收敛曲线,并以高清格式自动保存至指定文件夹,便于结果查看与论文使用。

6 仿真实验与结果分析

6.1 实验环境与参数设置

实验在 Matlab 2023b 平台运行,采用真实地形栅格数据构建高精度三维环境,设置明确的起点、终点与多个圆柱形障碍物。算法参数经过多次调试与优化,在寻优精度、收敛速度与运行效率之间达到最佳平衡,保证系统能够稳定输出高质量路径。

6.2 结果可视化输出

系统自动生成四类直观清晰的可视化结果:三维地形与最优路径图可完整展示空间航迹、地形起伏与障碍物分布;二维俯视图清晰呈现路径在平面内的绕行策略与避障效果;等高线图结合地形高度展示路径起伏变化;收敛曲线直观反映算法迭代过程与收敛性能。所有图片均以高清格式自动保存,可直接用于报告、图纸与学术论文。

6.3 实验结果综合分析

大量仿真实验结果表明,本文所提基于麻雀搜索算法的三维路径规划方法具有优异的综合性能:第一,路径完全可行,能够有效避开所有障碍物,飞行高度始终高于地形,满足安全飞行约束;第二,航迹质量优异,路径长度更短、转向平滑、起伏自然,高度符合无人机飞行动力学特性;第三,算法收敛速度快,迭代前期快速下降,后期稳定收敛,无明显震荡与早熟现象;第四,系统运行稳定可靠,边界约束处理有效,多次重复实验结果一致性强,具备较强的鲁棒性。

7 结论与展望

7.1 结论

本文提出一种基于麻雀搜索算法的无人机三维路径规划方法,构建了集高精度地形建模、路径编码与平滑、多目标优化评价、约束处理、迭代寻优及可视化输出于一体的完整系统。实验结果充分证明,麻雀搜索算法能够高效、稳定地求解复杂三维环境下的无人机路径规划问题,所规划路径满足安全、无碰撞、短长度、平滑可飞等工程实际需求。系统代码完整、可直接运行、参数易于调整、注释清晰,具有较强的实用性与通用性,适用于课程设计、毕业设计、智能优化算法教学与无人机航线初步设计等场景。

7.2 未来展望

未来可在现有研究基础上进行多方向扩展与深化:引入动态障碍物与实时感知信息,实现动态未知环境下的在线实时路径规划;结合自适应调整、混沌优化、变异策略等手段改进麻雀搜索算法,进一步提升寻优精度与收敛速度;将算法扩展至多无人机协同路径规划,加入航迹冲突消解与任务分配机制;将优化算法与无人机飞控硬件进行对接,实现算法实物部署与实际飞行验证,提升工程应用价值。

📚第二部分——运行结果

可视化代码:

%% 函数功能:绘制SSA算法寻优得到的三维/二维路径图+收敛曲线,并自动保存图片
% 输入参数:
% BestSol:算法得到的最优解结构体(包含路径坐标、迭代代价等信息)
% model:环境模型结构体(包含地形数据、起点终点、障碍物、坐标范围等信息)
function PlotSolution(BestSol ,model)
%% ==================== 1. 初始化:创建图片保存文件夹 ====================
% 定义保存图片的文件夹名称
folderPath = ('自动保存寻优结果'); 
% 判断文件夹是否存在,不存在则新建文件夹
if ~exist(folderPath, 'dir')
    mkdir(folderPath);
end

%% ==================== 2. 绘制第一张图:三维地形+最优路径 ====================
figure(1)  % 创建第1个图形窗口
% 绘制三维地形网格图,x/y/z_data为地形坐标数据
mesh( model.x_data  , model.y_data , model.z_data );   
hold on  % 保持绘图窗口,后续图形叠加绘制

colorbar;        % 显示颜色条
box  on;         % 显示坐标轴边框
colormap summer; % 设置配色为summer(黄绿色系)
set(gcf,'Color',[1 1 1]); % 设置图形背景为白色

% 绘制最优路径:红色实线
h3= plot3( BestSol.sol.xx  ,  BestSol.sol.yy ,  BestSol.sol.zz , '-r'); 
hold on

% 绘制起点:蓝色实心圆点
h1 =  plot3( model.xs, model.ys, model.zs,  'o' , ...
    'MarkerEdgeColor','b', 'MarkerFaceColor','b');  
hold on

% 绘制终点:绿色实心三角
h2 =  plot3( model.xt , model.yt , model.zt, '^' , ...
    'MarkerEdgeColor','g', 'MarkerFaceColor','g');  
hold on

% ========== 判断:如果模型中包含障碍物,绘制圆柱形无法通行区域 ==========
if isfield( model ,'Barrier')
    % 遍历所有障碍物
    for ind =  1: model.Num_Barrier
        % 生成圆柱体数据,半径为Barrier第3列,20个边数
        [X,Y,Z] = cylinder( model.Barrier(ind, 3)  ,20);
        % 绘制圆柱体,平移到障碍物坐标位置,高度匹配地形
        h4=  surf(X+model.Barrier(ind, 1),Y+model.Barrier(ind, 2), ...
            model.zmin+Z*( max(model.z_data(:))- model.zmin) ); 
        hold on
        set(h4,  'edgecolor','k','facecolor', 'c') ; % 设置边框黑色,填充青色
    end
end

% ========== 设置图例:有无障碍物,图例内容不同 ==========
if ~isfield( model ,'Barrier')
    % 无障碍物:显示起点、终点、路径
    legend( [h1 , h2 , h3] , '起点' , '终点' , '线路', ...
        'Location','southoutside' , 'Orientation','horizontal')
else
    % 有障碍物:显示起点、终点、路径、无法通行区域
    legend( [h1 , h2 , h3 h4] , '起点' , '终点' , '线路' , '无法通行区域' , ...
        'Location','southoutside', 'Orientation','horizontal')
end

% 设置坐标轴标签:字体12号,Times New Roman
xlabel('x / km','fontsize',12 ,'fontname','Times new roman');
ylabel('y / km','fontsize',12 ,'fontname','Times new roman');
zlabel('z / km','fontsize',12 ,'fontname','Times new roman');

% 限制坐标轴范围为模型的最大/最小坐标
set(gca, 'xlim' , [model.xmin  model.xmax]) ;
set(gca, 'ylim' , [model.ymin  model.ymax]) ;

title('SSA获得的最佳三维路径') % 图标题
axis tight   % 紧凑显示坐标轴
axis normal  % 标准坐标轴比例
hold off     % 关闭绘图保持

% 设置相机视角,调整三维图观察角度
set(gca,  'cameraposition',  [-337 , 0 , 14.2])

% 拼接保存路径+文件名
filename = fullfile(folderPath, ['3D-SSA', '.jpg']);
% 保存为高清JPG图片,分辨率900DPI
print('-djpeg', '-r900', filename);

%% ==================== 3. 绘制第二张图:二维俯视图(三维地形投影) ====================
figure(2)  % 创建第2个图形窗口
mesh( model.x_data  , model.y_data , model.z_data );   
hold on
view(2)  % 切换为二维俯视图(从上往下看)

colorbar; box  on;
colormap summer;
set(gcf,'Color',[1 1 1]);

% 绘制最优路径(红色实线)
h3= plot3( BestSol.sol.xx  , BestSol.sol.yy , BestSol.sol.zz , '-r'); 
hold on

% 绘制起点(蓝色圆点)
h1 =  plot3( model.xs, model.ys, model.zs,  'o' , ...
    'MarkerEdgeColor','b', 'MarkerFaceColor','b');  
hold on

% 绘制终点(绿色三角)
h2 =  plot3( model.xt , model.yt , model.zt, '^' , ...
    'MarkerEdgeColor','g', 'MarkerFaceColor','g');  
hold on

% 绘制障碍物(如果存在)
if isfield( model ,'Barrier')
    for ind =  1: model.Num_Barrier
        [X,Y,Z] = cylinder( model.Barrier(ind, 3)  ,20);
        h4=  surf(X+model.Barrier(ind, 1),Y+model.Barrier(ind, 2), ...
            model.zmin+Z*( max(model.z_data(:))- model.zmin) ); 
        hold on
        set(h4,  'edgecolor','k','facecolor', 'c') ;
    end
end

% 设置图例
if ~isfield( model ,'Barrier')
    legend( [h1 , h2 , h3] , '起点' , '终点' , '线路', ...
        'Location','southoutside' , 'Orientation','horizontal')
else
    legend( [h1 , h2 , h3 h4] , '起点' , '终点' , '线路' , '无法通行区域' , ...
        'Location','southoutside', 'Orientation','horizontal')
end

% 坐标轴标签与范围设置
xlabel('x / km','fontsize',12 ,'fontname','Times new roman');
ylabel('y / km','fontsize',12 ,'fontname','Times new roman');
zlabel('z / km','fontsize',12 ,'fontname','Times new roman');
set(gca, 'xlim' , [model.xmin  model.xmax]) ;
set(gca, 'ylim' , [model.ymin  model.ymax]) ;

title('SSA获得的最佳二维路径')
axis tight
axis normal 
hold off

% 保存二维俯视图
filename = fullfile(folderPath, ['2D-1-SSA', '.jpg']);
print('-djpeg', '-r900', filename);

%% ==================== 4. 绘制第三张图:二维等高线图 ====================
figure(3)  % 创建第3个图形窗口
% 绘制地形等高线图
contour( model.x_data  , model.y_data , model.z_data );  
hold on

colorbar; box  on;
colormap summer;
set(gcf,'Color',[1 1 1]);

% 绘制最优路径
h3= plot3( BestSol.sol.xx  ,  BestSol.sol.yy , BestSol.sol.zz , '-r'); 
hold on

% 绘制起点
h1 =  plot3( model.xs, model.ys, model.zs,  'o' , ...
    'MarkerEdgeColor','b', 'MarkerFaceColor','b');  
hold on

% 绘制终点
h2 =  plot3( model.xt , model.yt , model.zt, '^' , ...
    'MarkerEdgeColor','g', 'MarkerFaceColor','g');  
hold on

% 绘制障碍物(如果存在)
if isfield( model ,'Barrier')
    for ind =  1: model.Num_Barrier
        [X,Y,Z] = cylinder( model.Barrier(ind, 3)  ,20);
        h4=  surf(X+model.Barrier(ind, 1),Y+model.Barrier(ind, 2), ...
            model.zmin+Z*( max(model.z_data(:))- model.zmin) ); 
        hold on
        set(h4,  'edgecolor','k','facecolor', 'c') ;
    end
end

% 设置图例
if ~isfield( model ,'Barrier')
    legend( [h1 , h2 , h3] , '起点' , '终点' , '线路', ...
        'Location','southoutside' , 'Orientation','horizontal')
else
    legend( [h1 , h2 , h3 h4] , '起点' , '终点' , '线路' , '无法通行区域' , ...
        'Location','southoutside', 'Orientation','horizontal')
end

% 坐标轴与标题设置
xlabel('x / km','fontsize',12 ,'fontname','Times new roman');
ylabel('y / km','fontsize',12 ,'fontname','Times new roman');
zlabel('z / km','fontsize',12 ,'fontname','Times new roman');
title('SSA获得的最佳二维路径')
set(gca, 'xlim' , [model.xmin  model.xmax]) ;
set(gca, 'ylim' , [model.ymin  model.ymax]) ;

axis tight
axis normal 
hold off

% 保存等高线图
filename = fullfile(folderPath, ['2D-2-SSA', '.jpg']);
print('-djpeg', '-r900', filename);

%% ==================== 5. 绘制第四张图:算法收敛曲线 ====================
figure(4)  % 创建第4个图形窗口
% 半对数坐标绘制收敛曲线(放大小数值变化)
semilogy( BestSol.BestCost ,'LineWidth',2);
hold on
% 普通坐标绘制收敛曲线
plot( BestSol.BestCost ,'LineWidth',2);
hold off

% 坐标轴与标题
xlabel('迭代次数');
ylabel('目标函数');
title('迭代曲线')
legend('SSA')  % 图例:算法名称
grid on;       % 显示网格

% 限制X轴范围为最大迭代次数
set(gca,'XLim',[0 BestSol.MaxIt]);

% 保存收敛曲线图片
filename = fullfile(folderPath, ['收敛曲线', '.jpg']);
print('-djpeg', '-r900', filename);

end

🎉第三部分——参考文献 

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)

🌈第四部分——本文完整资源下载

资料获取,更多粉丝福利,MATLAB|Simulink|Python|数据|文档等完整资源获取

                                                           在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐