【文献笔记】Diagnosing Infeasible Optimization Problems Using Large Language Models

Diagnosing Infeasible Optimization Problems Using Large Language Models

标题翻译:利用大语言模型诊断不可行优化问题

1. 内容简介

OptiChat (build on gpt4) 是一个首创的基于自然语言的系统,配备了聊天机器人GUI,用于进行关于优化不可行问题的模型的交互对话。它的主要作用是作为一个自然语言接口,将优化求解器的反馈和模型的诊断结果以更易于理解的方式呈现给用户。

OptiChat提供优化模型本身的自然语言描述,识别不可行的潜在来源,并提供使模型可行的建议,与优化求解器接口,以识别使整个优化问题不可行的最小约束子集IIS。

简单流程:要优化的不可行模型(pyomo模型) --> OptiChat (利用solver)–> 给优化建议。

原文代码

1.1. 背景:混合整数线性规划( MILP )

数学优化在飞机机组人员调度、智能电网运行、投资组合优化等现实决策问题中有着广泛的应用。这些应用大多可以表示为一个混合整数线性规划( MILP )。即在给定一组线性约束条件Ax≤b 的前提下,最小化目标函数CTX。

MILP


1.1.1. 什么叫不可行?

不可行表示这个没有解,不存在某个x满足所有的约束。常用不可约不可行子集(Irreducible Infeasible Subset (IIS))刻画不可行优化模型。

IIS满足:

  1. IIS本身是不可行的;
  2. IIS的任何真子集都是可行的

IIS

一个IIS例子,约束ABC构成一个约束集,没有解同时满足这三个约束的解,但删掉任一一个约束,剩下的约束集有解。


1.1.2. 作为一个专家是怎么解决不可行的?

一般有两种方式:

  1. 递归地移除IIS算法检测到的约束,直到模型变得可行;
  2. 通过改变输入参数,在优化问题中加入松弛变量。
    注:OptiChat采取的是第二种方法,因为在实际应用中,移除约束并不实际,这点后面详细再说。

这就存在了一个问题:之前为这种问题开发的各种系统都是专家系统 – 需要相当多的领域知识和优化背景。但我们并不是这方面的专家,所以希望能通过自然语言来优化。=> 于是产生了:

OptiChat: 利用GPT-4与优化求解器交互,为用户提供自然语言解释。GPT-4分析优化模型,并在发现模型不可行时,通过自然语言描述问题、诊断不可行的原因,并提供改进建议。GPT-4能够从用户的反馈中学习,并调整模型参数或建议合理的调整方向。

2. OptiChat流程概述

概览

2.1. OptiChat的各种组件

  • 用户:通过自然语言与系统进行互动。
  • 提示工程和算法:提高性能和稳定性。
  • 四项主要任务
    1. 模型分析:提供模型的上下文描述,帮助用户理解模型
    2. 不可行诊断:通过求解器返回不可行子集(IIS),并将其转化为自然语言解释
    3. 故障排查建议:比如引入松弛变量或修改参数
    4. 互动对话:用户可以继续交互直到问题解决
  • 优化模型:表示实际需要优化的问题,系统会通过编程工具(如Pyomo/Python)提取这些表达式。
  • 优化求解器:用Gurobi求解Pyomo优化模型,识别不可行的约束(IIS),并尝试调整参数使问题可行。

交互例子

(一个用户交互的例子)

注:最开始用户给OptiChat的输入是Pyomo格式的优化模型,而不是直接通过自然语言描述问题。

然后OptiChat通过Pyomo建模工具提取模型的符号表达式(如决策变量、输入参数、约束和目标函数),再通过优化求解器进行分析。如果模型不可行,OptiChat会识别出不可行的约束并通过自然语言与用户交互,解释问题并提供修复建议。

后续与用户交流才是自然语言。


提示工程用到的4个技巧:

  1. 专家思维链:给llm提供了专家是怎么一步步解决不可行问题的
  2. 小样本演示:提供了一些优化问题的正确答案
  3. 键值检索:从Pyomo代码中检索参数和约束名的键值,以提高鲁棒性
  4. 用户情感分析

提示工程

四项主要任务中用到这些技巧的情况。


2.2. 四项主要任务过程

  • T1 模型分析:首先使用Pyomo优化工具从代码中提取模型参数和约束条件,并将键值检索对嵌入提示中。其次,专家思维链对模型进行概述,然后总结输入参数、需要做出的决策和约束条件。而且在专家思维链的每一步中都使用经典旅行商问题和背包问题的小样本演示。

  • T2 不可行诊断:OptiChat使用Gurobi求解器来寻找IIS,然后利用专家思维链、小样本和键值检索用于生成与模型描述相似的不可行性推理。最后OptiChat用自然语言解释给用户。

  • T3 故障排查建议:IIS中涉及的参数使用Pyomo建模API进行提取。根据这些参数在真实世界中是否可以低成本地改变,向用户提出建议。另一个准则是尽量避免改变左端参数,使模型保持为MILP。这些考虑通过专家思维链和小样本提示传达给LLM,其中给出了LLM在现实世界中的几个参数及其可调性的例子,例如,可以扩大存储船的容量,但不能改变一天中的小时数。

  • T4 互动对话: 可以根据与用户的交谈来决定何时解决松弛变量的问题。比如用户可能对建议同意或者不同意,OptiChat可以通过情感分析来判断,只有通过与用户的会话推导出的参数可以调整。


T3 故障排查建议 具体是怎么做的?

OptiChat采取在优化问题中加入松弛变量来解决不可行问题:

松弛变量是通过允许约束条件适度违反来放宽问题,从而帮助恢复模型的可行性。公式上,如果原始问题中有一个不等式约束:Ax ≤ b ,通过引入了松弛变量后,约束变为Ax ≤ b+δb+, 其中δb+就是松弛变量,它放松了原不等式约束的右侧,使得原本不可行的问题有了一个更宽松的可行区域。

松弛变量

  • δA+,δA- :分别表示松弛左侧系数矩阵A的正负调整部分
  • δb+ :表示对约束右侧向量b的松弛
  • 目标:最小化松弛变量的总和,即找到最小的调整使问题变为可行。

注:关于为什么b是单向调整(+),而A是双向调整(±):
b通常代表某种固定的上限或限额,所以一般只是放宽上限;
A是系数矩阵,对于不同的决策变量x,例如两种产品x1,x2, 而a1,a2代表各自产品的资源消耗量,b是资源上限:a1x1 + a2x2 ≤ b;

可能实际情况x1需要资源增加但x2需要的资源减少,这就产生了两种调整方式。

但在实际应用中,调整约束左侧(如系数矩阵A)往往比调整右侧(如向量b)更复杂,会造成一个非凸的混合整数二次约束规划( MIQCP ),而且优化问题中的左端参数大多对应于不易改变的物理特性,因此,通常优先考虑调整 b来放宽约束。


一个引入松弛变量来解决不可行的图例:

IIS解决例子

解决方法:
(a) 旋转约束A;
(b) 平移约束A,松弛变量 δb+被引入到约束的右边,即将原来的约束向外平移。

3. 实验部分

3.1. 实验设置

  • 数据集:包括63个不可行实例;
  • 对照实验:8个无经验用户和7个有经验用户,分别对20个和38个不可行实例进行了故障排除;
  • 评估:OptiChat在解释模型和指导用户修复模型方面的易用性、响应质量和准确性

3.2. 实验结果

故障排查评估

有经验的用户组在不使用OptiChat的条件下修复了38个不可行的优化实例。大多数使用三种修复策略:

  1. 验证IIS;
  2. 激活/去激活约束;
  3. 通过添加松弛变量来放松约束。

后两种策略容易出现人为失误,并且根据模型的大小而耗时。


有和没有经验的两组用户使用OptiChat对随机选取的若干实例进行修复并进行评分:

OptiChat评估

准确率

结果显示,两组参与者都表明了OptiChat在理解优化模型和简化现实优化模型的故障处理流程方面的有效性。

4. 未来改进

可根据用户的专业知识水平来调整用于解释模型和不可行性的语言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值