如果你刚刚入门线性规划,对于线性规划的基本原理、概念、术语,以及 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基础知识相关推荐

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

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

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

    文章目录 相关知识点 LP线性规划问题 MIP混合整数规划 MIP的Python实现(Ortool库) assert MIP的Python实现(docplex库) 喜欢的话请关注我们的微信公众号~&l ...

  3. LP和MIP基础知识

    LP和MIP是经典的建模工具, 如何快速求解一直是大家非常关心的问题.  gurobi可能是目前此类问题的最优秀的求解工具,  但是对它的正确理解和适当的使用也很重要, 看看下面的的LP和MIP基础知 ...

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

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

  5. 学习笔记21.08.16:利用python的cplex库解决混合整数规划MIP问题

    # -*- coding: utf-8 -*- # The MIP problem solved in this example is: # 问题描述 # Maximize x1 + 2 x2 + 3 ...

  6. 整数规划、混合整数规划基础知识

    优化 优化三大要素:决策变量.约束条件.和目标函数 根据3个要素的不同,优化问题划分为多种不同的类型,其中就包含线性规划LP和混合整数规划MIP. 线性规划 线性规划LP基础:https://www. ...

  7. IC基础知识(3)通用模拟,数字和混合信号集成电路

    文章目录 写在前面 正文 数字IC 逻辑 内存 处理器 模拟IC 混合信号IC 结论 交个朋友 写在前面 原文链接:Common Analog, Digital, and Mixed-Signal I ...

  8. 密码算法学习笔记01:基础知识-公钥密码和混合密码系统

    来自书籍<图解密码技术 第三版.pdf> 密码算法基础知识-公钥密码和混合密码系统 一.公钥密码 公钥密码--用公钥加密,用私钥解密. 公钥密码无需向接收者配送用于解密的钥匙,只需向发送者 ...

  9. java调用cplex实现经典Benders分解算法求解混合整数规划问题

    算法介绍 Benders分解算法是由Jacques F. Benders在1962年首先提出,目的是用于解决混合整数规划问题(MIP问题),即连续变量与整数变量同时出现的极值问题.随着分解算法的不断演 ...

最新文章

  1. Unity协程截图,WWWForm、WWW配合上传
  2. RTX2013和微信企业号打通
  3. 一位年龄 35 的前饿了么同事,退休了!
  4. javascript(js)获取访客通过搜索引擎进入页面的搜索关键词的简洁有效代码
  5. java 计时器_Java多线程并发容器之并发倒计时器
  6. c++ 圆上任意点坐标计算_线性代数总结 第三章 向量代数与几何计算(空间平面和直线)...
  7. Spring Boot使用layui的字体图标时无法正常显示 解决办法
  8. MultipartFile和CommonsMultipartFile的区别!
  9. Eclipse 创建 Maven 工程
  10. Makefile:.d依赖文件
  11. 随手练——O(n)解决无序数组排序后的相邻最大差值
  12. board crt_容器编排系统K8s之Dashboard部署
  13. 逆clarke变换_克拉克(CLARKE)和帕克(PARK)变换
  14. GB2312和UTF-8
  15. chromecast投屏_Google的初代投屏神器Chromecast上手体验
  16. CFS任务的负载均衡
  17. 2021-07-07 Day01 前端基础第一天
  18. matplotlib 设置坐标轴位置(spines),设置坐标别名(xticks,yticks)
  19. 【2022新版】Java 终极学习路线(文末高清大图)-共计9大模块/6大框架/13个中间件
  20. 50例大数据术语英文翻译及详解

热门文章

  1. 总结二十二:如何在公司建立成功的技术文化(3)
  2. HTML打造动漫人物,maya打造逼真人物表情之角色控制面板
  3. 修改毕业论文的小方法
  4. 联通宽带显示dns服务器黄色,怎么查看联通宽带dns是否被劫持
  5. dedecms教程:二次开发时使用{dede:arclist},{dede:list}
  6. vue 用echarts画图表
  7. SendMessage消息是否进入消息队列
  8. location.href不跳转、不执行的最有效的解决办法!
  9. 兼容苹果ihone js 复制 功能clipboard.js demo
  10. 计算机图形学在线考试题,图形学模拟试题含答案.doc