混合整数规划MIP/线性规划LP+python(ortool库)实现 附代码
文章目录
- 相关知识点
- LP线性规划问题
- MIP混合整数规划
- MIP的Python实现(Ortool库)
- assert
- MIP的Python实现(docplex库)
喜欢的话请关注我们的微信公众号~《你好世界炼丹师》。
- 公众号主要讲统计学,数据科学,机器学习,深度学习,以及一些参加Kaggle竞赛的经验。
- 公众号内容建议作为课后的一些相关知识的补充,饭后甜点。
- 此外,为了不过多打扰,公众号每周推送一次,每次4~6篇精选文章。
微信搜索公众号:你好世界炼丹师。期待您的关注。
相关知识点
LP线性规划问题
- Linear Problem
- [百度百科]:研究线性约束条件下线性目标函数的极值问题的数学理论和方法。
学过运筹学的小伙伴,可以看这个LP问题的标准型来回顾一下:
不太熟悉的朋友可以看这个例题,再结合上面的标准型,来感受一下:
MIP混合整数规划
- Mixed Integar Planing
- 混合整数规划是LP的一种,决策变量部分是整数,不要求全部都是整数的规划问题。
- 这里MIP的求解器是使用CBC(Corn-or Branch and Cut)
- CBC (COIN-OR Branch and Cut) is an open-source mixed integer programming solver working with the COIN-OR LP solver CLP and the COIN-OR Cut generator library Cgl. The code has been written primarily by John J. Forrest. 更多详情看这里,但是笔者认为没啥必要。
MIP的Python实现(Ortool库)
我们来看一道简单的例题:
其中x,y都是整数
from ortools.linear_solver import pywraplp
# 首先,调用CBC求解器
# 整数规划使用pywraplp.Solver.GLOP_LINEAR_PROGRAMMING
solver = pywraplp.Solver('SolveIntegerProblem',pywraplp.Solver.CBC_MIXED_INTEGER_PROGRAMMING)# 定义x和y的定义域,这里是从0到正无穷
x = solver.IntVar(0.0, solver.infinity(), 'x')
y = solver.IntVar(0.0, solver.infinity(), 'y')
# 添加约束:x+7y<17.5
constraint1 = solver.Constraint(-solver.infinity(), 17.5)
constraint1.SetCoefficient(x, 1)
constraint1.SetCoefficient(y, 7)
# 添加约束:x <= 3.5
constraint2 = solver.Constraint(-solver.infinity(), 3.5)
constraint2.SetCoefficient(x, 1)
constraint2.SetCoefficient(y, 0)
# 定义目标函数: Maximize x + 10 * y
bjective = solver.Objective()
objective.SetCoefficient(x, 1)
objective.SetCoefficient(y, 10)
objective.SetMaximization()
# 获取问题的答案
result_status = solver.Solve()
# 判断结果是否是最优解
assert result_status == pywraplp.Solver.OPTIMAL
# 验证一下结果是否正确,这一步不是必要但是推荐加上
assert solver.VerifySolution(1e-7, True)
# 输出结果
print('Number of variables =', solver.NumVariables())
print('Number of constraints =', solver.NumConstraints())
print('Optimal objective value = %d' % solver.Objective().Value())
variable_list = [x, y]
for variable in variable_list:print('%s = %d' % (variable.name(), variable.solution_value()))
可以看一下自己运行的结果:
assert
这里涉及python 的一个assert的语法,不懂得可以简单看一下:
Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。
断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况,
MIP的Python实现(docplex库)
混合整数规划MIP/线性规划LP+python(docplex库)实现 附代码
参考:
1.assert
2.ortools
混合整数规划MIP/线性规划LP+python(ortool库)实现 附代码相关推荐
- 混合整数规划MIP/线性规划LP+python(cplex库)实现 附代码
文章目录 相关知识点 LP线性规划问题 MIP混合整数规划 MIP的Python实现(docplex库) MIP的Python实现(ortool库) 喜欢的话请关注我们的微信公众号~<你好世界炼 ...
- python混合整数线性规划_【Python代码】混合整数规划MIP/线性规划LP+python(ortool库)实现...
相关知识点 LP线性规划问题 Linear Problem [百度百科]:研究线性约束条件下线性目标函数的极值问题的数学理论和方法. 学过运筹学的小伙伴,可以看这个LP问题的标准型来回顾一下: 不太熟 ...
- 新视角带你认识Python可视化库(附代码资源)
作者:Dan Saber 翻译:笪洁琼 校对:梁傅淇 本文约16196字,建议阅读20+分钟. 本文中,作者借助拟人化的形式,让Python中值得一提的可视化库共同出演了一出戏剧,形象.生动地展现了不 ...
- 线性规划LP和混合整数规划MIP基础知识
如果你刚刚入门线性规划,对于线性规划的基本原理.概念.术语,以及 Gurobi 内部的核心算法不了解的话,请花费 10分钟时间,阅读以下两个科普文章.如果对于英文不熟练的话,可以采用谷歌浏览器,然后选 ...
- Python 开源库及示例代码
Python 开源库及示例代码 更多干货 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boot 实战(干货) React 入门实战(干货) ...
- python常用代码入门-入门十大Python机器学习算法(附代码)
入门十大Python机器学习算法(附代码) 今天,给大家推荐最常用的10种机器学习算法,它们几乎可以用在所有的数据问题上: 1.线性回归 线性回归通常用于根据连续变量估计实际数值(房价.呼叫次数.总销 ...
- Python科学绘图实例附代码
Python绘图精简实例附代码 作者:金良(golden1314521@gmail.com) csdn博客:http://blog.csdn.net/u012176591 Python绘图精简实例附代 ...
- 一文盘点三大顶级Python库(附代码)
来源:开源最前线 本文约1500字,建议阅读5分钟. 本文为你分享最受数据科学青睐的3个顶级的Python库. Python在许多方面有着强大的吸引力 - 例如效率.代码可读性和速度方面,也正因为如此 ...
- 用Python进行机器学习(附代码、学习资源)
作者:Tirthajyoti Sarkar 翻译:张逸 校对:冯羽 本文约3090字,建议阅读6分钟. 本文从非线性数据进行建模,带你用简便并且稳健的方法来快速实现使用Python进行机器学习. 使用 ...
最新文章
- 自动创建阿里云抢占式实例
- TCL with SNPS - get_object_namesizeof_collectionstring
- shell脚本详解(七)——正则表达式、sort、uniq、tr
- 用java正则表达式验证字符串(邮箱与网址)
- uip UDPclient模式通信移植,当地port随机
- sublime中编译的sass如何改变css输出风格?【这里有答案】
- Type(类型判断)
- 如果有什么想不开或者放不下的话,看看这里吧!(摘于网络)
- HTTP协议基本原理简介(三)
- 关于DBSCAN聚类算法
- java倒序输出英文句子_英文句子反转 -- 面试题(Java)
- php查询qq等级,php仿QQ等级太阳显示函数_php
- BT网站关了,正版电影数字发行在线收费下载 的机会?
- 服务器启动显示按f1f2f10,电脑开机提示按f1f2f5 电脑开机要按F1F2F5
- 客户机操作系统已禁用 cpu。请关闭或重置虚拟机。_Win10竟然内置了一台虚拟机?教你如何玩转它...
- think-swoole简易使用教程--websocket
- wangEditor图片上传
- 【中科院】分子生物学-朱玉贤第四版-笔记-第11-12讲 基因功能研究技术
- 在运行局域网中另一台电脑上的程序时,总是弹出“无法验证发行者,确定要运行此软件吗”
- 零基础学编程套路~~~
热门文章
- 【老生谈算法】matlab实现视频图像增强和去雾算法——去雾算法
- [BJDCTF2020]Mark loves cat(.git源码泄露与代码审计之变量覆盖漏洞)
- 在WooCommerce中设置最低结账要求
- 黑马程序员——0C语言——基础语法
- 职业生涯点评(一):体验式还是目标导向式
- JDBC 连接数据库方法小结
- 一个具有现金折扣系统的软件商城
- 服务器系统日志事件id41,win10系统经常蓝屏,事件ID41,Kernel-Power
- arcgispython编程案例_ArcGIS Python编程案例(1)-Python语言基础
- python_特征离散化Binarizerdigitize