当前位置:网站首页>gurobi解的状态及其属性获取

gurobi解的状态及其属性获取

2022-06-10 00:19:00 云湖在成长

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

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) 。

原网站

版权声明
本文为[云湖在成长]所创,转载请带上原文链接,感谢
https://blog.csdn.net/sinat_41348401/article/details/125068321