Leveraging large language models to develop heuristics for emerging optimization problems
标题翻译:利用大型语言模型开发新兴优化问题的启发式方法
1. 内容介绍
1.1. 研究背景
组合优化问题通常依赖启发式算法来快速生成高效解,但传统上设计启发式算法需要大量人力和专业知识,成本高且受限于设计者的经验;目前LLM的进步为自动生成启发式算法提供了可能。
1.2. 研究意义
本文选择单元负载预编组问题(UPMP)作为案例,探索LLM在小众优化问题中的潜力(因为问题小众,LLM的训练数据中很少见,线上也很少有启发式算法的库,能更好地测试LLM的能力)。
1.3. 负载预编组问题(UPMP)
问题描述:UPMP是一个在块堆叠仓库中出现的优化问题,目标是自主移动机器人(AMR)通过最少的移动次数重新排列单元负载(可以简单理解为货物),使所有高优先级负载不再被低优先级负载阻挡,便于后续取货。
图片解释:
- 仓库布局:2×2(4个货舱排列成正方形)
- 货舱(Bay)布局:每个货舱为3×3,总计9个存储槽
- 层数:2层(tiers)
相关术语:
-
仓库结构:仓库由多个相互连接的货舱(Bay)组成,每个货舱是一个三维网格(行列层),每一个格子存放一个单元负载,单元负载按优先级(P:1是最高优先级,5是最低)分类放置。
-
阻塞(Blocking):低优先级负载阻碍了对高优先级负载的访问,称为阻塞(低优先级负载位于高优先级负载的前方或上方)。
-
访问方向:每个货舱(Bay)可以从最多4个方向(东西南北)访问,但本文只研究从某一方向(north)访问,因为无法通过切换访问方向规避阻塞,所以作者认为其最具挑战性。
-
预编组:在预编组过程中,不允许新负载进入或离开仓库,仅通过内部移动消除阻塞。
一个UPMP的实例(俯视图),最开始灰色的部分就是阻塞的,在三次移动后阻塞消失,问题解决。(注:从北到南的一列成为一个车道(lane))
1.4. 研究问题
论文研究的是一个单货舱、单层、单一访问方向(north)的UPMP
1.4.1. 研究目标
- 最小化移动次数:找到从初始状态到无阻塞状态的最少移动步数
- 消除阻塞:确保每个高优先级负载前方没有低优先级负载
1.4.2. 研究方法
上下文启发式进化框架(CEoH),CEoH的核心创新是扩展EoH,通过在提示词中加入详细的问题描述增强上下文学习。
(EoH:这个方法中启发式思想被表示为自然语言描述,称为思维和代码。然后同时进化思维和代码,利用模型有效生成和完善启发式;EoH还引入了两种探索和三种修改提示策略。)
2. CEoH详情
2.1. 进化过程
启发式由代码和思想表示,通过多代迭代进化。每一代使用多种提示策略生成新启发式,并根据适应度函数评估。
2.2. 提示策略
- I0:生成初始启发式种群
- E1:基于当前种群中选择的父启发式,生成一个完全不同的启发式
- E2:根据与当前种群中选择的父启发式相同的核心思想生成一个新的启发式
- M1:修改当前种群中一个父启发式以获得更好的性能
- M2:修改当前种群中父启发式的参数,以获得更好的性能
总提示词包括(1)任务描述(2)问题描述(3)父启发式(4)策略指令(5)额外约束(如限制随机性、避免嵌套方法),最后,LLM被指示不提供额外的解释,以优化提示效率,减少token消耗。
2.3. 适应度函数
计算启发式解与下界的平均相对误差,目标是最小化移动次数(f越低越好)若超过最大移动次数(mmax),则视为未解。
- h:启发式
- mi:启发式h解决实例i所需的移动次数
- |I|:问题实例数量
- mlbi:实例i的最优解下界
3. 实验部分
3.1. 实验设置
3.1.1. 实验条件
- LLM:开源模型(Gemma2:27b、Qwen2.5-Coder:32b、DeepSeekV3:685b)和闭源模型(GPT4o:2024-08-06、GPT4o:2024-11-20)
- 实例:实例为一个5×5货舱、一层、单方向访问、60%填充率(15个槽已经有负载),一共10个实例(下界平均为11.8)
- 硬件:AMD EPYC 7401P处理器,64GB RAM
3.1.2. 参数
- 实验次数:每个LLM在CEoH和EoH框架下运行10次实验,确保结果有统计意义
- 代数:20代
- 种群筛选:初始种群40个启发式,每代保留20个最佳启发式
3.1.3. 提示策略
- 初始化(I0):生成40个初始启发式(2 n),形成初始种群P0
- 进化策略:E1、E2(探索新启发式,父启发式p=5)、M1、M2(修改现有启发式),每种策略每代调用20次(r=20),共生成80个新启发式,从中间选20个最优的
- 总提示数:进化4x20x20=1600次+初始40次(1640次)
3.2. 结果分析
3.2.1. 适应度变化
在CEoH和EoH框架下,每代最佳启发式的适应度变化趋势(适应度越低,性能越好)
小型模型(Gemma2:27b, Qwen2.5-Coder:32b, DeepSeekV3:685b)用CEoH表现更好,说明了上下文的有效性;
大型模型(GPT4o:2024-08-06, GPT4o:2024-11-20)CEoH与EoH结果接近,表明无需额外上下文也能生成好启发式;
结论:CEoH对小型模型帮助更大,因其缺乏预训练知识,依赖上下文学习;大型模型已有丰富知识,上下文可能是冗余甚至干扰。
3.2.2. 启发式代码比较
比较CEoH和EoH生成的最佳启发式代码和思想
-
(a)Qwen2.5-Coder:32b+CEoH(适应度12.5%)
- 思想:基于优先级平衡、阻塞惩罚和密度加权来评估每一条车道(lane)
- 代码特点:
- 奖励按优先级递减的序列(如[1,2,3])
- 动态惩罚高密度通道和错位单元
- 无阻塞的车道有额外奖励
- 依赖上下文:严格基于UPMP的“车道lane”概念
-
(b)GPT4o:2024-08-06+EoH(适应度14.3%)
- 思想:基于逻辑变换和指数惩罚,根据优先级值和车道定位动态调整得分
- 代码特点:
- 用指数函数惩罚阻塞的单元负载。
- 奖励可访问的有序“stacks”
- 术语偏差:使用“stacks”而非“lane”,暗示受别的集装箱预编组问题(CPMP)影响(指GPT4o自己的训练数据中本来就有类似的案例)
由于发现了GPT4o的术语偏差,于是作者们在GPT4o:2024-08-06的所有实验中额外统计了一下:
- 使用EoH:“stack”出现86,291次,“lane”22次
- 使用CEoH:“lane”出现121,059次,“stack”63次
结论:CEoH的上下文描述强制LLM聚焦UPMP术语(lane),而EoH依赖模型预训练知识,可能混淆相关问题(如CPMP的“stack”)
3.2.3. 扩展实例测试
变化因素:货舱大小(4×4, 5×5, 6×6)、仓库大小(1×1, 2×2, 3×3)、填充率(60%, 80%)。下界移动次数也随之增加,所以将最大移动次数限制设置为mmax=1000.
还是研究 Qwen2.5-Coder:32b+CEoH 对比 GPT4o:2024-08-06+EoH,另外加了个A*算法
结果发现:
- 新实验(5×5, 1×1仓库, 60%填充)里:Qwen2.5+CEoH优于GPT4o,但适应度高于训练实例,显示过拟合。
- 大一点的实例(2×2, 3×3仓库,60%填充):GPT4o+EoH表现更好(低于5%),Qwen2.5稍逊
- 在80%填充(1×1):两者均失效,因为这种问题复杂度过高
- 运行时间:启发式远快于A*(秒级vs分钟级)
3.3. 实验结论
- CEoH的优势:对小型模型提升显著,适合小众问题
- 大型模型下的表现:无需上下文也能胜任,但EoH更灵活
- 启发式质量:接近A*(4.35%差距),运行效率高
- 适用性:在中等复杂实例上优秀,但在极端情况(如80%填充)需改进
4. 总结和展望
论文调查了LLM在一个特定组合优化问题UPMP中生成启发式的潜力。论文使用CEoH方法,该方法通过引入额外的问题特定描述,在上下文学习中增强了启发式设计。
CEoH在小众问题UPMP上证明了LLM生成启发式的潜力,尤其对小型模型更有效。未来可研究不同LLM对上下文的依赖性,并扩展到更多小众的优化问题。