【文献笔记】DRoC: Elevating LLM for complex vehicle routing via decomposed retrieval of constraints

DROC: ELEVATING LARGE LANGUAGE MODELS FOR COMPLEX VEHICLE ROUTING VIA DECOMPOSED RETRIEVAL OF CONSTRAINTS
原文代码

标题翻译:DROC:通过约束分解检索提升大型语言模型在复杂车辆路径规划中的性能

1. 内容介绍

1.1. 研究背景

车辆路径问题(VRP):VRP是计算机科学和运筹学中的经典组合优化问题,目标是确定一组车辆的最优路径,以最小化总成本(如距离、时间)。VRP广泛应用于物流、运输等行业,涉及多种实际约束(如时间窗、取送货、资源限制),属于NP-hard问题

其基本约束包括

  • 每个客户仅被一辆车访问一次。
  • 所有车辆从一个或多个仓库出发并返回。
    随着约束(如车辆容量、时间窗、多仓库等)的增加,问题复杂度显著上升。

本文考虑的VRP变体附加约束为

  1. 车辆容量限制,规定单台车辆的最大载重量;
  2. 距离(或时长)限制,约束车辆行驶总里程或总时长;
  3. 时间窗要求,车辆须在指定时间区间内访问客户点;
  4. 多车场配置,允许车辆在不同车场开始和结束路线;
  5. 开放路径,不指定车辆的起始与终止节点;
  6. 奖励收集机制,通过权衡未访问站点的惩罚值来优化路径;
  7. 取送货需求,在单一路线中管理配对出现的取件与派送任务;
  8. 服务时长,计入各站点服务客户所耗费的时间;
  9. 资源约束,限制车场可同时装卸的车辆数量,可能导致车辆出发或返回延迟。

1.2. 研究现状

1.2.1. 求解器

传统求解器(如OR-Tools、Gurobi)虽然功能强大,但对于非专家用户来说,建模复杂的VRP需要深厚的领域知识,且相关文档和示例代码稀缺。

1.2.2. 大型语言模型(LLM)
  • 潜力:LLM在自然语言处理、代码生成等领域表现出色,近年来被应用于运筹优化问题,试图自动化建模和编程。
  • 局限性
    • LLM在处理简单VRP(如TSP、CVRP)时表现尚可,但在面对复杂VRP变体时,因训练数据中缺乏特定领域知识,难以准确建模复杂约束。
    • LLM生成的程序常因错误约束建模或代码逻辑问题导致运行时错误(Runtime Error Rate, RER高)。

图1:GPT-3.5在48个VRP变体上成功个数

图1


1.3. 研究目标

论文旨在通过整合外部知识和分解技术,使用LLM直接生成解决复杂VRP的程序,而无需进行数学建模。并提升这一过程 的准确性(Accuracy Rate, AR)和鲁棒性(降低RER)。

2. 研究方法–DRoC框架

2.1. 框架概述

DRoC(Decomposed Retrieval of Constraints)是一种基于检索增强生成(Retrieval-Augmented Generation, RAG)的框架,通过分解VRP约束、检索外部知识、并结合内部和外部知识,优化LLM的程序生成过程。其核心思想是将复杂VRP分解为单个约束,分别检索相关文档,合并后生成更精确的代码。

overview

图2:DRoC概览

  • 直接代码生成(Step 1):LLM基于输入q(VRP名称和函数签名)利用内部知识生成初始Python代码y,不涉及RAG
  • 代码检查(Step 2):调用求解器执行生成的代码,获取执行反馈
    • 成功:程序输出正确的最优解。
    • 失败:返回错误信息(如语法错误、API调用错误)和执行回溯(traceback)
  • 路由决策(Step 3):LLM作为“路由器”(Router),根据执行回溯和错误信息决定下一步操作:
    • 自我调试(Step 4-I):若错误是语法或简单逻辑问题,LLM尝试自行修复。
    • 分解检索(Step 4-II):若错误涉及复杂约束建模,触发RAG机制,检索外部文档生成或优化代码。
  • 优化迭代(Step 4):整个过程最多迭代I次(实验中I=4),直到生成正确程序或达到迭代上限
    • 自我调试(Self-Debugging, Step 4-I):LLM分析错误,修改代码,生成新版本程序
    • 分解检索(Decomposed Retrieval, Step 4-II):分解VRP约束,检索相关文档,生成或优化代码

2.2. 外部知识来源

外部知识是DRoC框架的重要组成部分,用于补充LLM的内部知识缺陷。

  • 知识来源

    • 文档:求解器的官方文档,如Google OR-Tools的在线指南,提供VRP整个代码流程的详细说明。
    • 示例代码:开源代码库,如OR-Tools的GitHub仓库,包含社区贡献的VRP示例代码。
    • 执行反馈:代码执行器生成的错误信息和回溯,直接提供程序错误的具体上下文。
  • 动态更新:论文提出一种Bootstrap优化(DRoC-BBO),将LLM生成的正确程序加入知识库,进一步提升性能。

2.3. 分解检索(Decomposed Retrieval)

这是DRoC的核心创新,分为三个子过程:问题分解、单约束解析和上下文合并。
这一部分的具体提示词可以见原文附录A1

2.3.1. 问题分解(Problem Decomposition)
  • 核心思想:将复杂VRP分解为单个约束,便于针对性检索

  • 方法:VRP变体通常具有自己特定附加约束(如第1部分提到的9种),这些约束已知,且LLM对这些约束有基本理解,所以使用LLM将附加约束们分割成单个,并提取该约束的关键词C。即带有w个附加约束的VRP产生w个关键词。

  • 示例

    • 输入:“Capacitated Vehicle Routing Problem with Time Windows and Multiple Depots (CVRPTWMD)”
    • 输出:<Capacitated, Time Windows, Multiple Depots>
  • 优点:分解后,每个约束独立处理,避免普通RAG因查询复杂VRP名称而忽略关键约束

2.3.2. 单约束解析(Single-Constraint Resolution)
  • 核心思想:为每个约束检索最相关的外部文档
  • 流程
    1. 查询生成:对每个约束关键词Ci生成查询Qi:如“Python code of Ci”,共生成w个查询(w为附加约束数)

    2. 语义检索:使用OpenAI的嵌入模型将外部知识文档和查询转化为嵌入向量,计算查询与文档的平方欧几里得距离,选择top-k(k=3)最相似的文档作为候选
      语义计算

    3. 两阶段过滤:为每个约束精炼候选文档

      1. 第一阶段:调用LLM来评估文档与约束Ci之间的相关性。输出结构化为三个字段:相关relevance、代码片段code_snippet和总结summary
        输出示例

      图6:第一节但结构化输出结果示例

      1. 第二阶段:若第一阶段保留多个文档,继续调用LLM比较文档和摘要,选择最相关的一个,记为Di
  • 优点:两阶段过滤确保检索文档高度相关,减少无关信息干扰;且生成的摘要便于后续代码生成时理解约束的实现方式
2.3.3. 上下文合并(Context Merging)
  • 核心思想:整合各约束的检索文档,形成统一的上下文输入LLM。

  • 方法:将每个约束Ci的最终相关文档Di拼接为集合Ds,与VRP变体的名称、函数签名一起输入LLM,用于生成或优化代码

    图7

    图7:比如这是VRP变体,名称:CVRPTWMD和函数签名

3. 实验部分

3.1. 实验设置

  • 数据集:48种VRP变体,涵盖前文说的9种附加约束,包括车辆容量、时间窗、多仓库、开放路径等。每种变体使用专家设计的简单实例,确保可行解。
    变体一览表

  • 基线

    • 标准提示(Standard Prompting):直接使用LLM生成代码。
    • 思维链(Chain-of-Thought, CoT):引导LLM逐步推理。
    • 渐进提示(Progressive-Hint Prompting, PHP):利用先前生成作为提示。
    • 自我调试(Self-Debug):基于执行反馈调试。
    • 普通RAG(Vanilla RAG):检索整个VRP的代码示例。
    • 自适应RAG(Self-RAG):动态评估检索文档相关性。
    • 进化启发式(EoH, ReEvo):通过进化计算优化启发式算法。
  • 评估指标

    • 准确率(AR):生成程序输出最优解的比例。
    • 运行时错误率(RER):程序因逻辑或语法错误无法运行的比例。
  • 环境:使用gpt-3.5-turbo和gpt-4o,OR-Tools为主求解器,部分实验用Gurobi。

3.2. 主要结果

3.2.1. 整体性能

主要结果

  • DRoC在gpt-4o上达到最高AR(45.83%)和最低RER(20.83%),显著优于基线。
  • 与标准提示相比,DRoC解决25%更多VRP变体,运行时错误减少约37%。
  • 普通RAG和Self-RAG性能提升有限,甚至可能因无关文档干扰而降低性能
3.2.2. 不同LLM的适用性

LLM适应性

DRoC在多种LLM(gpt-3.5-turbo、gpt-4o、Claude3.5、LLaMA3.1)上均提升AR和降低RER,证明其通用性

3.2.3. 不同求解器的适用性

Gurobi求解器

与仅通过调用API解决VRP的OR工具不同,使用Gurobi来解决特定的VRP变体需要先构建相应的混合整数规划(MIP)模型,使其成为一项更加困难的任务。
结果显示,DRoC在与Gurobi求解器一起工作时仍然有效,表明基于分解的方法可以完成复杂任务。

3.2.4. 运行时间

运行时间

结果表明DRoC在提供自动化、用户友好解决方案的同时,并未显著增加运行时间

3.2.5. 其他运筹问题

FLP

DRoC在工人分配问题和设施选址问题(FLP)上也表现优异,解决更多变体

3.2.6. 与LLM+EC(基于进化计算)方法对比

对比LLM+EC

  • DRoC在生成复杂VRP求解程序时具有显著优势,得益于分解检索、动态路由和两阶段过滤的精准知识获取和高效错误处理
  • LLM+EC方法虽在生成启发式方面有优势,但高计算成本、解质量(快速近似解)不稳定和泛化能力有限使其不如DRoC
  • 未来可探索混合框架,结合DRoC的精准检索和LLM+EC的多样化优化

3.3. 消融实验

消融

  • 无过滤:直接使用语义检索的top-k文档作为上下文
    结果检索文档可能包含与约束无关的代码或说明,干扰LLM生成正确程序,降低了检索上下文的质量,影响代码的准确性和鲁棒性
  • 无分解检索:不分解约束,直接查询整个VRP名称(如“Python code of CVRPTWMD”),类似于普通RAG
    结果表明可能检索到不完整的文档,忽略某些约束,且上下文可能包含无关信息,降低代码生成质量
  • 无动态路由:移除动态路由机制,固定使用检索增强生成/调试(RAG),不让LLM自我调试
    结果增加了不必要的检索开销,降低了效率,且于简单错误(如语法错误),RAG可能不如自我调试有效,导致性能下降

3.4. 敏感性分析

研究了DRoC框架在不同参数配置(检索文档数k,最大迭代次数I)下的性能表现

敏感性分析

  • 较小的k可能限制外部知识的多样性,较大的k可能引入无关文档。k=3平衡了知识覆盖和噪声干扰,实现了最高AR和最低RER
  • 较小的I可能不足以优化复杂VRP,较大的I可能增加计算开销但收益递减。I=4提供了足够的迭代次数以优化复杂VRP,I>4收益递减

3.5. Bootstrap优化(DRoC-BBO)

核心思想:利用DRoC自身生成的正确程序作为新的外部知识,动态更新知识库,进而提升后续迭代中检索和代码生成的质量。DRoC-BBO旨在解决初始知识库中某些VRP变体(尤其是复杂或稀有变体)文档不足的问题,进一步推动LLM在复杂VRP求解中的能力。

DRoC-BBO

DRoC-BBO在AR和RER上均优于标准DRoC,AR提升约2%-3%,RER下降约2%,对稀有或复杂VRP变体(初始知识库覆盖不足)效果更显著

4. 总结

提出了DRoC框架,通过分解检索和动态路由,显著提升了LLM在复杂VRP程序生成中的性能。其创新点在于将VRP约束分解为单项,精准检索外部知识,并结合内部知识和执行反馈优化代码生成。

4.1. 贡献与创新

  1. 新颖的DRoC框架
    提出分解检索策略,将复杂VRP分解为单约束,精准检索相关文档,避免无关信息干扰。
    动态结合RAG和自我调试,适应不同错误类型,提升生成效率。
  2. 无需额外训练
    DRoC直接利用现有LLM和外部知识,无需微调,降低计算成本。
  3. 广泛适用性
    在48种VRP变体和其他运筹问题(如FLP)上验证有效,适用于多种LLM和求解器。
  4. 实际意义
    降低非专家用户建模复杂VRP的门槛,推动LLM在物流、运输等行业的应用

4.2. 局限性与未来方向

4.2.1. 局限性
  • 复杂实例限制:实验使用简单实例,未充分测试大规模VRP的性能。
  • 外部知识依赖:DRoC依赖文档和示例代码的质量,若知识源不足,可能影响效果。
  • 迭代次数有限:固定I=4可能不足以解决极复杂问题。
  • 部分变体未解决:即使使用DRoC,仍有约54%的VRP变体未生成正确程序。
4.2.2. 未来方向
  1. 扩展到大规模实例:测试DRoC在更大规模、更复杂VRP上的表现。
  2. 丰富知识源:整合更多来源(如学术论文、论坛讨论)或自动生成高质量示例代码。
  3. 自适应迭代:根据问题复杂度动态调整迭代次数。
  4. 多模态输入:支持自然语言描述、图表等输入形式,进一步提升通用性。
  5. 与其他方法结合:如与神经组合优化(NCO)或多代理框架结合,提升求解效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值