LLM*:路径规划的大型语言模型增强增量启发式搜索

路径规划是机器人技术和自主导航中的一个基本科学问题,需要从起点到目的地推导出有效的路线,同时避开障碍物。A* 及其变体等传统算法能够确保路径有效性,但随着状态空间的增长,计算和内存效率会严重降低。相反,大型语言模型 (LLMs) 通过上下文理解在更广泛的环境分析中表现出色,提供对环境的全局洞察。然而,它们在详细的空间和时间推理方面存在不足,通常会导致无效或低效的路线。在这项工作中,我们提出了LLM*,一种新的基于 LLM路线规划方法,它协同地结合了 A* 的精确寻路能力与 LLMs。这种混合方法旨在提高时间和空间复杂性方面的寻路效率,同时保持路径有效性的完整性,尤其是在大规模场景中。通过整合两种方法的优势,LLM* 解决了传统算法的计算和内存限制,而不会影响有效寻路所需的有效性。

 

图 1: 寻路过程中 LLM。LLM* 利用 LLMs作为路径点来指导搜索过程,显著减少了访问状态的数量,从而导致操作和存储使用量低于 A* 

路径规划是确定从初始点到目的地点的路径的计算过程,该路径符合特定标准,例如避开障碍物、最小化行驶距离或时间以及满足其他约束 LaValle (2006);Hart et al. (1968b);Karaman 和 Frazzoli (2011)。这个问题在多个领域都至关重要,例如机器人、自动驾驶汽车导航、工业自动化和虚拟环境导航,因为它直接影响操作系统的效率、安全性和可行性Thrun et al. (2005);Karaman 和 Frazzoli (2011);Fiorini 和 Shiller (1998);Fox 等 人 (1997)。

现有的路径规划算法能够有效地完成规划任务并确保其路径的有效性。然而,随着环境和地图的扩大,像 A* 及其变体这样的算法 Hart et al. (1968b);Korf 等 人(2001 年);Harabor 和 Grastien (2011);Jansen 和 Buro (2007) 遇到了计算和内存需求的指数级增长。发生这种情况是因为寻路过程可能会变得次优(参见图 1),在这种情况下,算法可能会花费不必要的精力来探索不太相关的区域,从而导致随着地图大小的扩大,时间复杂度呈指数级增加。

与此同时,大型语言模型(LLMs)在各种规划任务中取得了显着的里程碑 Naveed 等 人(2023 年);Yin 等 人(2023 年);Chen 等 人 (2023a);Shinn 等 人(2024 年);Dou 等 人 (2024)。这些模型展示了对长期上下文输入进行处理和推理的能力,以提供有价值的全局见解,以反映他们对环境的理解,例如识别障碍、代理和目标的相对位置。但是,他们难以完成复杂的长期规划和复杂的空间推理任务,例如基于格网的路径规划。LLMs 通常会生成无效或未接地的路径,导致路径不完整或发生冲突,表明它们在处理详细空间复杂性的能力方面存在差距 Aghzal et al. (2023)。

在这项工作中,我们提出了 LLM*,一种新的基于 LLM 的路线规划方法,它将传统的 A* 算法与来自大型语言模型的全局洞察力协同起来。如图 1 所示。1,这种混合方法利用LLM 生成的航点来指导路径搜索过程,从而显著降低计算和内存成本。此外,通过将 A* 的标准 L2 基于距离的启发式方法与从这些航点派生的新启发式值集成,LLM* 解决了 LLM,从而确保输出路径的有效性。

我们在各种环境中进行了广泛的实验,以比较 A* 和 LLM* (将 LLAMA3 与少数镜头提示集成)的性能。如图 3 所示,A* 在计算操作和存储需求方面呈指数级增长,环境规模呈线性增加。相比之下,LLM* 显示出近乎线性的增长模式,表明具有卓越的可扩展性。这表明 LLM* 在计算和内存方面都明显更高,使其更适合更大的环境。此外,我们的主要实验结果(如表 1 所示)表明,LLM* 不仅在可扩展性方面表现出色,而且在基线计算和内存效率方面也优于 A*。LLM* 与 A* 相比,操作和存储比率显著降低,平均需要的操作和存储不到 A* 寻路过程所需操作和存储的一半左右,从而为大规模路径规划提供了强大而高效的解决方案。

阿拉伯数字相关工作

路径规划中的传统算法。

Pathfinding 在人工智能、机器人技术和计算机图形学中一直发挥着关键作用,开发了许多算法来应对各种挑战。在基础方法中,由 Hart、Nilsson 和 Raphael 于 1968 年引入的 A* 算法因其使用启发式方法来估计从当前节点到目标节点的成本而脱颖而出,平衡了贪婪的最佳优先搜索与均匀成本搜索以实现有效的寻路Hart et al. (1968a)。同样,1984 年提出的 Pearl 最佳优先搜索 (BFS) 根据启发式值对节点进行优先级排序,但由于它专注于最有前途的节点 Pearl (1984) ,因此可能导致路径更长。

A* 的扩展旨在提高其效率和适应性。Korf 于 1985 年提出的迭代深化 A* (IDA*) 将深度优先搜索与 A* 的启发式方法相结合,创造了一种内存高效的方法 Korf (1985)。Korf 还在 1990 年推出了实时学习 A* (LRTA*),将实时学习与动态更新启发式值相结合,从而提高了在不断变化的环境中的性能 Korf (1990)。Russell 于 1992 年提出的简化内存有界 A* (SMA*) 通过选择性地忘记不太有希望的路径来解决内存限制问题,使其适用于资源有限的应用程序 Russell (1992)。

进一步的增强包括 Stentz 1994 年的动态 A* (D*),它随着环境的变化重新计算路径,证明在未知或不断发展的地形中导航有效 Stentz (1994)。Koenig 等人于 2004 年推出的终身规划 A* (LPA*) 在动态和大规模环境中逐步更新路径 Koenig 等 人 (2004)。Harabor 和 Grastien 于 2011 年提出的跳跃点搜索 (JPS) 通过识别关键的“跳跃点”来优化基于网格的地图的 A*,从而减少扩展节点的数量Harabor 和 Grastien (2011)。Nash 等人于 2007 年提出的 Theta* 允许在节点之间进行视线检查,从而产生更直接的路径 Nash 等 人 (2007)。

分层方法,例如 Holte 等人 1996 年的分层 A* (HA*),通过抽象层次结构将大型寻路问题分解为较小的子问题,从而降低了计算复杂性 Holte 等 人 (1996)。Botea 等人于 2004 年推出的分层路径查找 A* (HPA*) 改进了抽象级别之间的过渡,以实现高效的大地图路径查找 Botea 等 人(2004 年)。

专业方法也有很大贡献。Demyen 和 Buro 于 2006 年提出的基于三角测量的寻路 (TRA*) 使用三角测量来导航多边形环境,适用于非基于网格的设置 Demyen 和 Buro (2006)。Koch 于 2011 年推出的特定于网格的分层路径查找 (GHPA*) 通过集成分层和特定于网格的优化来优化网格映射寻路 Koch (2011)。

路径规划中的大型语言模型。

大型语言模型 (LLMs) 最近在自然语言处理任务和其他领域取得了显著的成功 Naveed et al. (2023)。Shridhar 等 人 (2020b);Song 等 人(2023 年);Shah 等 人(2023 年)探讨了高级规划中的 LLMs,强调了长期规划和空间推理方面的挑战 Aghzal 等 人(2023 年)。我们的研究重点转移到连续环境,与基于网格的地图相比,它提供了更逼真的设置。连续空间更符合现实世界的条件,为人类交互提供更自然的界面,并允许更高的空间推理精度。

LLMs 在空间推理方面表现出不同的熟练程度 Ilharco et al. (2020);帕特尔和帕夫利克 (2021);Bubeck 等 人(2023 年);Abdou 等 人(2021 年);Yang et al. (2023b) 在空间推理和规划方面面临局限性 Agrawal (2023);Xie et al. (2023);Wu 等 人(2023 年)。我们引入了连续环境中路径规划的基准,集成了空间和时间推理。之前的基准 Côté 等 人(2019 年);Shridhar 等 人(2020a);Ruis 等 人(2020 年);Wu et al. (2021) 经常忽视时间规划方面。我们的研究进一步评估了机器人运动和路径规划环境中的 LLMs解决了端到端规划中的局限性 Liu et al. (2023);Chen 等 人 (2023b);Xie et al. (2023);Silver 等 人(2022 年)。

了解高级别和低级别规划之间的相互作用至关重要 Latif (2024);Yang 等 人(2023a);Ding 等 人(2024 年);周 et al. (2024)。高级规划涉及战略目标,而低级规划侧重于详细的任务执行。我们的研究探讨了 LLMs 在纠正低级规划错误方面的适应性,确保动态条件下的弹性。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/62322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ACL的原理与配置

ACL技术概述 ACL;访问控制列表 技术背景: 园区重要服务器资源被随意访问,容易泄露机密,造成安全隐患 病毒侵入内网,安全性降低 网络宽带被各类业务随意挤占,服务质量要求高的宽带得不到保障&#xff0…

Qt中QGraphics绘图类相关解释

Item(图元)坐标系、Scene(场景)坐标系、View(视图)坐标系,三者均为:x轴正方向向右,y轴正方向向下 1、Item(图元):坐标属于局部坐标,通常以图元中心为原点(中心对称)。 场景坐标系统描述了顶层的图元,每个图…

【配置】pycharm运行的项目如何修改名称(项目名称、模块名称)

当我们需要修改项目名称、模块名称的时候,能够在网上找一些修改的方法,但是有没有很保守但很使用的方法可以解决这个问题呢? 创建项目 通过pycharm创建一个django的项目 创建之后的项目目录: 更改项目名称: 往往以…

【新人系列】Python 入门(十四):文件操作

✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们…

MySQL 启动失败问题分析与解决方案:`mysqld.service failed to run ‘start-pre‘ task`

目录 前言1. 问题背景2. 错误分析2.1 错误信息详解2.2 可能原因 3. 问题排查与解决方案3.1 检查 MySQL 错误日志3.2 验证 MySQL 配置文件3.3 检查文件和目录权限3.4 手动启动 MySQL 服务3.5 修复 systemd 配置文件3.6 验证依赖环境 4. 进一步优化与自动化处理结语 前言 在日常…

IDEA Maven 打包找不到程序包错误或找不到符号,报错“程序包不存在“

参考文章:https://blog.csdn.net/yueeryuanyi/article/details/14211090 问题:IDEA Maven 打包找不到程序包错误或找不到符号,报错“程序包不存在“编译都没问题 解决思路 – >【清除缓存】 1. 强制刷新Maven缓存 选择 Maven 标签,Exe…

git仓库:循环所有提交、查找有无指定文件名

util–bash-simplify/git/git_loopCommit_findFind.sh #!/bin/bash#【描述】 git仓库:循环所有提交、查找有无指定文件名 #【依赖】 #【术语】 #【备注】 #【用法举例】 # bash /app/bash-simplify/git/git_loopCommit_findFind.sh /app5/android-prj-h…

android bindService打开失败

在写demo验证SurfaceControlViewHost的时候,bindService提示 Unable to start service Intent U0: not found 在源代码里搜了下,找到是在如下方法里面里面打印出来的 // frameworks/base/services/core/java/com/android/server/am/ActiveServices.java…

通过 SSH 进行WordPress网站的高级服务器管理

我在管理hostease的服务器时,时常需要通过SSH登录服务器进行修改。而在网站管理中,SSH不仅是一个基础工具,更是高级用户用来精细化管理和优化服务器的重要工具。通过SSH,你可以深入监控服务器的性能、精细管理系统资源&#xff0c…

分布式搜索引擎之elasticsearch单机部署与测试

分布式搜索引擎之elasticsearch单机部署与测试 1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络: docker network create es-net1.2.加载镜像 这里我们采用elasticsearch的7.12.1版本的…

WPF+MVVM案例实战与特效(三十)- 封装一个系统日志显示控件

文章目录 1、运行效果2、日志控件封装1、文件创建2、DisplayLogPanel.xaml 代码3、using System;3、using System;3、数据模型4、枚举类型3、案例实现1、LogPanelWindow.xaml2、LogPanelViewModel.cs4、总结1、运行效果 2、日志控件封装 1、文件创建 打开 Wpf_Examples ,在 …

C++算法练习-day47——450.删除二叉搜索树中的节点

题目来源:. - 力扣(LeetCode) 题目思路分析 题目要求在给定的二叉搜索树中删除一个具有指定值的节点,并返回删除后的二叉搜索树的根节点。二叉搜索树的性质是,对于树中的每个节点,其左子树中的所有节点的…

第二节——计算机网络(四)物理层

车载以太网采用差分双绞线车载以太网并未指定特定的连接器,连接方式更为灵活小巧,能够大大减轻线束重量。传统以太网一般使用RJ45连接器连接。车载以太网物理层需满足车载环境下更为严格的EMC要求,100BASE-T1\1000BASE-T1对于非屏蔽双绞线的传…

使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost)

使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost) vcpkg的自动链接功能非常方便,但在某些情况下会出现过度链接的问题。 链接错误症状 以tinyxml2为例,程序中调用tinyxml2的函数后,若vcpkg中同时存在opencv和…

PyTorch 模型转换为 ONNX 格式

PyTorch 模型转换为 ONNX 格式 在深度学习领域,模型的可移植性和可解释性是非常重要的。本文将介绍如何使用 PyTorch 训练一个简单的卷积神经网络(CNN)来分类 MNIST 数据集,并将训练好的模型转换为 ONNX 格式。我们还将讨论 PTH …

专属主机服务器和ECS服务器有什么区别?

‌专属主机服务器和ECS服务器的主要区别在于资源隔离、计费方式、管理权限等方面。‌ 资源隔离 ‌专属主机服务器‌:用户可以独享整台物理服务器资源,与其他租户的服务器物理隔离。这意味着用户不需要与其他租户共享物理资源,可以获取服务器…

Github 基本使用学习笔记

1. 基本概念 1.1 一些名词 Repository(仓库) 用来存放代码,每个项目都有一个独立的仓库。 Star(收藏) 收藏你喜欢的项目,方便以后查看。 Fork(克隆复制项目) 复制别人的仓库&…

【java】 分布式锁实现和选型

文章目录 引言:分布式锁的重要性与分布式系统中的常见问题和需求分布式锁的重要性分布式系统中常见的问题和需求分布式锁与本地锁的区别 基于数据库的分布式锁基于数据库实现分布式锁实现原理Java代码示例优点和缺点分析 基于Redis的分布式锁实现原理Java代码示例使…

Vue+Elementui el-tree树只能选择子节点并且支持检索

效果&#xff1a; 只能选择子节点 添加配置添加检索代码 源码&#xff1a; <template><div><el-button size"small" type"primary" clearable :disabled"disabled" click"showSign">危险点评估</el-button>…

第33章 - Go语言 云原生开发

第33章 - 云原生开发将深入探讨云原生技术及其在现代软件开发中的应用。我们将从云原生的基本概念开始&#xff0c;逐步介绍Kubernetes的基本使用方法&#xff0c;并结合具体的云服务提供商实例&#xff0c;通过Go语言编写的应用程序来展示如何实现云原生开发。 33.1 云原生的…