深夜撸代码突然发现个好玩的东西——萤火虫算法搞路径规划居然能整得跟游戏似的。这玩意儿不仅能自定义地图随时存档,还能动态改起点终点,简直是摸鱼必备神器(不是)
路径规划算法基于萤火虫算法的路径规划算法 本程序支持地图任意创建保存时点任意更改。 萤火虫算法Firefly Algorithm简称FA是一种基于模拟萤火虫的行为和交流方式的群体智能优化算法。 与其他优化算法相比萤火虫优化算法具有以下优点 并行性强萤火虫优化算法的计算过程中可以并行处理多个个体这意味着它的计算速度相对较快。 全局搜索能力强萤火虫优化算法引入了随机行为可以避免陷入局部最优解。 萤火虫之间通过发出光信号来吸引其他萤火虫并根据光信号的亮度来决定其移动方向从而实现全局搜索。 对问题空间连续性要求低萤火虫优化算法对问题的可行解表达形式没有过高的限制在离散和连续的问题空间中都能够灵活适应并有效寻找到合适的优化解。 算法参数设置相对简单相比其他复杂的优化算法萤火虫优化算法的参数设置相对简单不需要过多的调参工作。 可以应用于多种问题领域萤火虫优化算法在路径规划、组合优化、函数优化等问题领域都有广泛的应用具有较好的通用性和适应性。先整张地图试试水。咱直接写了个支持障碍物随机生成的地图类核心就一个二维数组class PathMap: def __init__(self, size20): self.grid [[0]*size for _ in range(size)] # 0可通行 1障碍 self.start (0,0) self.end (size-1, size-1) def add_obstacle(self, x, y): self.grid[x][y] 1 # 随手戳个障碍物 def save_map(self, filename): # 存成json方便随时改 with open(filename,w) as f: json.dump({grid:self.grid,start:self.start,end:self.end}, f)重点来了萤火虫的骚操作在于每只虫子都自带发光属性。亮度由路径长度决定越短的路径越亮class Firefly: def __init__(self): self.path [] # 走过的坐标序列 self.brightness float(inf) # 路径总长度 def update_brightness(self): total 0 for i in range(1, len(self.path)): # 简单粗暴的欧式距离 total ((self.path[i][0]-self.path[i-1][0])**2 (self.path[i][1]-self.path[i-1][1])**2)**0.5 self.brightness total if valid_path else float(inf)关键吸引力计算这块儿特别有意思——亮虫子会吸引暗虫子但吸引力随距离衰减。这里用了平方反比定律物理老师狂喜def attraction(firefly_a, firefly_b): distance np.linalg.norm(np.array(firefly_a.pos) - np.array(firefly_b.pos)) beta 1 / (1 0.1 * distance**2) # 衰减系数 return beta * (firefly_b.brightness - firefly_a.brightness)实际跑算法时最带感的还是移动过程。萤火虫不仅会被更亮的同伴吸引还会带点随机扰动防止集体智障卡在局部最优# 在算法主循环中 for i in range(n_population): if fireflies[i].brightness fireflies[j].brightness: # 朝着更亮的虫子移动 direction (fireflies[j].path - fireflies[i].path) * attraction_force # 加点随机扰动 fireflies[i].path direction alpha * np.random.randn()实测发现当遇到死胡同时随机扰动参数alpha调大点就能让虫子们踹门突围。曾经有个U型障碍测试案例传统A*直接懵逼萤火虫群硬是靠随机扰动把墙给蹭穿了。路径规划算法基于萤火虫算法的路径规划算法 本程序支持地图任意创建保存时点任意更改。 萤火虫算法Firefly Algorithm简称FA是一种基于模拟萤火虫的行为和交流方式的群体智能优化算法。 与其他优化算法相比萤火虫优化算法具有以下优点 并行性强萤火虫优化算法的计算过程中可以并行处理多个个体这意味着它的计算速度相对较快。 全局搜索能力强萤火虫优化算法引入了随机行为可以避免陷入局部最优解。 萤火虫之间通过发出光信号来吸引其他萤火虫并根据光信号的亮度来决定其移动方向从而实现全局搜索。 对问题空间连续性要求低萤火虫优化算法对问题的可行解表达形式没有过高的限制在离散和连续的问题空间中都能够灵活适应并有效寻找到合适的优化解。 算法参数设置相对简单相比其他复杂的优化算法萤火虫优化算法的参数设置相对简单不需要过多的调参工作。 可以应用于多种问题领域萤火虫优化算法在路径规划、组合优化、函数优化等问题领域都有广泛的应用具有较好的通用性和适应性。最后给个可视化效果plt.ion() # 开启交互模式 while True: plt.clf() plt.imshow(map.grid, cmapbinary) for firefly in swarm: x_coords [p[0] for p in firefly.path] y_coords [p[1] for p in firefly.path] plt.plot(y_coords, x_coords, alpha0.3) plt.pause(0.1) # 动态显示虫群移动看着一群光点在地图上蜿蜒爬行最后汇聚成一条最优路径这治愈程度堪比ASMR。不过要注意别让步长太大否则虫子们会像磕了药似的满屏乱窜别问我怎么知道的

相关新闻

Navicat试用期管理完全指南:从原理到实践

Navicat试用期管理完全指南:从原理到实践

Navicat试用期管理完全指南:从原理到实践 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 软件试用期管理是保障软件合法使用与功能体验平衡的重要环节。本文将系统介…

2026/7/4 14:57:17 阅读更多 →
Draw.io Mermaid插件:代码生成图表的颠覆式效率工具

Draw.io Mermaid插件:代码生成图表的颠覆式效率工具

Draw.io Mermaid插件:代码生成图表的颠覆式效率工具 【免费下载链接】drawio_mermaid_plugin Mermaid plugin for drawio desktop 项目地址: https://gitcode.com/gh_mirrors/dr/drawio_mermaid_plugin 手动调整图形位置浪费30%时间?团队协作时格…

2026/7/4 14:31:00 阅读更多 →
老旧电脑游戏性能提升方案:DXVK技术解析与实践指南

老旧电脑游戏性能提升方案:DXVK技术解析与实践指南

老旧电脑游戏性能提升方案:DXVK技术解析与实践指南 【免费下载链接】dxvk Vulkan-based implementation of D3D9, D3D10 and D3D11 for Linux / Wine 项目地址: https://gitcode.com/gh_mirrors/dx/dxvk 图形接口转换技术如何拯救低配置设备 当你尝试在老旧…

2026/5/17 4:08:32 阅读更多 →

最新新闻

AI工具链选型:GitHub Copilot与Cursor、Codeium企业开发场景实测对比

AI工具链选型:GitHub Copilot与Cursor、Codeium企业开发场景实测对比

AI工具链选型:GitHub Copilot与Cursor、Codeium企业开发场景实测对比 一、评测体系设计与方法论 AI编码助手已成为开发效率的关键杠杆。本次评测聚焦三项主流工具的实际表现。从四个维度建立可复现的量化评测框架。 %%{init: {theme: base}}%% radartitle AI编码助手…

2026/7/5 1:20:14 阅读更多 →
PyTorch 数据加载瓶颈:GPU 空等时先看 DataLoader

PyTorch 数据加载瓶颈:GPU 空等时先看 DataLoader

PyTorch 数据加载瓶颈:GPU 空等时先看 DataLoader 一、训练慢不一定是模型慢 PyTorch 训练时,很多人看到速度慢就先改模型、调 batch size、换显卡。但如果 GPU 利用率忽高忽低,可能瓶颈根本不在模型,而在数据加载。图片解码、文本…

2026/7/5 1:20:14 阅读更多 →
群晖DSM 7.2.2视频管理终极解决方案:免费恢复Video Station完整功能

群晖DSM 7.2.2视频管理终极解决方案:免费恢复Video Station完整功能

群晖DSM 7.2.2视频管理终极解决方案:免费恢复Video Station完整功能 【免费下载链接】Video_Station_for_DSM_722 Script to install Video Station in DSM 7.2.2 and DSM 7.3 项目地址: https://gitcode.com/gh_mirrors/vi/Video_Station_for_DSM_722 你是否…

2026/7/5 1:20:14 阅读更多 →
云原生可观测性:构建全链路监控体系

云原生可观测性:构建全链路监控体系

引言在微服务架构和容器化部署成为主流的当下,系统的复杂性呈指数级增长。一个请求可能跨越数十个服务实例,传统的日志查看和单点监控已无法满足故障排查的需求。云原生可观测性(Observability)应运而生,它通过Metrics…

2026/7/5 1:18:13 阅读更多 →
工训赛智能小车 PCB 自制指南:从 BTN7971B 四路驱动到主控布局的 5 个要点

工训赛智能小车 PCB 自制指南:从 BTN7971B 四路驱动到主控布局的 5 个要点

工训赛智能小车PCB设计实战:从四路驱动到主控布局的进阶指南在工程训练综合能力竞赛的智能物流搬运赛项中,一辆性能卓越的小车往往始于精良的PCB设计。当现成模块难以满足定制化需求时,自主设计PCB不仅能显著降低成本,更能实现整车…

2026/7/5 1:18:13 阅读更多 →
FastAPI零基础教程(八)- 后台任务、WebSocket与高级特性,半天吃透进阶能力

FastAPI零基础教程(八)- 后台任务、WebSocket与高级特性,半天吃透进阶能力

文章目录前言一、阶段学习目标(半天速成)二、核心一:BackgroundTasks 后台任务(解耦耗时操作)2\.1 核心原理2\.2 基础实战:简单后台任务2\.3 多任务叠加 \ 异步任务支持2\.4 关键避坑点(生产必看…

2026/7/5 1:18:13 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻