文章目录

  • 相关知识点
    • 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库)实现 附代码相关推荐

  1. 混合整数规划MIP/线性规划LP+python(cplex库)实现 附代码

    文章目录 相关知识点 LP线性规划问题 MIP混合整数规划 MIP的Python实现(docplex库) MIP的Python实现(ortool库) 喜欢的话请关注我们的微信公众号~<你好世界炼 ...

  2. python混合整数线性规划_【Python代码】混合整数规划MIP/线性规划LP+python(ortool库)实现...

    相关知识点 LP线性规划问题 Linear Problem [百度百科]:研究线性约束条件下线性目标函数的极值问题的数学理论和方法. 学过运筹学的小伙伴,可以看这个LP问题的标准型来回顾一下: 不太熟 ...

  3. 新视角带你认识Python可视化库(附代码资源)

    作者:Dan Saber 翻译:笪洁琼 校对:梁傅淇 本文约16196字,建议阅读20+分钟. 本文中,作者借助拟人化的形式,让Python中值得一提的可视化库共同出演了一出戏剧,形象.生动地展现了不 ...

  4. 线性规划LP和混合整数规划MIP基础知识

    如果你刚刚入门线性规划,对于线性规划的基本原理.概念.术语,以及 Gurobi 内部的核心算法不了解的话,请花费 10分钟时间,阅读以下两个科普文章.如果对于英文不熟练的话,可以采用谷歌浏览器,然后选 ...

  5. Python 开源库及示例代码

    Python 开源库及示例代码 更多干货 分布式实战(干货) spring cloud 实战(干货) mybatis 实战(干货) spring boot 实战(干货) React 入门实战(干货) ...

  6. python常用代码入门-入门十大Python机器学习算法(附代码)

    入门十大Python机器学习算法(附代码) 今天,给大家推荐最常用的10种机器学习算法,它们几乎可以用在所有的数据问题上: 1.线性回归 线性回归通常用于根据连续变量估计实际数值(房价.呼叫次数.总销 ...

  7. Python科学绘图实例附代码

    Python绘图精简实例附代码 作者:金良(golden1314521@gmail.com) csdn博客:http://blog.csdn.net/u012176591 Python绘图精简实例附代 ...

  8. 一文盘点三大顶级Python库(附代码)

    来源:开源最前线 本文约1500字,建议阅读5分钟. 本文为你分享最受数据科学青睐的3个顶级的Python库. Python在许多方面有着强大的吸引力 - 例如效率.代码可读性和速度方面,也正因为如此 ...

  9. 用Python进行机器学习(附代码、学习资源)

    作者:Tirthajyoti Sarkar 翻译:张逸 校对:冯羽 本文约3090字,建议阅读6分钟. 本文从非线性数据进行建模,带你用简便并且稳健的方法来快速实现使用Python进行机器学习. 使用 ...

最新文章

  1. 自动创建阿里云抢占式实例
  2. TCL with SNPS - get_object_namesizeof_collectionstring
  3. shell脚本详解(七)——正则表达式、sort、uniq、tr
  4. 用java正则表达式验证字符串(邮箱与网址)
  5. uip UDPclient模式通信移植,当地port随机
  6. sublime中编译的sass如何改变css输出风格?【这里有答案】
  7. Type(类型判断)
  8. 如果有什么想不开或者放不下的话,看看这里吧!(摘于网络)
  9. HTTP协议基本原理简介(三)
  10. 关于DBSCAN聚类算法
  11. java倒序输出英文句子_英文句子反转 -- 面试题(Java)
  12. php查询qq等级,php仿QQ等级太阳显示函数_php
  13. BT网站关了,正版电影数字发行在线收费下载 的机会?
  14. 服务器启动显示按f1f2f10,电脑开机提示按f1f2f5 电脑开机要按F1F2F5
  15. 客户机操作系统已禁用 cpu。请关闭或重置虚拟机。_Win10竟然内置了一台虚拟机?教你如何玩转它...
  16. think-swoole简易使用教程--websocket
  17. wangEditor图片上传
  18. 【中科院】分子生物学-朱玉贤第四版-笔记-第11-12讲 基因功能研究技术
  19. 在运行局域网中另一台电脑上的程序时,总是弹出“无法验证发行者,确定要运行此软件吗”
  20. 零基础学编程套路~~~

热门文章

  1. 【老生谈算法】matlab实现视频图像增强和去雾算法——去雾算法
  2. [BJDCTF2020]Mark loves cat(.git源码泄露与代码审计之变量覆盖漏洞)
  3. 在WooCommerce中设置最低结账要求
  4. 黑马程序员——0C语言——基础语法
  5. 职业生涯点评(一):体验式还是目标导向式
  6. JDBC 连接数据库方法小结
  7. 一个具有现金折扣系统的软件商城
  8. 服务器系统日志事件id41,win10系统经常蓝屏,事件ID41,Kernel-Power
  9. arcgispython编程案例_ArcGIS Python编程案例(1)-Python语言基础
  10. python_特征离散化Binarizerdigitize