线性规划LP和混合整数规划MIP基础知识
如果你刚刚入门线性规划,对于线性规划的基本原理、概念、术语,以及 Gurobi 内部的核心算法不了解的话,请花费 10分钟时间,阅读以下两个科普文章。如果对于英文不熟练的话,可以采用谷歌浏览器,然后选择翻译为中文。
LP 基础:https://www.gurobi.com/resource/linear-programming-basics/
MIP 基础: https://www.gurobi.com/resource/mip-basics/
(参考翻译:cplex整数规划_Branch-and-Cut 解混合整数规划(MIP)_彷徨的牛的博客-CSDN博客)
一.优化基础
优化中非常重要的3个要素,分别是:决策变量、约束条件、和目标函数。
根据3个要素的不同,可以将问题划分为多种不同的类型。LP线性规划和MIP混合整数规划就是其中的两类。
二.LP线性规划
决策变量没有要求;约束条件是线性的;目标函数是线性的。
在生活中非常的常见。整数规划也在生活中非常常见,解决时与线性规划有密切的关系,可以说线性规划是基础,也是求解发展最成熟的一类模型。
解决LP的第一算法是George Dantzig in 1947提出的单纯形法。显着的,这65岁的旧算法仍然是今天解决这些问题的最有效和最可靠的方法之一。 单纯形方法的主要替代方法是内点法。 这种方法历史悠久,但其近期受欢迎程度是由于Karmarkar’s 1984的1984年多项式复杂性证明。 内点法从计算机架构中的最近进步中显着受益,包括引入多核处理器和SIMD指令集,并且通常被认为比Simplex从头开始解决LP问题更快。 然而,不同LP模型以及使用LP的许多不同方式,意味着在实践中两种算法都没有主导(并没有明确的谁最快),因此两者在计算线性规划中都很重要。
根据对Bench mark数据集的测试,并没有哪种求解器稳定占优。这主要有三个原因所影响(后两点不是特别明白):
(1)稀疏矩阵ASparse Linear Algebra,约束矩阵A非常稀疏,即包含非常少的非0项。(例如运输问题,单模矩阵)。
(2)数值处理误差。
(3)开发出不同的启发式策略(如单纯形法,每次选择一个进基变量,进基变量的不同会导致最终处理效率的不同),这个有赖于经验。
三.MIP混合整数规划(可以和IP整数规划互相转换,本质是求解同一类问题)
一些或全部的决策变量必须为整数,或者0-1变量(integrality constraints)
Gurobi MIP求解器还可以解决具有二次目标和/或二次约束的模型:
MIP模型具有二次目标但没有二次约束称为混合整数二次编程(MIQP)问题。具有二次约束的MIP模型称为混合整数二次约束编程(MIQCP)问题。没有任何二次特征的模型通常被称为混合整数线性编程(MILP)问题。
以下介绍求解MILP的算法:
通常使用基于LP的分支定界算法 branch-and-bound来解决。
思路很简单,可以看运筹学教材。就是不断分支,不断定界的过程。当松弛问题没有可行解或整数解大于当前下界(默认是最小值问题),那么就剪断此支(incumbent需要分支的节点;fathomed不必再分支的节点。)
整数解为上界,不断更换。同时有个有效下界,不断缩小上下界Gap的过程,就是寻优的过程。当上下界相等,那么就找到了最优解。
以下4种方法可以提高MIP的求解效率:
Presolve, Cutting Planes, Heuristics, Parallelism
(1)预处理Presolve
是指在分支定界之前进行的操作。可以减少问题的规模,或者可以收紧问题的formulation。简而言之,就是预处理使得问题更易求解。
(2)割平面Cutting Planes
也是收紧约束的一种方法,是通过移除一些分数解的方式实现的(没有任何副作用),比分支定界有效。
割平面非常有用。但是不把所有割平面都作为约束加在约束中主要有两个原因:第一,找到全部的割平面太难了,或者代价非常昂贵;第二,有的割平面加进去,反而不利于求解。 我们想加入的是,利于我们求解的割平面。
(3)启发式算法Heuristics
启发式算法的优点是快,能够快速地给出一个可行解。当求解MIP问题用户对时间要求严格时,启发式的意义就体现出来了。启发式算法给的可行解作为上界,松弛的问题很容易超过它,那么这一支就可以被砍掉了。
主要是提升求解效率,分得支更少。
(4)平行求解Parallelism
除了以上4种技术外,solver还提供了其它的一系列求解技巧。这些技巧的最终目的都是为了减少分支树的求解规模。
这些技巧通常可以通过gurobi的一些参数进行设置和调节。
参考:
优化|用Branch-and-Cut 解混合整数规划
混合整数规划 Branch-and-Cut求解方法
线性规划LP和混合整数规划MIP基础知识相关推荐
- 混合整数规划MIP/线性规划LP+python(cplex库)实现 附代码
文章目录 相关知识点 LP线性规划问题 MIP混合整数规划 MIP的Python实现(docplex库) MIP的Python实现(ortool库) 喜欢的话请关注我们的微信公众号~<你好世界炼 ...
- 混合整数规划MIP/线性规划LP+python(ortool库)实现 附代码
文章目录 相关知识点 LP线性规划问题 MIP混合整数规划 MIP的Python实现(Ortool库) assert MIP的Python实现(docplex库) 喜欢的话请关注我们的微信公众号~&l ...
- LP和MIP基础知识
LP和MIP是经典的建模工具, 如何快速求解一直是大家非常关心的问题. gurobi可能是目前此类问题的最优秀的求解工具, 但是对它的正确理解和适当的使用也很重要, 看看下面的的LP和MIP基础知 ...
- python混合整数线性规划_【Python代码】混合整数规划MIP/线性规划LP+python(ortool库)实现...
相关知识点 LP线性规划问题 Linear Problem [百度百科]:研究线性约束条件下线性目标函数的极值问题的数学理论和方法. 学过运筹学的小伙伴,可以看这个LP问题的标准型来回顾一下: 不太熟 ...
- 学习笔记21.08.16:利用python的cplex库解决混合整数规划MIP问题
# -*- coding: utf-8 -*- # The MIP problem solved in this example is: # 问题描述 # Maximize x1 + 2 x2 + 3 ...
- 整数规划、混合整数规划基础知识
优化 优化三大要素:决策变量.约束条件.和目标函数 根据3个要素的不同,优化问题划分为多种不同的类型,其中就包含线性规划LP和混合整数规划MIP. 线性规划 线性规划LP基础:https://www. ...
- IC基础知识(3)通用模拟,数字和混合信号集成电路
文章目录 写在前面 正文 数字IC 逻辑 内存 处理器 模拟IC 混合信号IC 结论 交个朋友 写在前面 原文链接:Common Analog, Digital, and Mixed-Signal I ...
- 密码算法学习笔记01:基础知识-公钥密码和混合密码系统
来自书籍<图解密码技术 第三版.pdf> 密码算法基础知识-公钥密码和混合密码系统 一.公钥密码 公钥密码--用公钥加密,用私钥解密. 公钥密码无需向接收者配送用于解密的钥匙,只需向发送者 ...
- java调用cplex实现经典Benders分解算法求解混合整数规划问题
算法介绍 Benders分解算法是由Jacques F. Benders在1962年首先提出,目的是用于解决混合整数规划问题(MIP问题),即连续变量与整数变量同时出现的极值问题.随着分解算法的不断演 ...
最新文章
- Unity协程截图,WWWForm、WWW配合上传
- RTX2013和微信企业号打通
- 一位年龄 35 的前饿了么同事,退休了!
- javascript(js)获取访客通过搜索引擎进入页面的搜索关键词的简洁有效代码
- java 计时器_Java多线程并发容器之并发倒计时器
- c++ 圆上任意点坐标计算_线性代数总结 第三章 向量代数与几何计算(空间平面和直线)...
- Spring Boot使用layui的字体图标时无法正常显示 解决办法
- MultipartFile和CommonsMultipartFile的区别!
- Eclipse 创建 Maven 工程
- Makefile:.d依赖文件
- 随手练——O(n)解决无序数组排序后的相邻最大差值
- board crt_容器编排系统K8s之Dashboard部署
- 逆clarke变换_克拉克(CLARKE)和帕克(PARK)变换
- GB2312和UTF-8
- chromecast投屏_Google的初代投屏神器Chromecast上手体验
- CFS任务的负载均衡
- 2021-07-07 Day01 前端基础第一天
- matplotlib 设置坐标轴位置(spines),设置坐标别名(xticks,yticks)
- 【2022新版】Java 终极学习路线(文末高清大图)-共计9大模块/6大框架/13个中间件
- 50例大数据术语英文翻译及详解
热门文章
- 总结二十二:如何在公司建立成功的技术文化(3)
- HTML打造动漫人物,maya打造逼真人物表情之角色控制面板
- 修改毕业论文的小方法
- 联通宽带显示dns服务器黄色,怎么查看联通宽带dns是否被劫持
- dedecms教程:二次开发时使用{dede:arclist},{dede:list}
- vue 用echarts画图表
- SendMessage消息是否进入消息队列
- location.href不跳转、不执行的最有效的解决办法!
- 兼容苹果ihone js 复制 功能clipboard.js demo
- 计算机图形学在线考试题,图形学模拟试题含答案.doc