启发式行为是一种扩张策略,确保算法在运用设计策略的基础上,从当前解得到更好的解;商业MIP求解器允许用户设置一些参数控制求解器访问一些分支树;内部启发式的应用频率实际上是强调得到研究问题的解的整数性而非最优性。比较遗憾,通用的求解器不能实现这种机智的转换,一个趋势是针对特性的问题,设计一些启发式救援框架,但这么做也就破坏了求解框架的通用性优势。
1 核心观点:软vs.硬的变量固定
假设我们有一个黑盒求解器,它首先根据输入数据,很快的计算出一个研究问题的 (possibly infeasible) “target solution”
这个 随后被定义,例如将定义为LP松弛问题的根节点,可采用一些机智地的策略对其非整数变量进行取整,或者使用启发式方法
然后将的非零变量启发式的取整为其最接近的整数,然后固定它的值
该方法会迭代地复用于从固定结果得到的约束问题:即再次调用黑盒求解器
一个新的target solution被发现,其他的一些变量被固定
依据上述方式,研究问题的规模在每一次变量固定后呈下降趋势,黑盒可以集中更大的精力针对更小的核心问题进行求解;这样就增加我们得到已证明的最优解的几率。
由此可见,变量固定方法的的核心是每一步固定变量的选择问题;事实上,与寻找高质量的解相比,所要做的工作仅仅是找到一些整数并将其固定。在计算的早期,错误的固定操作很难被有效的检测到,甚至是在固定之前已经得到了优化问题的界限的情况下。在硬固定版本中,问题的界限可能在很多次固定中保持不变,而在后期的明显无意的固定中突然增加。因此,必须在方案中嵌入回溯机制来从错误的定位中恢复,这是一个非常困难的任务。
接下来要做的就是,如何在不丧失发现好的问题可行解的情况下,固定一定数目的变量。为了更好的例证这一点,假设我们要解决的问题属于包含n个变量的纯0-1整数规划问题,期望找到一个能够将其90%的变量固定到1的核心子问题。我们应该怎么选择要固定的变量呢?答案很简单,只需要添加形如下式的一个线性的软固定约束:
然后使用黑盒求解器得到MIP的解。这样的处理模式避免了过于刚硬的变量固定,有利于更灵活的条件来定义当前目标解决方案的合适的邻域,让黑盒求解器本身来探索。在我们的例子中,等式右侧松弛了10%的变量,驱动黑盒求解器更有效率的对大量的变量进行固定,同时也赋予了很大的自由度去找到更好的解。
2 Local Branching启发式求解MIP
软固定机制在之前的文本中已经被描述过,可以用来发现强MIP的好解,显然这样的框架是精确的,可以通过启发式的轻微改善MIP求解器的解。通过高层级的战术分支策略固定解的邻域,低等级的战术分支(如MIP求解器)进行搜索。两个策略都旨在在算法搜索的早期更新当前解,从而在计算的早期阶段获得解的改善。更为精巧的是,对于形如下式的0-1通用MIP问题:
左侧的两项分别统计了进行【1->0 或 0 -> 1】变换的二进制变量的数目。
在相关的案例中,问题的任何二进制可行解的基数是一个常数,该约束可以更方便的被写成如下等价非对称形式:
上述定义是具有一定的通用性的,如TSP中的经典K邻域操作,这里的约束(8)表示在当前解 中至少k条边可以被替换。
局部分支约束可以被视为问题P枚举方案中的一个分支准则;确实,对于当前解 ,其解空间与当前分支节点紧密相关,解空间可以被分解为如下形式:
对于邻域尺寸参数k,它应该被设置为一个较大的值,这样可以产生一个比原始问题更容易求解的左侧分支子问题;邻域对应的左侧分支应充分的小,以便可以在短时间内被优化,但也得足够的大确保其可以容纳的下比当前解 更好的解。根据我们的计算经历,设置k的值为[10,20]在大多数案例下是比较有效的。
Local Branching的第一个实现如下图1所示,这里我们使用T对应分支子树,然后通过标准的战术性分支准则,如在分数变量处分支,即应用黑盒精确MIP求解器。
图解:
我们假设一个起始的当前解 作为根节点①
左侧分支节点②对应k-opt邻域优化,有希望在短时间内执行战术分支方案收敛到当前邻域的最优解,称为 ;
这个解将作为新的当前解,将其复用为右侧分支节点③,
在节点④处要搜索的解空间为,生成了一个新的当前解
节点⑤处随后被处理,对应的原问题P被增加了两个附加的修正约束: 和
例子中的节点⑥产生了一个不包含任何改善的子问题的解,此时一个额外的分支约束
添加到右侧的分支节点⑦,执行战术级的分支。
注意在节点①处的分数LP解决方案并不是一定要切分成子节点②和③,当变量用于标准分支时,常常是这样的处理方式;这同样适用于节点③和节点⑤,事实上局部分支的哲学起点就与标准分支不同:我们并不强迫任何分数变量的值,我们宁愿指导解决方法首先探索解决空间的一些有希望的区域。局部分支算法的优势就是在算法的早期更新当前解,换句话说,我们希望在在局部分支无效之前,更快的找到比当前解更好的解,因此我们不得不启用战术分支进行枚举控制。
图2 介绍了我们使用MIP案例tr-24进行求解的示例,使用了三种方法进行编码:商业求解器ILOG-Cplex 7.0的优化版本和可行版本,和包含局部分支方法的Cplex 7.0优化版本,来执行战术级子树搜索;局部分支约束(7)中的k取值为18;所有的三个节点采用同样的参数运行,局部分支需要的最初的参考解由ILOG-Cplex优化版本获取的第一个可行解提供,对应的时间为局部分支的运行时间。测试执行在 533 MHz的Digital Alpha Ultimate Workstation上。
如图,局部分支方案的性能相当令人满意,能够在算法搜索的初期多次改善初始解。事实上,局部分支当前解在整个搜索过程中都显著优于其他两种方案。在优化收敛性上,局部分支方案在1878 CPU秒后终止运行;而优化版本是3827 CPU秒,可行版本在规定的6000 CPU秒中并未收敛。然而值得注意的是,局部分支的强化收敛行为并不能保证在所有的案例中得到最优解。形如图1的特例,通过每个节点的时间限制和复杂的多样性策略,获得了MIP的好的近似解。从空间角度,虽然我们没有对框架进行最终的描述,但一个求解示例B1C1S1在图3中展示。
3 局部分支的拓展问题
3.1 MIP求解器更紧的整数性
有两种方式探索局部分支约束,第一是用局部分支约束作为精确算法的策略性分支准则,与标准的分支准则交替使用;如第二部分描述的方法,使用MIP作为一个黑盒执行战术级的分支;虽然很容易实现,但是浪费了大量的计算时间,例如在没有前途的节点进行的探索。因此一个更为灵活的两种分支策略的集成框架应该被设计以获得更好的性能。
分支定界与局部分支
使用局部分支约束的第二种方式为将其应用到类似于TS或VNS的启发式框架中。事实上,所有这些启发式算法的主要组分(定义当前解的邻域、处理禁忌方案或移动、适当的多样化准则)都可以轻易的被建模为可动态的插入或移除模型的线性切割。自然,他就也可以根据研究问题的结构,考虑到求解MIP的TS或VNS中。【 M. Fischetti, C. Polo and M. Scantamburlo. A Local Branching Heuristic for Mixed-Integer Programs with 2-Level Variables. Technical Report, University of Padova, 2003.】
3.2 处理不可行的解决方案
局部分支框架要求一个起始的参考解 ,假设它可以使用黑盒MIP求解器获得;然而对于困难的MIP,如硬集分割模型,确定一个解就需要大量的时间。此时,我们可以考虑从一个不可行的解出发,通过增加一些松弛变量建立修正的MIP模型并在目标函数中对其进行惩罚。先驱性的工作参见 Fischetti (Combinatorial Optimization Workshop,
Oberwolfach 24-30/11/2002) 和Balas (Combinatorial Optimization Workshop, Aussois
9-15/3/2003).
3.3 处理通用整数变量
局部分支通过定义距离函数开展,基于我们的计算经验,它在包含整数变量的情形下也是十分有效率的,因为0-1变量常与大M有关,很大程度上与模型的难度相关。也许在一些MIP的案例中,不包含0-1变量或0-1变量不是模型的主要角色,此时局部分支的引入对MIP求解来说并无益处;这样的情形下,一个包含整数变量距离函数的有趣的修正局部分支约束可以表示为:
假定MIP问题P包含界限为的整数变量,一个合适的分支约束可以定义为:
这里的权重;变量和为引入的附加变量:
3.4 在特定的code中使用局部分支
通用目的的MIP求解其不必使用局部分支约束,他可能在特定的用途下更有效率,精确或启发式,黑盒求解器被设计来增强启发式算法的能力;显然,仅有的需求场景为能够加入线性不等式,在特定的分支定界算法中使用局部分支越是似乎是合适而且有趣的。【 H. Hern´ andez-P´ erez and J.J. Salazar-Gonz´ alez. Heuristics for the one-commodity Pickup-
and-Delivery Traveling Salesman Problem. Transportation Science, 2003】
注:Latex中要输入反斜杠有三种方法:1) \backslash, 2) \verb|\|, 3) \setminus
4 参考文献
[1] E. Balas, S. Ceria, M. Dawande, F. Margot and G. Pataki. OCTANE: A New Heuristic For Pure 0-1 Programs. Operations Research 49(2), 207–225, 2001.
[2] Cplex. ILOG Cplex 7.0 User’s Manual and Reference Manual. ILOG, S.A., 2001 (http://www.ilog.com)
[3] M. Fischetti, A. Lodi. Local Branching. Mathematical Programming, 2003 (to appear). On-line publication: 28/3/2003, DOI 10.1007/s10107-003-0395-5.
[4] M. Fischetti, C. Polo and M. Scantamburlo. A Local Branching Heuristic for Mixed-Integer Programs with 2-Level Variables. Technical Report, University of Padova, 2003.
[5] F. Glover and M. Laguna. General Purpose Heuristics For Integer Programming: Part I. Journal of Heuristics 2, 343–358, 1997.
[6] F. Glover and M. Laguna. General Purpose Heuristics For Integer Programming: Part II. Journal of Heuristics 3, 161–179, 1997.
[7] H. Hern´ andez-P´ erez and J.J. Salazar-Gonz´ alez. Heuristics for the one-commodity Pickup-and-Delivery Traveling Salesman Problem. Transportation Science, 2003 (to appear).
[8] A. Løkketangen. Heuristics for 0-1 Mixed-Integer Programming. In P.M. Pardalos and M.G.C. Resende (ed.s) Handbook of Applied Optimization, Oxford University Press, 474–477, 2002.
[9] A. Løkketangen and F. Glover. Solving Zero/One Mixed Integer Programming Problems Using Tabu Search. European Journal of Operational Research 106, 624-658, 1998.
[10] N. Mladenov´ıc and P. Hansen. Variable Neighborhood Search. Computers and Operations
Research 24, 1097–1100, 1997.
[11] M. Nediak and J. Eckstein. Pivot, Cut, and Dive: A Heuristic for 0-1 Mixed Integer Programming Research Report RRR 53-2001, RUTCOR, Rutgers University, October 2001.
[12] M. Van Vyve and Y. Pochet. A General Heuristic for Production Planning Problems. CORE Discussion Paper 56, 2001.