gurobi解的状态及其属性获取

根据之前的文章线性规划和对偶规划学习总结,我们知道,解有三种状态:

1.无解;

2.有界解;

3.无界解。

在gurobi中,可以通过提取状态,知道模型状态。也就是利用对偶理论可以知道当前模型解的可能情况。

(1)获取解的状态

model.status 

可能的取值如上所示。status==2,代表最优;status==3,代表无可行解;status==5,为无界解。刚好与最上边的三种状态对应。

(2)获取对应属性信息

a)最优,可以直接获取变量及其约束所对应的对偶变量值(也叫影子价格)

 #获取变量的值
for v in model.getVars():
        print(v.varName, '=', v.x) 

# 获取对偶变量的值,与约束相关
model.getAttr(grb.GRB.Attr.Pi, model.getConstrs())
或者可以写成循环形式
for con in model.getConstrs(): #循环获取
    print(con.ConstrName, '----', con.Pi)

b)无解,可以获取约束的极射线

   for con in model.getConstrs():
       print(con.ConstrName, '----', con.FarkasDual)

c)无界,可以获取无界射线

仅仅适用于无界线性模型,可以提供一个向量,当添加到任何可行解时,该向量将生成一个新的可行解,但会改进目标。

model.getAttr(grb.GRB.Attr.UnbdRay)

注意,后两种情况,必须在model.optimize()之前设定,model.setParam('InfUnbdInfo', 1) 。

  • 6
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值