当前位置:   article > 正文

python通过Gurobi求解线性规划_grubi求解器python

grubi求解器python

Gurobi

Gurobi是一款强大的商业数学规划求解器,用于解决线性规划(LP)、整数规划(IP)、混合整数规划(MIP)、二次规划(QP)、非线性规划(NLP)等各种优化问题。它具有高效的求解算法、丰富的功能和友好的用户界面,被广泛应用于学术界和工业界。Gurobi采用了最先进的优化算法和技术,具有出色的求解速度和效率。它能够处理大规模、复杂的数学规划问题,并在较短的时间内找到最优解或接近最优解。

Gurobi中主要的变量类型

Gurobi中Model.addVar()用到的变量类型 vtype主要有以下三种

  • 连续变量(Continuous Variables):连续变量可以在其定义的上下界之间取任意实数值。在Gurobi中,连续变量用GRB.CONTINUOUS表示,Gurobi默认是连续变量。
  • 整数变量(Integer Variables):整数变量只能取整数值。在Gurobi中,整数变量用GRB.INTEGER表示。
  • 二进制变量(Binary Variables):二进制变量只能取0或1。在Gurobi中,二进制变量用GRB.BINARY表示。

Gurobi使用基本步骤

在安装Gurobi之后,为了可以在Python中调用Gurobi函数,可以通过以下命令安装Gurobi Python接口:

pip install gurobipy
  • 1

使用步骤

  1. 引入Gurobi的环境:from gurobipy import *
  2. 建立模型:创建Gurobi模型:Model()
  3. 变量声明:Model.addVar()
  4. 添加目标函数:Model.setObjective()
  5. 添加条件约束:Model.addConstr()
  6. 模型求解:Model.optimize()

求解线性规划模型

代码实现

'''1导入优化包'''
from gurobipy import *  # 在Python中调用gurobi求解包

'''2 建立模型'''
LP = Model("LP_model")  # LP_test为线性规划模型名称,可以直接套用
'''============2.1变量声明=================
lb表示变量的下届,up表示变量的上界,name为变量名称'''
OP = LP.addVar(lb=-GRB.INFINITY, ub=GRB.INFINITY, name="OP")
x1 = LP.addVar(lb=-GRB.INFINITY, ub=GRB.INFINITY, name="x1")
x2 = LP.addVar(lb=-3, ub=GRB.INFINITY, name="x2")

''' ===========2.2设置目标函数=========
#GRB.MINIMIZE表示求最小值的最优解,GRB.MAXIMIZE求最大值的最优解 '''
LP.setObjective(-2 * x1 + 4 * x2, GRB.MINIMIZE)

''' ===========2.3添加条件约束==========='''
LP.addConstr(-3 * x1 + x2 <= 6, "Con1")
LP.addConstr(x1 + 2 * x2 >= 4, "Con2")
LP.addConstr(x1 + 3 * x2 == 4, "Con3")

'''3模型求最优解'''
LP.optimize()
print("输出名为‘LP_Expression’的 .lp文件")
#将程序的运行结果写入以.lp结尾的文件中
LP.write("LP_Expression.lp")
# 输出结果
print('====最优解为========')
 # 输出目标最优值
print('OP is :', LP.ObjVal) 
#输出X1的值
print('x1 is :', x1.x)  
#输出X2的值
print('x2 is :', x2.x)  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

程序运行结果

\ Model LP_Exam
\ LP format - for model browsing. Use MPS format to capture full model detail.
Minimize
  0 OP - 2 x1 + 4 x2
Subject To
 Con1: - 3 x1 + x2 <= 6
 Con2: x1 + 2 x2 >= 4
 Con3: x1 + 3 x2 = 4
Bounds
 OP free
 x1 free
 x2 >= -3
End

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/645073
推荐阅读
相关标签
  

闽ICP备14008679号