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

多目标点路径规划——蚁群+A*算法融合算法 解决室内旅行商问题 1 A*算法规划两两之间的路径...

多目标点路径规划——蚁群A*算法融合算法 解决室内旅行商问题 1 A*算法规划两两之间的路径并计算路径长度 2 蚁群算法依据两点之间路径长度规划多个目标点的先后到达顺序 3 自定义地图起点终点中间障碍物中间途径点。 有注释适合入门咱们直接撸袖子开干。室内路径规划这事儿说白了就是既要躲开障碍物又要以最短路线打卡所有目标点。下面这个方案把A*的精确路线和蚁群的全局规划揉在一起还挺有意思。先来整个能自定义的场地用二维数组表示贼直观custom_map [ [2, 0, 1, 0, 0], [0, 1, 0, 1, 4], [0, 0, 0, 1, 0], [4, 1, 0, 0, 0], [0, 0, 0, 1, 3] ]接下来是路径规划的老伙计A*算法。注意这里用了曼哈顿距离当启发函数适合网格地图def a_star(start, end, grid): # 优先队列存(预估总距离, x, y) heap [] heapq.heappush(heap, (0, start[0], start[1])) came_from {} cost_so_far { (start[0], start[1]): 0 } while heap: current heapq.heappop(heap) if (current[1], current[2]) end: break # 四个方向探路 for dx, dy in [(-1,0), (1,0), (0,-1), (0,1)]: nx, ny current[1]dx, current[2]dy # 边界和障碍检查 if 0nxlen(grid) and 0nylen(grid[0]) and grid[nx][ny] ! 1: new_cost cost_so_far[(current[1], current[2])] 1 if (nx, ny) not in cost_so_far or new_cost cost_so_far[(nx, ny)]: cost_so_far[(nx, ny)] new_cost priority new_cost abs(nx - end[0]) abs(ny - end[1]) heapq.heappush(heap, (priority, nx, ny)) came_from[(nx, ny)] (current[1], current[2]) # 回溯路径 path [] current end while current ! start: path.append(current) current came_from.get(current, None) if current is None: return [] # 路径不存在 path.append(start) return path[::-1]这里有个坑要注意——障碍物判断必须严格不然路径可能穿墙。咱们用曼哈顿距离加速搜索实际测试中发现对角线移动需求的话得换用欧氏距离。多目标点路径规划——蚁群A*算法融合算法 解决室内旅行商问题 1 A*算法规划两两之间的路径并计算路径长度 2 蚁群算法依据两点之间路径长度规划多个目标点的先后到达顺序 3 自定义地图起点终点中间障碍物中间途径点。 有注释适合入门拿到所有点对的路径后轮到蚁群算法安排访问顺序。初始化信息素矩阵时给必经点之间加点初始诱惑class AntColony: def __init__(self, points, distance_matrix, n_ants10, n_iter50, decay0.5): self.pheromone np.ones((len(points), len(points))) * 0.1 # 初始信息素 self.distance distance_matrix self.n_ants n_ants self.n_iter n_iter self.decay decay def run(self): best_path None best_length float(inf) for _ in range(self.n_iter): all_paths [] for _ in range(self.n_ants): path self.gen_path(0) # 假设起点是第一个点 total_len self.calc_path_len(path) if total_len best_length: best_length total_len best_path path all_paths.append( (path, total_len) ) self.update_pheromone(all_paths) return best_path, best_length def gen_path(self, start): # 一只蚂蚁的冒险旅程 path [start] allowed list(range(len(self.distance))) allowed.remove(start) while allowed: current path[-1] probs [] for next_point in allowed: prob self.pheromone[current][next_point] / self.distance[current][next_point] probs.append(prob) total sum(probs) probs [p/total for p in probs] chosen np.random.choice(allowed, pprobs) path.append(chosen) allowed.remove(chosen) return path信息素更新规则这里做了简化实际应用时可以加入精英蚂蚁策略。距离矩阵用A*算出来的实际路径长度填充这样蚂蚁就会更倾向于选择实际距离短的路线。最后整合这两个部分# 从地图中提取关键点 points extract_key_points(custom_map) # 预计算所有点对的A*路径 dist_matrix precompute_distances(points, a_star, custom_map) # 让蚂蚁开工 ant_colony AntColony(points, dist_matrix) best_order, min_len ant_colony.run() # 按顺序拼接A*路径 final_path [] for i in range(len(best_order)-1): final_path a_star(points[best_order[i]], points[best_order[i1]], custom_map)实测在5x5地图上50只蚂蚁迭代30次就能稳定找到最优路径。不过当途径点超过10个时计算时间会明显增加这时候可能需要上局部优化或者并行计算。代码里留了几个可调参数信息素挥发系数decay——控制算法收敛速度蚂蚁数量——影响搜索广度A*的启发函数权重——平衡速度与准确性最后吐槽下室内导航最大的变数其实是动态障碍物比如突然出现的人类这个方案暂时没考虑实时避障真要落地还得融合传感器数据做局部调整。

相关文章:

多目标点路径规划——蚁群+A*算法融合算法 解决室内旅行商问题 1 A*算法规划两两之间的路径...

多目标点路径规划——蚁群A*算法融合算法 解决室内旅行商问题 1 A*算法规划两两之间的路径,并计算路径长度; 2 蚁群算法依据两点之间路径长度,规划多个目标点的先后到达顺序; 3 自定义地图,起点,终点&#…...

Ostrakon-VL-8B提示词工程入门:如何设计指令让模型更懂餐饮需求

Ostrakon-VL-8B提示词工程入门:如何设计指令让模型更懂餐饮需求 你是不是也遇到过这种情况?给一个多模态模型看一张美食图片,问它“这是什么”,它可能只会回答“一张食物照片”。但如果你问“这张图里有哪些菜,大概要…...

【Java多线程】Volatile常见题目

围绕“volatile”的高频考题及详细解答 一、计算机编程领域(高频考点:Java/C/C++并发/编译优化) (一)选择题 在Java中,volatile关键字不能保证变量操作的哪个特性?( ) A. 可见性 B. 有序性 C. 原子性 D. 禁止指令重排序 答案:C 解析: Java的volatile核心保证2个特性…...

Android AVB2.0密钥管理实战:从生成RSA4096密钥到集成进系统镜像的完整流程

Android AVB2.0密钥管理实战:从生成RSA4096密钥到集成进系统镜像的完整流程 在Android设备安全体系中,Verified Boot(验证启动)是确保系统完整性的核心机制。作为其具体实现,Android Verified Boot 2.0(AVB…...

Xinference-v1.17.1保姆级教程:快速部署+WebUI聊天+API调用

Xinference-v1.17.1保姆级教程:快速部署WebUI聊天API调用 1. 认识Xinference:你的全能AI推理平台 Xinference(Xorbits Inference)是一个开箱即用的AI模型推理平台,它让运行各种开源大语言模型(LLM&#x…...

Linux 监控GPU使用情况

请问一下各位大佬,这个8卡4090是否只有编号为0、1、3、7的GPU在使用?...

如何快速部署Duix.Avatar开源数字人:5个步骤打造本地AI视频制作平台

如何快速部署Duix.Avatar开源数字人:5个步骤打造本地AI视频制作平台 【免费下载链接】Duix-Avatar 项目地址: https://gitcode.com/GitHub_Trending/he/Duix-Avatar 在数字化内容创作的新时代,开源数字人制作工具正成为内容创作者、教育工作者和…...

ICLR2022技术解析:AV-HuBERT如何通过多模态掩码预测革新语音视觉表征学习

1. AV-HuBERT:当语音识别遇上"读唇术" 想象一下这样的场景:在嘈杂的餐厅里,你完全听不清对面朋友在说什么,但看着他的嘴唇动作,你却能猜出大概意思。这种人类与生俱来的多模态信息处理能力,正是…...

Java异常处理的艺术与最佳实践,iOS26 打开开发者模式。

Java异常处理的艺术 异常处理是Java编程中不可或缺的一部分,合理的异常处理不仅能提升代码的健壮性,还能增强可维护性和可读性。以下是关于Java异常处理的核心原则和最佳实践。 理解异常类型 Java异常分为两大类:受检异常(Checked…...

GESP2026年3月认证C++五级( 第三部分编程题(1)有限不循环小数 )

🌟 题目:有限不循环小数(终止数)🧠 一、故事:糖果王国的除法魔法 🍬1、在“数学王国”里,有一种神奇的数字:👉 有些分数可以变成会停下来的小数 &#x1f449…...

从零部署【书生·浦语】internlm2-chat-1.8b:Ollama镜像免配置实操手册

从零部署【书生浦语】internlm2-chat-1.8b:Ollama镜像免配置实操手册 1. 快速了解internlm2-chat-1.8b模型 今天我们要一起部署的是书生浦语团队推出的internlm2-chat-1.8b模型,这是一个专门为对话场景优化的智能语言模型。这个模型最大的特点就是小而…...

Lingbot-Depth-Pretrain-ViTL-14 文化遗产数字化:为古建筑照片生成高精度3D模型

Lingbot-Depth-Pretrain-ViTL-14 文化遗产数字化:为古建筑照片生成高精度3D模型 1. 引言:当古建筑遇见AI 想象一下,你站在一座历经数百年风雨的古建筑前,用手机拍下几张照片。几个小时后,你就能在电脑上得到一个可以…...

Xshell下Ubuntu安装redis

更新软件源,确保安装包最新sudo apt update安装 Redis-Serversudo apt install redis-server -y验证 Redis 是否安装成功# 查看 Redis 服务状态 sudo service redis-server status# 或直接连接 Redis 测试 redis-cli如果 service redis-server status 输出里有 acti…...

SMS VoIP科普:打破通信壁垒的互联网短信新方式

在日常通信中,我们早已习惯用手机收发短信,而传统短信依赖运营商的蜂窝网络,不仅资费较高,还受设备和地域限制。如今,SMS VoIP的出现,彻底改变了短信的传输模式,让短信沟通变得更灵活、更高效。…...

西门子S7 - 200PLC与组态王构建自动化搬运机械手组态系统

西门子S7-200PLC和组态王自动化搬运机械手的组态系统在自动化控制领域,西门子S7 - 200PLC与组态王相结合来打造自动化搬运机械手的组态系统,是实现高效生产流程的关键一步。今天咱就唠唠这其中的门道。 西门子S7 - 200PLC基础 西门子S7 - 200PLC作为一款…...

地理信息安全在线培训考试系统注册指南(测绘涉密证)

地理信息安全在线培训考试系统注册流程,测绘资质申请必备,乙级要求至少1-8个人、投标加分、申请使用涉密基础测绘成果需要。那么如何测绘保密岗位培训呢 一、完善单位基本信息 二、填写公司档案制度文件,上传档案制度文件图片 三、档案机构…...

中国第14批算法备案深度解析,深入理解 Python `ssl` 库:安全通信的基石。

其他算法备案综合分析报告(截至第14批) 背景与政策框架 算法备案制度是中国在数据安全与算法治理领域的重要举措,依据《互联网信息服务算法推荐管理规定》等法规实施。截至第14批备案名单,累计备案算法数量显著增长,覆…...

模块?当做进程理解,你将豁然开朗

目录 一、为什么驱动开发中不能类似函数直接传参? 二、module_param的原理与使用 (1)代码示例与运行结果 (2)static与module_param的作用与原理 (3)最后一个参数与(伪&#xff…...

Qwen3.5-35B-A3B-AWQ-4bit多场景落地:农业病虫害图识别、法律文书图证分析

Qwen3.5-35B-A3B-AWQ-4bit多场景落地:农业病虫害图识别、法律文书图证分析 1. 引言:当AI学会“看图说话” 想象一下,你是一位农业技术员,在田间地头发现一片叶子有异常斑点,你掏出手机拍张照,上传到一个系…...

AI技术辅助下的软件工程学术论文创作与代码重现方法

文章总结表格(工具排名对比) 工具名称 核心优势 aibiye 精准降AIGC率检测,适配知网/维普等平台 aicheck 专注文本AI痕迹识别,优化人类表达风格 askpaper 快速降AI痕迹,保留学术规范 秒篇 高效处理混AIGC内容&…...

Windows系统优化咨询:Qwen3-0.6B-FP8解答C盘清理与更新管理问题

Windows系统优化咨询:Qwen3-0.6B-FP8解答C盘清理与更新管理问题 最近在折腾一个很有意思的AI小助手,它叫Qwen3-0.6B-FP8。别看它模型不大,但处理起日常问题来,思路特别清晰,像个经验丰富的电脑管家。正好手头有台Wind…...

如何开发一款企业级人才招聘系统?招聘APP源码与技术实现

博主介绍: 所有项目都配有从入门到精通的安装教程,可二开,提供核心代码讲解,项目指导。 项目配有对应开发文档、解析等 项目都录了发布和功能操作演示视频; 项目的界面和功能都可以定制,包安装运行&#xf…...

ONLYOFFICE 宏实战:从 VBA 迁移到 JavaScript 的自动化技巧

1. 为什么需要从 VBA 迁移到 JavaScript 宏? 如果你曾经在 Excel 里用过 VBA 宏,肯定体验过它带来的效率提升。但当你开始使用 ONLYOFFICE 时,会发现这个办公套件采用了完全不同的 JavaScript 宏系统。这就像开惯了手动挡汽车突然要换自动挡…...

swoole方案 统一鉴权与鉴权代理中心

<?php /*** 鉴权代理网关** 大白话流程&#xff1a;* 请求进来 → 验JWT → 通过了 → 转发给PHP-FPM后端* → 不通过 → 直接拒绝&#xff0c;后端根本看不到这个请求** 为什么这么做&#xff1a;* PHP-FPM 每个请求都要启动框架、连数据库验toke…...

别再让PID调参折磨你了:手把手教你用积分分离和变速积分搞定电机定位不准

电机精准定位的PID调参实战&#xff1a;积分分离与变速积分的黄金组合 机械臂末端总是抖动停不准&#xff1f;云台回中时反复震荡&#xff1f;这些让工程师头疼的定位问题&#xff0c;90%源于PID积分项的粗放管理。传统调参方法像用钝刀雕花——要么积分不足导致静差残留&#…...

关于岩溶隧道突水渗流及围岩损伤的流固耦合行为分析的全面探讨(500M参考资源的岩土建模技术与方法)

Comsol隧道围岩流固耦合 1主题&#xff1a;岩溶隧道突水渗流和损伤 2内容&#xff1a;mph文件、力学参数文件&#xff0c;围岩损伤课题参考文献&#xff08;500M&#xff09; 3备注&#xff1a;看懂每一步建模过程&#xff0c;特别注意研究模态及matlab和comsol的连接&#xff…...

无需代码基础!LiuJuan20260223Zimage开箱即用:WebUI一键生成创意图片

无需代码基础&#xff01;LiuJuan20260223Zimage开箱即用&#xff1a;WebUI一键生成创意图片 1. 引言&#xff1a;让创意图片生成变得简单 你是否曾经遇到过这样的情况&#xff1a;想要一张独特的创意图片&#xff0c;但既不会使用专业设计软件&#xff0c;也没有绘画基础&am…...

基于大语言模型的交易策略感知型电价预测方法研究

由于这是一个完整的学术研究方案,将构建一份详尽的文档,包含方法论、代码实现、模型架构、损失函数设计及实验分析。将提供深入的理论推导、完整的Python代码(基于PyTorch及HuggingFace Transformers)以及详细的代码解释。 基于大语言模型的交易策略感知型电价预测方法研究…...

PADS Logic格点设置优化指南:提升设计效率与美观性

1. 为什么格点设置如此重要&#xff1f; 刚接触PADS Logic时&#xff0c;我和很多新手一样&#xff0c;觉得格点设置就是个可有可无的小功能。直到有一次设计一个复杂电路板&#xff0c;元件摆放怎么都对不齐&#xff0c;连线歪歪扭扭像蚯蚓爬&#xff0c;才意识到格点的重要性…...

Git贡献全流程:从入门到进阶

开源项目Git贡献全流程拆解准备工作注册GitHub/GitLab等代码托管平台账号安装Git并配置基础信息&#xff08;用户名、邮箱&#xff09;熟悉基础Git命令&#xff08;clone、commit、push等&#xff09;了解目标项目的贡献规范&#xff08;CONTRIBUTING.md&#xff09;寻找合适的…...