【数学建模】Python+Gurobi求解线性规划
目录
1 概述
2 算例实现
3 Python+Gurobi求解线性规划
3.1 求解步骤
3.2 Python代码
3.3 求解结果
1 概述
在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear Programming 简记LP)则是数学规划的一个重要分支。自从1947年G.B.Dantzig提出求解线性规划的单纯形方法以来,线性规划在理论上趋向成熟,在实用中日益广泛与深入。特别是在计算机能处理成千上万个约束条件和决策变量的线性规划问题之后,线性规划的适用领域更为广泛了,已成为现代管理中经常采用的基本方法之一。
线性规划前面已经总结很多,文章链接:
线性规划(Python各种包实现及Yalmip+Cplex)
2 算例实现
3 Python+Gurobi求解线性规划
3.1 求解步骤
3.2 Python代码
'''1导入优化包'''
from gurobipy import * # 在Python中调用gurobi求解包'''2 模型建立'''
#=============2.1变量声明=============
LP=Model("LP_Exam") # LP_Exam线性规划模型,直接套用就行
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设置目标函数=========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.write("LP_Expression.lp")
# 输出结果
print('=========================')
print('====最优解为========')
print('===========================')
print('OP is :',LP.ObjVal) # 输出目标值
print('x1 is :',x1.x) # 输出 X1 的值
print('x2 is :',x2.x)
'''1导入优化包''' from gurobipy import * # 在Python中调用gurobi求解包'''2 模型建立''' #=============2.1变量声明============= LP=Model("LP_Exam") # LP_Exam线性规划模型,直接套用就行 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设置目标函数=========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.write("LP_Expression.lp") # 输出结果 print('=========================') print('====最优解为========') print('===========================') print('OP is :',LP.ObjVal) # 输出目标值 print('x1 is :',x1.x) # 输出 X1 的值 print('x2 is :',x2.x)
3.3 求解结果
Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (win64)
Thread count: 8 physical cores, 16 logical processors, using up to 16 threads
Optimize a model with 3 rows, 3 columns and 6 nonzeros
Model fingerprint: 0x0b0b64fc
Coefficient statistics:Matrix range [1e+00, 3e+00]Objective range [2e+00, 4e+00]Bounds range [3e+00, 3e+00]RHS range [4e+00, 6e+00]
Presolve removed 3 rows and 3 columns
Presolve time: 0.00s
Presolve: All rows and columns removed
Iteration Objective Primal Inf. Dual Inf. Time0 -3.8000000e+01 0.000000e+00 2.000000e-06 0sSolved in 0 iterations and 0.01 seconds (0.00 work units)
Optimal objective -3.800000000e+01
输出名为‘LP_Expression’的 .lp文件
=========================
====最优解为========
===========================
OP is : -38.0
x1 is : 13.0
x2 is : -3.0Process finished with exit code 0
Gurobi Optimizer version 9.5.2 build v9.5.2rc0 (win64)
Thread count: 8 physical cores, 16 logical processors, using up to 16 threads
Optimize a model with 3 rows, 3 columns and 6 nonzeros
Model fingerprint: 0x0b0b64fc
Coefficient statistics:
Matrix range [1e+00, 3e+00]
Objective range [2e+00, 4e+00]
Bounds range [3e+00, 3e+00]
RHS range [4e+00, 6e+00]
Presolve removed 3 rows and 3 columns
Presolve time: 0.00s
Presolve: All rows and columns removed
Iteration Objective Primal Inf. Dual Inf. Time
0 -3.8000000e+01 0.000000e+00 2.000000e-06 0s
Solved in 0 iterations and 0.01 seconds (0.00 work units)
Optimal objective -3.800000000e+01
输出名为‘LP_Expression’的 .lp文件
=========================
====最优解为========
===========================
OP is : -38.0
x1 is : 13.0
x2 is : -3.0
Process finished with exit code 0
【数学建模】Python+Gurobi求解线性规划相关推荐
- python数学建模(二)线性规划2.实战(思路清晰\过程完整、详细)
文章目录 (一)简单陈述本文章的内容 (二)线性规划例题(实战) 2.1 实战题目 2.2 符号规定和基本假设 2.3 模型的分析 2.4 模型的建立 2.5 模型一的求解和分析 2.5.1 (代码) ...
- 数学建模算法与应用 线性规划(cvxpy包)
数学建模算法与应用 线性规划(使用cvxpy包) 说明 使用python中cvxpy库完成<数学建模算法与应用>中课后习题 因为本人也是初学者,若代码有错误还请各位指出 cvxpy库的使用 ...
- 数学建模python实现基础编程练习4
数学建模python实现基础编程练习4 1.使用networkx实现最短路和最短距离 import networkx as nx list1 = [(1,2,7),(1,3,3),(1,4,12),( ...
- 数学建模python实现基础编程练习1
数学建模python实现编程练习1 习题来自<python数学实验与建模> 1.利用sympy库进行画单叶双曲面 用pyplot画的不是很理想,就用sympy画了,利用plot3D函数 f ...
- 【数学建模】2000全国大学生数学建模D题求解
目录 [数学建模]2000全国大学生数学建模D题求解 [数学建模]2000全国大学生数学建模D题求解 model: title CUMCM-2000D-b; sets: pp/p1..p7/; !也表 ...
- 数学建模Python图论习题
数学建模简明教程-基于python 第五章 图与网络优化 文章目录 数学建模简明教程-基于python 题目 三.3如表5.3是某运输问题的相关数据,将次问题转换为最小费用最大流问题,画出网络图并求解 ...
- 数学建模python和java_参加数学建模用 MATLAB,还是 Python?
用哪个不重要,重要的是能找到代码!代码查找和改写的能力很重要!建模就三天的时间,纯打代码肯定是来不及的,必须要找点套路!!! 一般情况下,这两个软件都可以,不过大多数人会选择使用MATLAB ,因为用 ...
- 数学建模酶促反应matlab求解,数学建模——酶促反应.doc
数学建模--酶促反应 数学建模 摘要 本文针对嘌呤霉素在某项酶促反应中对反应速度和底物浓度之间的关系的影响的问题,根据实际可知符合底物浓度与反应速度的模型有两种,即Michaelis-Menten模型 ...
- 数学建模之规划1——线性规划
什么是规划 在有限的资源状况下,干最有意义的事,其实就是规划. 小例子 例如我要盖大楼,我有这么多钱,我要请人设计.买设备.买材料资源,我们应该怎么平衡钱的花费,使得完成盖大楼这件事. 数学规划模型怎 ...
- 数学建模——差分算法(求解偏微分方程)
差分算法(求解偏微分方程) 差分算法是数学建模比赛中的一种十分常见的代码,在2018A题和2020A中均用到一维热传导模型,模型的求解用的就是差分算法,具体如何解可以自己去查看相关论文. 定义 差分方 ...
最新文章
- 2.1JAVA基础复习——JAVA语言的基础组成注释和常量变量
- 实际程序调用IndexWriter* writer = NULL
- iOS 修改项目名称
- 经典排序算法(3)——直接插入排序算法详解
- MapReduce 中的两表 join 几种方案简介
- GCC帧指针的开启与关闭以及反汇编测试
- python写标准api_用python写api
- 高并发系统数据幂等性
- java中listview_需要高效的数据映射在Android /Java中进行ListVIEW钻孔的例子
- dockerfile中的env指令_Dockerfile中的ENV指令的具体使用详解
- java开发和安卓开发_Java开发和Android开发,有什么不同吗?
- Qemu复现雄迈摄像头固件漏洞
- 个人信贷不良资产成因和策略
- android 联系人 字母索引,Android手机联系人带字母索引的快速查找
- Windows系统盘瘦身
- Java递归解压zip压缩包
- 数据分析之matplotlib画图工具的使用(一)
- 批量关闭公众号推送_微信发大招,长期不读的公众号可“批量关闭”!
- Matlab 2014a安装文件下载、安装教程及破解教程!!!
- 操作系统:文件的物理结构(文件分配方式)
热门文章
- MyBatisPlus极速入门
- xxx.so has text relocations. This is wasting memory and is a security risk. Please fix
- html中放大镜字体图标,CSS3 放大镜应用图标
- “男朋友送了我一瓶才100多块的香水”
- plsql的安装与配置
- “esxcli software vib” commands to patch an ESXi 5.x/6.x host (2008939)
- jquery的一些小小实例
- A Little Is Enough: Circumventing Defenses For Distributed Learning(绕过对分布式学习的防御)
- 刷题——求斐波那契数列的第n项(迭代)
- 波士顿房价预测python决策树_模型评价与验证-波士顿房价预测.ipynb