无人机3维路径规划,170余种优化算法随随意切换,详细对比实验,附Python代码

devtools/2025/3/19 3:32:24/

声明:对于作者的原创代码,禁止转售倒卖,违者必究!


本期代码,利用强大的python库——mealpy,实现无人机3维路径规划设计。可以非常方便的对比170种优化算法,让你的论文不再乏力!

mealpy库包含了170多个智能优化算法,其中包含一些原始算法和改进的算法。关于mealpy库的详细介绍,链接在这里:https://mealpy.readthedocs.io/en/latest/

本期代码实现功能:

图片

①3维无人机模型地图随意更改,可以随意增加障碍物,随意更改起始点位置;

②mealpy库中的170种算法都可以用到这个路径规划模型中;

③绘制了不同算法之间最佳短路径迭代曲线对比图

④绘制了3d模型下,无人机飞行轨迹对比图

图片

学会本期代码后,参考一些论文,还可以将改进的智能算法用于机器人路径规划中,突出改进智能算法的优势!

第一组实验:

采用北方苍鹰(NGO)、灰狼算法(GWO)、蜜獾算法(HBA)进行对比,收敛曲线如下,在经过两千次迭代后,灰狼算法寻得路径最短。

自动打印出结果:

三维路径规划示意图:

这么乍一看是不是以为这些路径线都穿过障碍物了,哈哈,其实不然,看下面这个动画,就能清楚的看到,每一个无人机路径都完美避开了障碍物!

第二组实验:

由于mealpy库切换算法非常简单,可以说你几秒钟就可以切换几个新算法!这么多的算法,随意切换!

#  为了方便算法调用,我把部分算法名字写在这里了 ,想要知道每个算法详情,请 参考 https://mealpy.readthedocs.io/en/latest/#  (BBO, BBOA, BMO, EOA, IWO, SBO, SMA, SOA, SOS, TPO, TSA, VCS, WHO)(CRO, DE, EP, ES, FPA, GA, MA)(BRO, BSO, CA, CHIO, FBIO, GSKA, HBO, HCO, ICA, LCO, QSA, SARO, SPBO, SSDO, TLO, TOA, WarSO)# (AOA, CEM, CGO, CircleSA, GBO, HC, INFO, PSS, RUN, SCA, SHIO)(ArchOA, ASO, CDO, EFO, EO, EVO, FLA, HGSO, MVO, NRO, RIME, SA, TWO, WDO)#  (ABC, ACOR, AGTO, ALO, AO, ARO, AVOA, BA, BeesA, BES, BFO, BSA, COA, CoatiOA, CSA, CSO, DMOA, DO, EHO, ESOA, #   FA, FFA, FFO, FOA, FOX, GJO, GOA, GTO, GWO, HBA, HGS, HHO, JA, MFO, MGO, MPA, MRFO, MSA, NGO, NMRA, OOA, PFA,#   POA, PSO, SCSO, SeaHO, ServalOA, SFO, SHO, SLO, SRSR, SSA, SSO, SSpiderA, SSpiderO, STO, TDO, TSO, WaOA, WOA, ZOA)#  AEO, GCO, WCA,HS

咱们再挑选三个对比一下吧!采用霜冰优化算法(RIME)、粒子群优化(PSO)、生物地理学优化算法(BBO)进行对比,收敛曲线如下,在经过两千次迭代后,霜冰算法寻得路径最短。

部分代码展示

from matplotlib.colors import LightSourceimport numpy as npimport randomimport mathfrom src.core.uav_setup import UAV_SetUpimport matplotlib.pyplot as pltfrom src.core.obj_fun import ObjFunfrom mealpy import GWO,HBA,BMO,NGO,IWO,TPO'''mealpy 这个包一定要装 2.5.3版本的哦!!! ''''''想要改地图,改起始点位置,在""uav_setup.py" 中修改'''#  为了方便算法调用,我把部分算法名字写在这里了 ,想要知道每个算法详情,请 参考 https://mealpy.readthedocs.io/en/latest/#  (BBO, BBOA, BMO, EOA, IWO, SBO, SMA, SOA, SOS, TPO, TSA, VCS, WHO)(CRO, DE, EP, ES, FPA, GA, MA)(BRO, BSO, CA, CHIO, FBIO, GSKA, HBO, HCO, ICA, LCO, QSA, SARO, SPBO, SSDO, TLO, TOA, WarSO)# (AOA, CEM, CGO, CircleSA, GBO, HC, INFO, PSS, RUN, SCA, SHIO)(ArchOA, ASO, CDO, EFO, EO, EVO, FLA, HGSO, MVO, NRO, RIME, SA, TWO, WDO)#  (ABC, ACOR, AGTO, ALO, AO, ARO, AVOA, BA, BeesA, BES, BFO, BSA, COA, CoatiOA, CSA, CSO, DMOA, DO, EHO, ESOA, #   FA, FFA, FFO, FOA, FOX, GJO, GOA, GTO, GWO, HBA, HGS, HHO, JA, MFO, MGO, MPA, MRFO, MSA, NGO, NMRA, OOA, PFA,#   POA, PSO, SCSO, SeaHO, ServalOA, SFO, SHO, SLO, SRSR, SSA, SSO, SSpiderA, SSpiderO, STO, TDO, TSO, WaOA, WOA, ZOA)#  AEO, GCO, WCA,HS# ... 其他导入保持不变 ...def set_seed(seed=None):    if seed is None:        seed = random.randint(0, 100000)    np.random.seed(seed)    random.seed(seed)    return seeddef configure_3d_axis(ax):    '''配置三维坐标轴参数'''    ax.grid(True, linestyle=':', alpha=0.6, color='slategray')    ax.xaxis.pane.set_facecolor('white')    ax.yaxis.pane.set_facecolor('whitesmoke')    ax.zaxis.pane.set_facecolor('ghostwhite')    ax.set_xlabel('X (m)', fontsize=12, labelpad=12)    ax.set_ylabel('Y (m)', fontsize=12, labelpad=12)    ax.set_zlabel('Altitude (m)', fontsize=12, labelpad=12)def draw_obstacles_3d(ax, obstacles):    """增强型三维障碍物绘制"""    ls = LightSource(azdeg=100, altdeg=45)    for x, y, h, r in obstacles:        # 柱体表面        theta = np.linspace(0, 2 * np.pi, 80)        z = np.linspace(0, h, 30)        theta, z = np.meshgrid(theta, z)        x_cyl = x + r * np.cos(theta)        y_cyl = y + r * np.sin(theta)        # 添加材质效果        shaded = ls.shade(z, cmap=plt.cm.Greys_r, vert_exag=0.2)        ax.plot_surface(x_cyl, y_cyl, z, facecolors=shaded,                        alpha=0.6, edgecolor='dimgray', linewidth=0.2)        # 顶部平台        theta = np.linspace(0, 2 * np.pi, 100)        x_top = x + r * np.cos(theta)        y_top = y + r * np.sin(theta)        ax.plot_trisurf(x_top, y_top, np.full_like(x_top, h),                        color='gray', alpha=0.6, edgecolor='k')

本期代码获取

点击下方阅读原文获取,或者复制链接跳转!

获取链接:https://mbd.pub/o/bread/aJaUmJxw

获取更多代码:


http://www.ppmy.cn/devtools/168230.html

相关文章

用Python玩转数据可视化:从创意到可解释性的完美结合

用Python玩转数据可视化:从创意到可解释性的完美结合 引言 在当今数据驱动的世界中,数据可视化已成为理解复杂现象的关键工具。它不仅帮助我们以更直观的方式呈现数据,还能激发洞察力和决策支持。然而,普通的数据可视化往往难以…

【计算机网络】浏览器组成、工作原理、页面渲染流程...

1、一个页面从输入URL到页面加载完的过程中都发生了什么? 不分析硬件层面,一个简化的过程: ① 在接收到用户输入的网址后,浏览器会开启一个线程来处理这个请求,对用户输入的URL地址进行分析判断,如果是H…

【自学笔记】Redis基础知识点总览-持续更新

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Redis基础知识点总览1. Redis简介2. Redis数据类型2.1 字符串(String)2.2 哈希(Hash)2.3 列表(List&…

《解锁华为黑科技:MindSpore+鸿蒙深度集成奥秘》

在数字化浪潮汹涌澎湃的当下,人工智能与操作系统的融合已成为推动科技发展的核心驱动力。华为作为科技领域的先锋,其AI开发框架MindSpore与鸿蒙系统的深度集成备受瞩目,开启了智能生态的新篇章。 华为MindSpore:AI框架的创新先锋…

T2.小牛架炮 - 美团机试真题题解

题目描述 在无限大的棋盘中有n个炮,第个炮的坐标是(xi,yi)。 已知每个炮的攻击方式是:先选一个攻击方向(上、下、左、右),该方向上看见的第一个棋子为“炮架”,该炮可以通过炮架攻击到炮架后面的棋子(只能攻击到炮架后面的第一个…

Python 基础知识整理笔记

闹麻了,因为各种原因,现在需要重新回顾一下Python,话不多说,开始吧 1. Python是解释型语言 && Python与C代码执行过程的区别: (1)C 源码(Source):C的…

PHP语言的开源贡献

PHP语言的开源贡献及其影响 引言 在互联网技术飞速发展的今天,开源软件已经成为了软件开发的重要组成部分。它不仅改变了我们开发和使用软件的方式,更在促进技术共享、推动创新和降低开发成本等方面发挥了重要作用。而在众多的开源项目中,P…

组播实验--IGMP、IGMP Snooping 及 PIM-DM 协议

4台路由器之间运行OSPF路由协议,均创建Loopback0,IP地址为10.0.x.x/32。4台路由器之间构成一个组播网络,AR1作为第一跳路由器连接组播源239.0.0.12,AR4作为最后一跳路由器连接组播组239.0.0.12的接收者,为了能够让组播…