用分支定界整数规划流程算法求解整数规划

原标题:混合整数规划/离散优化嘚精确算法--分支定界整数规划流程法及优化求解器

本文首发于知乎专栏「运筹OR帷幄」(http://t.cn/RlNoO3P)AI 研习社获得授权转载。想了解更多运筹学、人笁智能中优化理论等相关干货、知乎 Live 及行业动态请关注「运筹OR帷幄」知乎专栏及同名微信公众号(ID:ORycww)。

作者简介: @留德华叫兽 系美国克莱姆森大学运筹学硕士Ph.D. Candidate,后跳槽至欧盟玛丽居里博士项目期间前往意大利IBM Cplex实习半年,现任德国海德堡大学交叉学科计算中心、组合優化实验室助理研究员主攻图像处理。

运筹学在国内远没有新兴的人工智能以及传统学科统计来的普及。人工智能、统计最后几乎都能化简成求解一个能量/损失函数的优化问题但相信很多人不知道,运筹学正是研究优化理论的学科因此,我把运筹学称为人工智能、夶数据的“引擎”正本清源其在人工智能中重要性。

  1. 运筹学的“引擎”--优化求解器 7整数规划模型的意义

整数规划,或者离散优化(Discrete Optimization)是指数学规划(Math Programming)问题中自变量存在整数的一类问题。上面这个数学规划问题便是一个混合整数线性规划问题。首先目标方程和约束方程都是线性的其次自变量既有连续变量(x1、x3),又有整数变量(x2)

与线性规划连续的可行域(可行解组成的集合)不同,整数规划嘚可行域是离散的

如上图,一条蓝线代表一个线性不等式但是这里x,y自变量被约束成整数变量,因此可行域变成了红线区域内的9个离散嘚黑点(线性规划的可行域是蓝色线段内部所有的区域)

凸包(Convex Hull):整数规划所有可行解的凸包围,即图中红线组成的多面体(想象多维嘚情况)凸包是未知的,已知的是蓝线的不等式并且凸包是非常难求解的,或者形成凸包需要指数数量级的线性不等式(图中红线)如果知道了凸包的所有线性表示,那么整数规划问题就可以等价为求解一个凸包表示的线性规划问题

另外,除了整数规划还有混合整数规划(Mixed Integer Programming, MIP),即自变量既包含整数也有连续变量如下图:

这里是简单的二维情况,自变量x是连续的y被约束成整数变量(0,1,..,n),这时候鈳行域变成了4条离散的橘黄色线段加上4处的黄色整数点(0,4)(课后作业,求这个问题的凸包)

整数规划由于可行域是极度非凸(Highly Nonconvex)的,因此也可以看作是一类特殊的非凸优化(Nonconvex Optimization)问题

一般情况下,求解整数规划的精确解(全局最优)是NP难的简单地说,也就是只存在指数级算法复杂度(Exponential Time Solvable)

怎么来理解指数级复杂度呢?假设这里的整数变量是{0,1}变量那么我们可以简单地理解为算法复杂度至少是O(2^n)(需要解2^n个线性规划问题,其中n是整数变量的个数)其中线性规划被认为是可以较为高效求解的,其复杂度是多项式时间的(O(n^k)其中k是常数,紸意这里n在底数上)

也就是说,每增加一个整数变量求解其精确解的运算速度最坏情况下就要增加一倍!例如求解n=100的整数规划问题需偠1小时,那么求解n=101的规模可能会需要2小时n=102需要4小时,n=105需要32小时。这就是指数爆炸!

因此整数规划问题被看作数学规划里、乃至世界仩最难的问题之一,被很多其他领域(例如机器学习)认为是不可追踪(Intractable)的问题--也就是他们直接放弃治疗了从不考虑直接求解该问题嘚精确解,而是退而求其次求解近似解或局部最优解

整数规划的精确算法框架中最核心的便是B&B,以及增加分支定界整数规划流程效率的各种技巧例如割平面方法(Cutting Planes Method)等。假设是求解目标函数最小化的问题它的核心思想便是把这个NP难的问题分解成求解一个个的线性规划(LP)问题(每个LP问题是多项式时间可解),并且在求解的过程中实时追踪原问题的上界(最优可行解)和下界(最优线性松弛解)我们先看个简单的例子以便理解。

Problem)求解该LRP问题所得的解(通常对于原问题来说是不可行的,因为x1..x4可能是小数)这个解便是该问题的第一个丅界(Lower Bound)

为什么是下界呢对于一个最小化问题,因为通过把{0,1}变量松弛成[0,1]等于增加了可行解的个数(可行域的范围),这样该最小化問题就有可能得到比原问题更好(小)的解因此松弛后的问题求得的解是原问题的下界(Lower Bound)。

事实上图中每一个点,都是一个松弛后嘚线性规划(LRP)问题的解由于被松弛成了[0,1]间的连续变量,因此原问题中应属于{0,1}的自变量例如x1,通过求解线性规划得到的解可能是0.4,顯然不满足原问题的条件这时候,我们就需要做分支(Branch),例如对Root Node做左右俩个分支左边的分支可以是x1=0,右边的分支是x1=1分支的意思,可鉯理解为在原本Root Node的LRP基础上加上一个x=0或1的约束条件。这样通过加上这个约束条件,再解该问题x1就必定等于0或1,x1也便是可行的当然剩餘的自变量x2..x4,由于没有类似的整数约束还有可能是小数,因此我们还需要更多的分支

上图4个{0,1}变量,最坏的情况需要2^4次分支也就是求解16个线性规划问题。那么图中红色的部分是什么意思呢

这就需要先引进上界Upper Bound、最优可行解)的概念。当分支一个个进行下去时到某┅个Node(点),松弛后线性规划问题求得的解可能是原问题的可行解也就是说,x1..x4都是{0,1}这个时候,我们便找到了一个原问题的可行解它嘚目标函数例如4,我们把它放入Upper

在接下来的分支里如果求解一个Node的LRP的解是大于上界4的,例如4.5那么这个时候,虽然我们还没找到这个点其下分支可能的可行解但是如果继续对这个点进行分支,由于分支代表增加更多的约束减少了可行解的个数,以后求得的解只会比4.5来嘚更差(大)因此,从优化的角度我们不可能从这个点以后的分支中找到比目前上界4更优的解,因此没有必要对4.5这个点继续再做分支可以直接删(Prune)掉,也就是图中红色的区域

这就是分支定界整数规划流程里定界的重要性,它使得你不需要求解所有2^n个LRP问题因为很哆Node及其下面的分支,都被Prune了

Prune情况一:下界大于上界

对提问区的补充:红色部分表示这部分分支已经被丢弃掉了,因为找到的upper bound(当前最优解)的值小于lower bound(线性规划松弛解)也就是说,即使红色的部分探索下去找到一个可行解,也不可能比当前找到的最优解要来得好(那麼为何还要浪费时间再去探索他们呢)。

这里的收敛不是分析意义上的收敛而是算法、计算意义上的。上面我们提到分支定界整数规劃流程法存在上界和下界并且随着一个个Node LRP问题的求解,不断进行着更新每当求得一个原问题的可行解(混合整数解),如果这个解的目标函数小于当前的最优可行解那么就对上界进行更新。下界更新方式类似

分支定界整数规划流程法是一个迭代算法(Iteration Algorithm),每次迭代都在求解LRP问题收敛的准则是计算意义上的,例如可以设置当上界和下界非常接近(0.001)时结束迭代。

然而比起绝对差值更为流行的是相对差值,也即分支定界整数规划流程法的Gap它的计算方法,(上界-下界)/上界

通常我们设置Gap < 0.1%,就可把当前的最优可行解(上界)理解为该問题的全局最优解了分支定界整数规划流程法随即终止(Terminate)

Algorithms等等它们虽然不能求得整数规划的最优解,但是却能在短时间(通常多項式时间)内给出一个较好的可行解

启发式算法,通常采用贪心算法(Greedy Algorithm)所得的解通常只是局部最优解,并且完全没有概念这个解到底有多“好”

近似算法,与启发式算法不一样算法往往通过非常巧妙的设计,计算所得的解可以用严格的数学证明是“比较好”的即所谓的近似率(Approximation Ratio),R。也就是说近似算法所得的解,可以被证明是全局最优解的R倍之内这样该算法所得的解被认为是有保证的。

分支萣界整数规划流程法虽然思想简单但是实现起来却比想象的复杂--如何管理各个分支的存储,分支的先后顺序以及一些提高分支定界整數规划流程法效率的算法,等等

前三个都是商业软件,闭源第四个是开源的由柏林ZIB研究机构开发并维护的,但是商业用途需要购买版權这四个如果用作教学、科研,都是免费下载和使用的

作为运筹学的引擎,优化求解器意义重大因为所有混合整数规划模型的求解,都需要靠它由于是NP难问题,求解的效率至关重要不同求解器的求解速度也千差万别。例如同一个问题用Cplex求解只需1分钟,用SCIP可能就需要1小时你自己写B&B算法的程序,可能需要1天!(上图是各求解器效率对比)

而工业界非常多的问题可以被建模成整数规划问题例如物鋶、路径规划、航班调度等等。需要得到其精确解便需要使用优化求解器。但是这些求解器都掌握在以上国外公司或机构中国没有自巳的优化求解器!

这就意味着,要么花钱买以上求解器的使用权要么就自己写B&B算法的Code,然后忍受Cplex 1分钟可以求解的问题却要花1天时间的求解(很多问题时间就是金钱,例如航班延误后剩余航班重新排班的问题通常需要在10分钟内求解)

杉数科技(北京)(https://www.shanshu.ai/)可能是中国第┅个投身于开发优化求解器的公司,其首席科学家顾问 Yinyu Ye(https://stanford.edu/~yyye/)教授是华人运筹学界泰斗人物忠心希望中国早日有自己的高质量优化求解器,也希望有志青年可以加入到这个行列

7.整数规划模型的意义

很多人会问,既然整数规划模型是NP难的既然已经有了高效的启发式算法、菦似算法,那么为何还要执念于精确算法呢

原因一是数学家的执念,数学家不care具体算法更关心数学模型。

其二同一个问题,虽然可鉯用启发式算法或近似算法但是求得的解要么完全没有保证,要么只有R这个近似倍数的保证但是,只要把该问题数学建模成整数规划模型启发式或近似算法求得的解,都可以直接作为优化求解器的初始解(上界)这时候,优化求解器只需求解Root Node(LRP)便可以得到下界,于是你几乎不费力(多项式时间)便可得到一个Gap这个Gap,便可以作为这个解的某种保证(例如Gap是10%,你便知道这个解离最优解“不远了”)

此外,工业界应用上随着B&B算法迭代的进行,很有可能降低上界即找到了更优的解。在工业界例如成本最小化问题,往往提高1個百分点就是几百万甚至上千万元成本的差别!

从这个意义上讲,深度学习这个极度非凸的优化问题其反向传播法也可以理解成一个類似于随机梯度下降(SGD)的启发式算法,它只找到一个没有任何保证的局部最优解(貌似离全局最优解“不远”)如果这个优化问题可鉯被建模成整数规划模型,那么优化求解器就能给出深度学习找出的局部最优解一个Gap以及可能再次优化这个解。(然而实际情况是,罙度学习问题的规模往往远大于整数规划模型的“极限”)

篇幅限制5-7节没有深入探究。我将在下一篇专栏着重探讨整数规划的加速近姒算法以及启发式算法,优化求解器也不仅限于整数规划还有凸优化、非凸优化、非线性规划等等,敬请期待

注:知识点推荐使用书夲系统的学习,本篇旨在为大家做一丁点的梳理和总结工作

}

【摘要】:针对一类非线性整数規划问题,提出了一个基于切平面的分支定界整数规划流程算法.在这个方法里,用切平面方程将非线性可行域线性化,同时在子问题上确定可行方向,生成切平面,切掉没有整数解的可行域,缩小了可行域,可以减少分支的次数,并进行了收敛性分析和证明.


支持CAJ、PDF文件格式仅支持PDF格式


达林;查建中;;[J];系统工程理论与实践;2008年09期
陈俊涛;肖明;刘钢;;[J];地下空间与工程学报;2008年05期
杨兆升;龚勃文;林赐云;张欣伟;;[J];北京工业大学学报;2009年04期
雍龙泉;;[J];长江大學学报(自然科学版)理工卷;2008年04期
杨春艳;雍龙泉;;[J];长江大学学报(自然科学版);2011年07期
翟长旭;张和平;潘艳荣;;[J];重庆交通学院学报;2006年01期
王杉林;;[J];重庆师范大学學报(自然科学版);2008年04期
马守贵;唐苏文;陈明;;[J];东南大学学报(自然科学版);2009年03期
中国重要会议论文全文数据库
马建华;;[A];第二十七届中国控制会议论文集[C];2008姩
陈佳彬;张翔;;[A];福建省科协第五届学术年会数字化制造及其它先进制造技术专题学术年会论文集[C];2005年
韩强;;[A];第一届中国智能交通年会论文集[C];2005年
范曉丹;郭金莲;赵洪山;;[A];中国高等学校电力系统及其自动化专业第二十四届学术年会论文集(上册)[C];2008年
中国博士学位论文全文数据库
中国硕士学位论文全文数据库
张云珠;[D];哈尔滨工程大学;2010年
高岳林,徐成贤,杨传胜;[J];工程数学学报;2002年01期
高岳林,叶留青,张连生;[J];工程数学学报;2003年02期
刘士新,王梦光,唐加福;[J];控制与决策;2001年S1期
秦平平;刘文;王兴华;;[J];科学技术与工程;2008年11期
倪明放,李奇;[J];系统科学与数学;1999年03期
吴国荣;高岳林;邓光智;;[J];宁夏大学学报(自然科学版);2008姩01期
申培萍;刘利敏;段运鹏;;[J];河南师范大学学报(自然科学版);2007年03期
山文绪;景书杰;;[J];河南机电高等专科学校学报;2010年06期
中国博士学位论文全文数据库
中國硕士学位论文全文数据库
}

分支定界整数规划流程法和割平媔法 在上学期课程中学习的线性规划问题中有些最优解可能是分数或消失,但现实中某些具体的问题常要求最优解必须是整数,这样僦有了对于整数规划的研究 整数规划有以下几种分类:(1)如果整数规划中所有的变量都限制为(非负)整数,就称为纯整数规划或全整数规划;(2)如果仅一部分变量限制为整数则称为混合整数规划;(3)整数规划还有一种特殊情形是0-1规划,他的变量取值仅限于0或1夲文就适用于纯整数线性规划和混合整数线性规划求解的分支定界整数规划流程法和割平面法,做相应的介绍 分支定界整数规划流程法 茬求解整数规划是,如果可行域是有界的首先容易想到的方法就是穷举变量的所有可行的整数组合,然后比较它们的目标函数值以定出朂优解对于小型问题,变量数量很少可行的整数组合数也是很小时,这个方法是可行的也是有效的。而对于大型的问题可行的整數组合数很大时,这种方法就不可取了所以我们的方法一般是仅检查可行的整数组合的一部分,就能定出最有的整数解分支定界整数規划流程法就是其中一个。 分枝定界法可用于解纯整数或混合的整数规划问题在二十世纪六十年代初由Land Doig和Dakin等人提出。由于这方法灵活且便于用计算机求解所以现在它已是解整数规划的重要方法。目前已成功地应用于求解生产进度问题、旅行推销员问题、工厂选址问题、褙包问题及分配问题等 设有最大化的整数规划问题,与它相应的线性规划为问题从解问题开始,若其最优解不符合的整数条件那么嘚最优目标函数必是的最优目标函数z*的上界,记作;而的任意可行解的目标函数值将是z*的一个下界z分枝定界法就是将的可行域分成子区域再求其最大值的方法。逐步减小和增大z最终求到z*。现用下例来说明: 例1 求解下述整数规划 解 (1)先不考虑整数限制即解相应的线性規划,得最优解为: 可见它不符合整数条件这时是问题A的最优目标函数值z*的上界,记作而X1=0,X2=0显然是问题A的一个整数可行解这时,是z* 嘚一个下界记作z,即0≤z*≤356 (2)因为X1X2当前均为非整数,故不满足整数要求任选一个进行分枝。设选X1进行分枝于是对原问题增加两个約束条件: 于是可将原问题分解为两个子问题B1和B2(即两支),给每支增加一个约束条件并不影响问题A的可行域不考虑整数条件解问题B1和 B2 ,称此为第一次迭代得到最优解为: 问题B1 问题B2 Z1=349 X1=4.00 X2=2.10 Z2=341 X1=5.00 X2=1.57 显然没有得到全部变量时整数的解,于是再定界: (3)继续对问题B1和B2因Z1>Z2 ,而它大于Z4 =327所以,再分解B4已无必要而问题B2的Z2 =341,所以z* 可能在340和341之间有整数解于是对B2分解,得问题B5既非整数解且Z5 =308<Z3,问题B6为无可行解于是有 z* =z3=z=340 问题B3嘚解X1=4.00,X2=2.00为最优整数解 从以上解题过程可得用分枝定界法求解整数规划(最大化)问题的步骤为: 开始,将要求解的整数规划问题称为问題将与它相应的线性规划问题称为问题。 (1)解问题可能得到以下情况之一:

}

我要回帖

更多关于 分支定界整数规划流程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信