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

本文介绍了如何使用Python的Ortool库和docplex库解决混合整数规划(MIP)和线性规划(LP)问题。内容包括LP问题的定义、MIP的概念,以及通过Ortool库和docplex库的实践代码示例。同时,文章还提及了Python中的assert用法。
摘要由CSDN通过智能技术生成

喜欢的话请关注我们的微信公众号~《你好世界炼丹师》。

  • 公众号主要讲统计学,数据科学,机器学习,深度学习,以及一些参加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'
  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
混合整数线性规划是一种数学问题,它在线性约束条件下寻求线性目标函数的最优解。在混合整数线性规划中,决策变量部分是整数,而不要求全部都是整数。混合整数线性规划问题通常比线性规划问题更难求解。在求解过程中,可以使用分支定界法、割平面法等方法,将问题划分为子问题,并调用线性规划LP)求解模块进行求解。\[2\] Python提供了一些实现混合整数线性规划,其中一个常用的是docplex。docplex提供了MIP(Mixed Integer Programming)的Python实现。使用docplex可以方便地解决混合整数线性规划问题。\[2\] 需要注意的是,大多数广泛使用的线性规划混合整数线性规划都是使用Fortran、C或C++原生编写的。这是因为线性规划需要进行计算密集型的矩阵计算。Python工具只是这些求解器的包装器。\[3\] #### 引用[.reference_title] - *1* [混合整数规划MIP/线性规划LP+python(cplex)实现 代码](https://blog.csdn.net/qq_34107425/article/details/104046037)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [MindOpt对于混合整数线性规划问题如何建模优化(python语言)](https://blog.csdn.net/MindOpt_003/article/details/128446505)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [万字教你如何用 Python 实现线性规划](https://blog.csdn.net/devcloud/article/details/121990568)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值