- 本文初稿使用 PaperReading-skill 生成。给定论文标题、链接、arXiv/OpenReview 页面、DOI 或本地 PDF,让 Codex 自动完成论文检索、PDF 下载、图表抽取、代码仓库分析,并生成一份适合 Typora 阅读和后续整理的中文论文解读 Markdown 和 PDF,欢迎试用!
- 前往我的博客阅读本文,无需 CSDN VIP
- 文章链接:OptMATH: A Scalable Bidirectional Data Synthesis Framework for Optimization Modeling
- 作者:Hongliang Lu, Zhonglin Xie, Yaoyu Wu, Can Ren, Yuxuan Chen, Zaiwen Wen
- 机构:Peking University, Beijing International Center for Mathematical Research, School of Mathematical Sciences
- 代码:optsuite/OptMATH
- 项目页:OptMATH Project
- 发表:ICML 2025, PMLR 267:40769-40802
- 领域:LLM-OR
- 一句话总结:使用 LLM 进行 OR 问题建模时,现有方法受限于高质量训练数据稀缺、合成数据复杂度和一致性不足,难以泛化到复杂长文本优化问题;本文提出 OptMATH,从已有 MF/PD 出发反向生成 NL,再通过 AutoFormulator 正向建模和最优值匹配 rejection sampling 验证语义一致性,构建 OptMATH-Train 与 OptMATH-Bench,并通过 SFT/LoRA 训练 AutoFormulator,显著提升了 0.5B–32B 模型在 NL4OPT、MAMO 和 OptMATH-Bench 上的优化建模准确率
- 摘要:尽管大语言模型发展迅速,一个根本挑战仍然存在:缺乏高质量的优化建模数据集,这阻碍了 LLM 从自然语言描述(NL)中鲁棒地建模实际优化问题,也导致学习式方法泛化困难。为了解决这些挑战,我们提出了 OptMATH —— 一种可扩展的高质量数据集合成框架。该框架从带有数学公式(MF)的人工整理种子数据出发,自动生成复杂度可控的问题数据(PD),然后使用反向翻译步骤获得 NL,并结合前向建模结合和拒绝采样法来验证NL与PD的一致性。被接受的样本对质量较高,构成 OptMATH 的训练部分。随后,一组被拒绝的样本对被识别并进一步过滤,并构成新的优化建模 Benchmark,其中包含长度远长于 NL4OPT 和 MAMO 的困难实例。通过大量实验,作者证明在 OptMATH 上训练的 0.5B 到 32B 参数规模模型,在多个建模 Benchmark 上取得更优结果,从而验证了该方法的有效性和可扩展性
1. 背景
- 本文研究优化问题的自动建模与编程,以减轻对人类专家的严重依赖。具体而言,这类问题要求输入一段自然语言描述的问题(如配送货、生产规划等问题),要求模型或系统完成运筹学建模,并生成问题求解代码,中间常需要显式写出数学公式 (MF)。
min x g ( x ) , s.t. c i ( x ) = 0 , i ∈ E , c i ( x ) ≥ 0 , i ∈ I , \begin{array}{ll} \min _{\mathbf{x}} & g(\mathbf{x}), \\ \text { s.t. } & c_{i}(\mathbf{x})=0, \quad i \in \mathcal{E}, \\ & c_{i}(\mathbf{x}) \geq 0, \quad i \in \mathcal{I}, \end{array} minx s.t. g(x),ci(x)=0,i∈E,ci(x)≥0,i∈I, 这里的难点不是 “会不会算最优解”,而是 “能不能把题意里的变量、目标、约束、整数性、Big-M 逻辑、业务条件翻译成正确模型”。这类任务比小学数学题更开放:同一个业务问题可能有多种等价建模方式,约束也常隐含在上下文里 - 针对该任务,当前主要存在基于提示和基于微调的两类方法:
- 基于提示的建模prompt-based modeling:通过为 GPT-4o 等大规模预训练 LLM 精心设计建模 Prompt 来工作,相关方法包括 OptiTree、PaMOP、OptiMUS 等。这类方法的重点在于通过引入树、图、多智能体等设计,将 “复杂问题描述上下文 -> 严格式要求代码” 的端到端生成过程拆分为多个子过程,从而降低各环节难度,并使各环节的 prompt 更具针对性和指向性
这类方法的优势是不改模型参数,工程上容易迭代;弱点是很依赖基础模型本身的优化建模知识,复杂长题中容易漏约束或变量类型
- 基于微调的建模fine-tuned LLM modeling agents:通过构造大规模运筹学及建模知识对 LLM 进行微调,形成专用的建模语言模型,如 ORLM、Step-Opt 等。这类方法的重点在于设计数据构方法和错误过滤方法,实现多样、正确、难度可控的高质量数据集。此外,从 2025 年开始也逐步出现了基于 RL post-training 的方法,如 SIRL 将 OR 建模求解视作 RLVR 任务解决、LLMOPT 使用在 sft 后使用 KTO 后训练减弱模型幻觉等
通过进行针对性训练,基于微调的方法往往可以用更小参数量的模型达成和通用大模型相似的性能,但问题在于真实高质量优化建模样本少,人工标注贵,简单数据又无法覆盖长上下文、复杂约束和跨领域表达
- 基于提示的建模prompt-based modeling:通过为 GPT-4o 等大规模预训练 LLM 精心设计建模 Prompt 来工作,相关方法包括 OptiTree、PaMOP、OptiMUS 等。这类方法的重点在于通过引入树、图、多智能体等设计,将 “复杂问题描述上下文 -> 严格式要求代码” 的端到端生成过程拆分为多个子过程,从而降低各环节难度,并使各环节的 prompt 更具针对性和指向性
2. 本文方法
-
OptMATH 通过三元组语义对齐(NL、MF、PD)进行数据生成及严格验证,解决优化建模中数据稀缺这一关键挑战。为了形式化建模问题,本文首先进行定义:
NL:Natural Language description,指用户或实际业务场景中给出的优化问题文本描述,通常包含目标、资源限制、需求约束和业务背景等信息MF:Mathematical formulation,指不带具体实例数值、抽象和通用的数学建模结构,通常包括集合、参数、变量、目标函数和约束。描述 “某类问题应该如何建模”,而非某个具体实例的数值模型PD:Problem Data,定义为已经填入具体数值,可以调用求解器来获得最优解的某种建模形式。可以是数学表达式、LP/MPS文件或任何其他可直接用于求解器的格式(如 gurobi 代码)。在 OptMATH 框架的不同阶段,作者使用了不同形式的 PD.lp 文件是一种优化模型文件格式,通常由目标函数、约束、变量上下界、整数或二进制变量声明等信息组成,用来把线性规划、整数规划、混合整数规划等模型写成求解器可读的文本。Gurobi、CPLEX、SCIP 等求解器都能读取 .lp 文件。示例如下
Maximize profit: 50 table + 30 chair Subject To carpentry_time: 4 table + 3 chair <= 240 painting_time: 2 table + 1 chair <= 100 Bounds table >= 0 chair >= 0 Generals table chair End
-
OptMATH 可以理解为一个数据飞轮,分为如下图所示的三个阶段:

- 逆向数据合成:首先收集 (MF, PD) \text{(MF, PD)} (MF, PD) 数据对,再使用基于 LLM 的反向翻译方法生成 NL \text{NL} NL。其中 PD \text{PD} PD 均使用 LP 文件形式,数据对来源有两个
- MIPLIB 和 netlib 等具有挑战性 Benchmark 的 LP/MPS 文件
- 超过50个由专家精选的种子问题生成器,涵盖多种优化场景。这些生成器能够生成难度可调控的海量参数化数据
- 前向建模和验证:使用经过训练的 AutoFormulator 将 NL \text{NL} NL 转换为 PD ′ \text{PD}' PD′(AutoFormulator 直接生成求解器代码,然后导出为 LP 文件)。接下来使用拒绝抽样策略,仅保留原始 PD \text{PD} PD 与生成 PD ′ \text{PD}' PD′ 优化目标值完全匹配的实例,保证语义等价性
- 模型微调:对步骤 2 接受的高质量样本进一步使用数据增强策略,包括问题改写、语义替换、约束扩展和数值增强,以提升数据集多样性和覆盖范围,组成 OptMATH-Train 数据集,然后用 SFT 微调基座模型得到 AutoFormulator
- 逆向数据合成:首先收集 (MF, PD) \text{(MF, PD)} (MF, PD) 数据对,再使用基于 LLM 的反向翻译方法生成 NL \text{NL} NL。其中 PD \text{PD} PD 均使用 LP 文件形式,数据对来源有两个
-
AutoFormulator 专门用于把优化问题的自然语言描述转成数学模型和求解代码,它是一个经过微调的 LLM,其训练目标为:
max θ E ( NL,MF,PD ) ∼ D [ Q ( NL,MF,PD ) ( MF’,PD’ ) ] s.t. ( MF’,PD’ ) = A θ ( prompt M ( NL ) ) \begin{aligned} &\max_{\theta}\ \mathbb{E}_{(\text{NL,MF,PD})\sim D}\left[Q_{(\text{NL,MF,PD})}(\text{MF',PD'})\right]\\ &\text{s.t. } (\text{MF',PD'})=A_{\theta}(\text{prompt}_M(\text{NL})) \end{aligned} θmax E(NL,MF,PD)∼D[Q(NL,MF,PD)(MF’,PD’)]s.t. (MF’,PD’)=Aθ(promptM(NL)) 其中 Q Q Q 衡量生成的 MF’,PD’ \text{MF',PD'} MF’,PD’ 是否和原始三元组一致, prompt M \text{prompt}_M promptM 是一个将 NL 转化为 MF 和 PD 的建模提示模板
2.1 复杂度可控的 PD 生成
- 整个数据合成框架的核心之一就是生成优化问题实例,也就是生成 PD \text{PD} PD 问题示例数据。这里不是简单让 LLM 随机编题,而是:
- 人工从各类优化期刊和网站中精选了 50 多个种子问题类别
- 为每类问题写参数化实例生成器 G i ( Θ ) G_i(\Theta) Gi(Θ),其中 Θ \Theta Θ 可以控制问题的规模和难度,如集合规模、参数范围、变量类型、约束类型和数量等。每个问题生成器 G i G_i Gi 对应一类数学建模 MF i \text{MF}_i MFi
- 用反馈机制让 LLM 迭代调整生成器配置,控制生成实例的复杂度、可行性和求解时间,从而得到规模、复杂度和可解性均可控的大规模优化实例
2.1.1 复杂度评估
- 作者给每个问题数据 PD \text{PD} PD 定义复杂度分数:
S ( P D ) = α b i n N b i n + α i n t N i n t + α c o n t N c o n t + β l i n N l i n + β i n d i c N i n d i c + β q u a d N q u a d + β g e n N g e n + γ B i g M f B i g M + δ e x p r L e x p r ‾ \begin{aligned} S(\mathrm{PD})= & \alpha_{\mathrm{bin}} N_{\mathrm{bin}}+\alpha_{\mathrm{int}} N_{\mathrm{int}}+\alpha_{\mathrm{cont}} N_{\mathrm{cont}} \\ & +\beta_{\mathrm{lin}} N_{\mathrm{lin}}+\beta_{\mathrm{indic}} N_{\mathrm{indic}}+\beta_{\mathrm{quad}} N_{\mathrm{quad}} +\beta_{\mathrm{gen}} N_{\mathrm{gen}} \\ & +\gamma_{\mathrm{BigM}} f_{\mathrm{BigM}}+\delta_{\mathrm{expr}} \overline{L_{\mathrm{expr}}} \end{aligned} S(PD)=αbinNbin+αintNint+αcontNcont+βlinNlin+βindicNindic+βquadNquad+βgenNgen+γBigMfBigM+δ


被折叠的 条评论
为什么被折叠?



