OptiChat:Bridging optimization models and practitioners with large language models
标题翻译:OptiChat:基于LLM的优化模型与从业者协作平台
1. 内容介绍
1.1. 研究背景
优化模型在工程、经济、医疗、制造等领域被广泛应用于解决决策问题。这些模型通常由优化专家开发,但使用者往往是缺乏优化专业知识的实践者。
最近,LLM在自然语言处理领域的进步为解决这一问题提供了可能性,但优化模型的解释仍是一个未充分研究的领域。现有方法要么依赖专家手动解释,要么局限于特定场景,缺乏一个通用的自然语言交互工具。
1.2. 研究问题
- LLM的幻觉问题:直接依赖LLM对建模解释可能出现不准确或毫无根据的回答,尤其在涉及复杂优化模型时。
- 现有方法的局限性:已有研究局限于特定领域,缺乏通用性;或者仅针对特定任务(如作者的前期工作:仅诊断解决不可行性问题。前期工作原文链接;前期工作文献笔记),无法全面支持实践者的各种需求。
- 数据缺乏:目前缺乏开源数据集来测试自然语言系统对优化模型解释的性能,限制了该领域的发展。
1.3. 研究意义
论文提出的OptiChat系统通过将LLM与优化工具结合,填补了优化模型与实践者之间的理解鸿沟。这是一个自然语言对话系统,旨在帮助从业者解释模型制定、诊断不可行性、分析灵敏度、检索信息、评估修改并提供反事实解释。
2. 方法
2.1. OptiChat使用概览
(输入为蓝色,输出为绿色)
-
(a)用户界面
-
用户输入查询
-
分类查询类型:
- 与解无关的查询:如询问模型的基本结构或目标,这类问题直接由LLM通过其内置知识回答
- 与解相关的查询:如诊断不可行性或敏感性分析,需要结合模型的具体解进行回答
-
系统输出响应
-
-
(b)后端系统
-
输入:模型代码(pyomo/python)
-
预处理:模型代码转为自然语言描述,帮助理解模型背景
-
组件:优化工具包括优化求解器、代数建模语言、预定义函数和代码生成
-
交互反馈:LLM和优化工具共同访问模型代码和自然语言描述;根据用户查询,调用相应工具生成结果,再由LLM转化为自然语言输出
-
2.2. 五类查询问题(诊断、检索、灵敏度、假设和为何不)
1. Diagnosing Query(诊断查询):帮助用户识别和解决优化模型的不可行性问题(即模型无解的情况),并提供调整建议
2. Retrieval Query(检索查询):从优化模型中提取特定信息,如决策变量的值、参数数据或约束条件
3. Sensitivity Query(敏感性查询):分析模型参数变化对优化目标的影响,帮助用户评估风险或制定策略
4. What-if Query(假设查询):测试模型在参数或约束发生较大变化后的结果,适用于评估新策略或政策
5. Why-not Query(为何不查询):解释为何模型未选择用户认为合理的方案,提供反事实分析以增强信任
2.3. OptiChat框架 – 多LLM代理框架
- 插图代理(Illustrator):预处理上传的Pyomo优化模型代码,提取模型的集合、参数、变量、约束和目标,为每个组件生成自然语言描述,存储为查找表;若模型不可行,保存不可约不可行子集(IIS)
- 协调代理(Coordinator):分类用户查询为“与解无关”或“与解相关”,分配给不同代理处理:如询问模型结构与解无关,直接由Explainer处理;如诊断不可行性,就交给工程团队
- 解释代理(Explainer):将技术结果转化为易懂的自然语言
- 工程团队:
- 操作代理(Operator):调用预定义函数处理诊断、检索、敏感性和假设查询;执行预定义函数,预定义减少了幻觉
- 提醒代理(Reminder):与解相关查询的起点,提供补充信息,提高函数参数识别的准确性;提供语法指导
- 程序员和评估代理(Programmer & Evaluator):主要为“为何不”查询生成代码并验证其正确性,整个过程中,代码将自动优化,直到产生无错误和全面的解决方案;Programmer生成代码,Evaluator检查并修正错误
这篇文章到底在说什么东西 —— OptiChat背后的数学和优化理论
还是那个混合整数线性规划问题(MILP),即在给定一组线性约束条件Ax≤b 的前提下,最小化目标函数CTX,这里面常用不可约不可行子集(Irreducible Infeasible Subset (IIS))刻画不可行的优化模型。
IIS满足:(1)IIS本身是不可行的;(2) IIS的任何真子集都是可行的
想解决这种IIS问题,一般有两种方式:
(1). 从不可行集合(IIS)中递归删除约束直到模型变得可行
(2). 向优化问题添加松弛变量并允许调整输入参数 ==> 选这一种比较实际
关于IIS和松弛变量,详细部分可以看上一篇笔记中的例子(前期工作的文献笔记),也可以找点别的资料增加理解。
2.4. OptiChat的功能
- 功能1 - 敏感性分析:基于线性规划的对偶理论,当扰动参数b接近b∗时,最优原始目标值是输入参数的线性函数,梯度为y∗。这表明原始输入参数的问题的最优对偶解可用于推断在b∗附近的最优目标值的敏感性。
-
功能2 - Model Modification(模型修改):根据“what-if假设查询”更新参数或约束(如c^, A^, b^),重新求解。
-
功能3 - Counterfactual Explanation(反事实解释):处理实践者因缺乏专业知识提出的不合理请求。
- 方法:添加用户提议的约束(比如用户强制选择某方案某约束),求解并比较新旧结果
- 意义:解释为何某方案未被选中,揭示权衡关系
- 异常处理:
- 诊断查询中的异常:若对左端参数A添加松弛变量,会导致非凸问题(MIQCP),难以求解;检测到此类请求时,提醒用户A通常不可变(如机器加工时间),避免无效计算。
- 敏感性分析中的异常:当对A的敏感性分析无对偶理论支持、MILP中对偶等式不成立;通知用户不支持此类分析,建议转为“假设”查询。
- 预定义函数失败:调用程序员和评估代理生成替代代码。
3. 实验部分
3.1. 实验设置
- 数据集:包含172个问答对,基于24个模型开发,覆盖五类查询
- 组件: GPT-4,Gurobi作为优化求解器,pyomo作为建模语言
- 测试对象:24个用Pyomo/Python编写的优化模型,覆盖供应链、制造、炼油等多个领域
- 模型来源:包括GAMS模型库、Notre Dame的Pyomo Cookbook、GitHub教程及优化教材
- 参与者:29名优化专家(研究生和博士后),用于对比OptiChat与人工表现
- 评估维度:
- 模型描述:生成速度和质量
- 查询响应:准确性(成功率)和响应时间
3.2. 实验结果
3.2.1. 模型解释任务评估
比较OptiChat和专家在生成优化模型描述上的效率和质量,若模型不可行,还需诊断原因
结论:OptiChat的自动化预处理和LLM的上下文适应性显著提高了效率
3.2.2. 查询响应评估
3.2.2.1. 定量评估
评估OptiChat在五类查询(诊断、检索、敏感性、假设、为何不)上的表现
评估方法:
- “Why-not为何不”查询:通过代码生成,手动验证结果与专家答案一致性
- 其他查询:通过预定义函数,自动比对函数名和参数是否匹配基准
结论:
- 多代理框架和预定义函数能减少幻觉;
- “Why not为何不”查询因代码生成复杂性准确性较低。反正比专家强:D
- 缺陷:
- LLM可能误选函数或生成不可执行代码
- 自然语言歧义(如索引表述不一致)影响了准确性
3.2.2.2. 定性评估
展示OptiChat在实际场景中的回答质量
敏感性查询例子
解释:OptiChat揭示了意外的敏感参数,指导策略:指出Facility 3的加班生产能力对利润影响最大(增加191.2单位),建议优先调整
Why-not查询例子
解释:OptiChat尝试说服管理者接受模型建议:解释了单个回收中心不可行,因容量不足导致瓶颈,需两个中心
4. 总结
通过多代理框架和优化工具的结合,OptiChat实现了对优化模型的全面解释,并在实验中验证了其高效性和准确性,为优化领域的可解释性研究提供了新工具和数据支持。