You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gurobi中能否获取不可行LP对偶问题的极射线?

解决不可行LP对偶极射线的Gurobi方法

好问题!刚好我对Gurobi处理这类情况的方式很熟悉,完全不需要手动对偶化问题就能获取对偶的极射线,具体操作如下:

当你的原LP问题求解后返回GRB.INFEASIBLE状态时,根据强对偶定理,对偶问题必然无界。Gurobi内置了直接获取对偶极射线的属性,不需要你手动构建对偶模型。

具体Python实现步骤

  1. 先求解你的原模型:
model.optimize()
  1. 检查求解状态是否为不可行,若不可行则获取对偶极射线相关属性:
import gurobipy as gp
from gurobipy import GRB

# 假设你已经构建好model对象
model.optimize()

if model.status == GRB.INFEASIBLE:
    # 获取原线性约束对应的对偶射线部分
    farkas_dual = model.getAttr("FarkasDual", model.getConstrs())
    # 获取变量下界约束对应的对偶射线部分
    farkas_lower = model.getAttr("FarkasLower", model.getVars())
    # 获取变量上界约束对应的对偶射线部分
    farkas_upper = model.getAttr("FarkasUpper", model.getVars())

属性说明

  • FarkasDual:对应原问题中所有线性约束(比如Ax <= b这类)的对偶变量值,构成对偶极射线的核心部分。
  • FarkasLower & FarkasUpper:分别对应原问题中变量的下界(x >= lb)和上界(x <= ub)约束的对偶变量值,补全对偶极射线的完整方向。

这些属性返回的值组合起来,就是对偶无界问题的极射线方向——它满足对偶问题的所有约束,并且能让对偶目标函数趋向无穷(具体是正无穷还是负无穷,取决于原问题的目标类型是最大化还是最小化)。

需要注意的是,Gurobi 7.5.2完全支持这些属性,和Python 3.6的兼容性也没问题,直接用就好。

内容的提问来源于stack exchange,提问作者Matthias Aschenbrenner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:40:11