首页 > Python资料 博客日记
python通过Gurobi求解线性规划
2024-08-12 15:00:06Python资料围观270次
Python资料网推荐python通过Gurobi求解线性规划这篇文章给大家,欢迎收藏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
使用步骤
- 引入Gurobi的环境:from gurobipy import *
- 建立模型:创建Gurobi模型:Model()
- 变量声明:Model.addVar()
- 添加目标函数:Model.setObjective()
- 添加条件约束:Model.addConstr()
- 模型求解: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)
程序运行结果
\ 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
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj