前言:
现时你们对“hill算法的例题”大概比较关心,朋友们都需要分析一些“hill算法的例题”的相关文章。那么小编在网上收集了一些对于“hill算法的例题””的相关内容,希望大家能喜欢,看官们快快来学习一下吧!『运筹OR帷幄』原创
作者:高源
通常而言,如果规划问题为IP(integer programming, 整数规划)或者MIP(mixed integer programming, 混合整数规划)则算法过程将更为复杂,基于不同问题运用到的算法有Branch and Bound(分枝定界), Cutting plane(割平面), Danzig-Wolf, Column Generation(列生成)等或其他组合算法例如branch and cut(分枝裁剪法), branch and pricing(分枝定价)等。
松弛后在处理实际问题时,我们会面临两个问题:
1) 订单数目增长导致可行路径的数目N通常十分巨大,我们如何找到所有的可行路径?
2) 如果已找到N条可行路径,如何快速求解这一庞大的整数规划?
通常我们有针对该问题的解决办法为:
1)使用启发式算法,比如Local Search: Hill Climbing, 2-opt, 3-opt, k-opt或者Metaheuristics: Genetic Algorithm (GA), Simulated Annealing (SA), Tabu Search (TS)去找寻“可行最优”路径。
2)使用列生成算法,计算成本降低数值后仅加入有效的路径进行求解。或同时在列生成算法过程中,找寻具有特殊结构的Pricing Model(之后将会展现例子)求解出最优被加入的列(路径)。
本篇文章将主要简单介绍如何使用列生成技术,基于已有所有可行路径的情况下,加速算法过程,得到最优解。同时会介绍针对另一经典问题(cutting stock problem) ,阐述如何使用pricing model的特殊结构更加快速有效的求解。
三、单纯形法回顾
首先在介绍列生成前,我们需要回顾一下基于线性规划的单纯形法与我们将会使用到的一些变量定义:
定义1:基础可行解(b.f.s.) x:即为满足
1)有n个线性无关的约束在x为等式
2)所有等式约束在x处成立
3)满足所有约束条件
定义2:极点(extreme point):即为b.f.s.的几何表示,也有人形象的描述它为corner point。
我们可以用一个简单的例子来阐述,在二维平面用
点击此处添加图片说明文字
所围成的区域内(2,0) 即为唯一的极点。
点击此处添加图片说明文字
定理:若线性规划(L)的可行域非空,且(L)存在有限最优解,则目标函数的最优值可在某个极点达到。
七、最后的一点碎碎念
发现Pricing Model的特殊结构对于更充分的利用列生成算法是非常有利的,像上述例子,当剪裁长度达到一定长度或需求长度变化过多时,我们很难将可行的所有列都先找出,因此,利用该特殊结构的Pricing Model,我们很好的解决了这一问题。
但对于路径问题而言,很多时候基于现实因素,其Pricing Model是十分复杂且困难的,因此除了建立Pricing Model 直接找寻加入的列以外,我们可以通过一些巧妙的方法找到所有或大部分可行的线路,以直接计算每一循环的reduced cost。
参考文献:
Lecture Notes from Dr. Sun - Derterministic Optimization 2017 in Georgia Tech
标签: #hill算法的例题