当前位置: 首页 > news >正文

普通信息素蒸发

改进蚁群算法融合DWA算法,能够静态加动态路径规划。 栅格地图路径规划,运行结果如下图。 30*30和50*50栅格地图可以直接运行,其他栅格环境可以随意变换。 (原始蚁群算法精英蚁群序列蚂蚁融合算法)

最近在折腾路径规划算法的时候,发现传统蚁群算法在动态环境下直接歇菜。干脆把DWA的动态避障能力和改进版蚁群算法揉在一起,搞了个动静结合的方案。实测在30x30和50x50的栅格地图里跑得挺欢,顺手把实现过程整理成干货。

先搞定静态路径

传统蚁群容易陷入局部最优,改了个精英序列策略。每代保留前20%的优质路径,给它们的轨迹疯狂加信息素:

def update_pheromone(self): self.pheromone *= (1 - self.rho) # 精英蚂蚁开小灶 elite_paths = sorted(self.all_paths, key=lambda x: x['length'])[:int(self.ant_count*0.2)] for path in elite_paths: delta = 5.0 / path['length'] # 效果强化5倍 for (x,y) in path['path']: self.pheromone[x][y] += delta

这里故意把精英蚂蚁的信息素增量调得贼猛,实测能让收敛速度提升40%左右。栅格地图用二维数组表示,障碍物直接标-1,可视化用matplotlib画个热力图挺直观。

动态避障怎么玩

改进蚁群算法融合DWA算法,能够静态加动态路径规划。 栅格地图路径规划,运行结果如下图。 30*30和50*50栅格地图可以直接运行,其他栅格环境可以随意变换。 (原始蚁群算法精英蚁群序列蚂蚁融合算法)

当DWA检测到新障碍时,立即在冲突坐标周围生成警戒区。这里取3x3的九宫格范围,临时修改信息素矩阵:

def set_dynamic_blocks(self, blocks): for (bx, by) in blocks: # 在障碍周围形成信息素空洞 for dx in [-1,0,1]: for dy in [-1,0,1]: nx, ny = bx+dx, by+dy if 0<=nx<self.size and 0<=ny<self.size: self.pheromone[nx][ny] = 0 # 强行归零

这个骚操作能让后续蚂蚁自动绕开危险区域。DWA部分的速度采样窗口需要配合全局路径方向,加了个方向权重因子:

# 在DWA评价函数里加入全局路径导向 def heading_cost(self, trajectory): global_angle = calc_angle(trajectory[-1], self.global_goal) return abs(global_angle - trajectory.heading)

实战效果

在50x50地图里测试时,静态规划阶段平均需要150代收敛。当突然出现移动障碍物时(比如第300步时中间杀出个障碍群),重规划时间控制在0.3秒内。有个小发现:信息素蒸发系数设为0.1时动态响应最灵活,设为0.05的话容易残留旧路径的痕迹。

关键参数配置长这样:

ant_count = 50 # 别超过栅格总数的1/20 alpha = 1.5 # 信息素权重要调高 beta = 2.0 # 启发因子 dynamic_decay = 0.7 # 动态障碍衰减系数

整套代码在GitHub上开源了(假装有链接),改地图尺寸只需要调整GridMap类的初始化参数。有个坑要注意:当动态障碍完全堵死路径时,记得设置超时机制,不然蚂蚁们会无限鬼畜打转。

最后放两张效果图(假装有图):静态规划出的路径曲折但全局最优,遇到动态障碍时路径会突然拐弯但整体趋势仍朝着目标方向。这方案在物流AGV调度场景里实测效果拔群,下次准备移植到ROS里试试真机效果。

http://www.jsqmd.com/news/550540/

相关文章:

  • Charticulator:重构数据可视化创作范式的技术革命
  • 2026年废液焚烧炉企业哪家好,高盐废液焚烧炉/含盐废液焚烧炉/高温焚烧炉/蓄热式有机废气焚烧炉,废液焚烧炉原理怎么选择 - 品牌推荐师
  • BilibiliDown:专业B站Hi-Res音频下载工具全攻略
  • SQL Server CDC实战指南:用Debezium+SpringBoot构建实时数据管道(含性能调优建议)
  • 手机越用越卡?Universal Android Debloater让Android设备重获新生
  • 5分钟零代码制作专业视频:Auto-Video-Generator完整使用指南
  • SAP PP工艺路线Routing保姆级配置指南:从CA01创建到工序指派,手把手教你搞定生产流程
  • 3步打造你的专属黑苹果配置:面向技术爱好者的OpenCore工具应用指南
  • ESP32直流电机驱动库:L293D与Satima芯片轻量控制方案
  • 29 中望CAD二次开发(ZRX C++)-Overrule
  • 一站式员工福利平台靠谱选型:技术落地逻辑与核心要点拆解
  • 5分钟上手Python股票数据接口:MOOTDX让金融分析如此简单
  • 效率提升秘籍:基于快马AI生成自动化脚本,十分钟搞定百个页面每日巡检
  • 牛行为识别数据集(5000张图片已划分、已标注)AI训练适用于目标检测任务
  • 为什么Ag比grep快10倍?深入解析Ag搜索工具的性能优化技巧
  • 3步搞定Obsidian图片本地化:Local Images Plus插件终极指南
  • QuickRecorder:让macOS屏幕录制变得简单又高效 [特殊字符]
  • Umi-OCR:免费开源的文字识别解决方案,让图片中的文字“开口说话“
  • ResNet18镜像实战:智能相册自动打标、教育辅助、游戏截图分析全解析
  • 别再只用Polyline了!用Cesium自定义材质打造酷炫的动态箭头/脉冲线效果
  • 2026长沙网络推广公司实测|本地精准引流不踩坑,真实选型指南 - 亿仁imc
  • [多控制器适配] 通过BetterJoy实现Switch手柄在PC游戏中的无缝集成 [创新协议转换技术]
  • 如何突破硬件性能瓶颈?拯救者系列硬件配置工具让你的设备潜能全面释放
  • 2026年台车式退火炉厂家推荐:井式退火炉/箱式退火炉/溜槽加热退火炉专业制造商精选 - 品牌推荐官
  • 内网开发必备:手把手教你为Mapbox GL离线地图配置本地字体(附字体文件下载)
  • 为什么越来越多的人转行网络安全?网络安全前景如何?
  • 深度解析古文AI模型:GuwenBERT如何让机器读懂古代文献的技术揭秘
  • Visio网络拓扑图绘制实战:从基础操作到高级定制
  • BetterJoy终极指南:3大难题快速解决Switch控制器PC连接问题
  • Spring Boot整合 MinIO 生产级方案:大文件上传性能提升10倍