单纯形法解下列线性规划问题_优化 | 从集合划分问题到列生成算法

『运筹OR帷幄』原创

作者:高源

fec75cfa09a7efd7ed2d54b975940242.png
031bc1366f061c35306747ed74600631.png

通常而言,如果规划问题为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。

我们可以用一个简单的例子来阐述,在二维平面用

6a1e4870ca8bf537a57eb1f14043002e.png

点击此处添加图片说明文字

所围成的区域内(2,0) 即为唯一的极点。

349a1cddbdaf1097724812eff6d208e8.png

点击此处添加图片说明文字

定理:若线性规划(L)的可行域非空,且(L)存在有限最优解,则目标函数的最优值可在某个极点达到。

36fcdfc83651c52f9ccda5a0614e9ae1.png

七、最后的一点碎碎念

发现Pricing Model的特殊结构对于更充分的利用列生成算法是非常有利的,像上述例子,当剪裁长度达到一定长度或需求长度变化过多时,我们很难将可行的所有列都先找出,因此,利用该特殊结构的Pricing Model,我们很好的解决了这一问题。

但对于路径问题而言,很多时候基于现实因素,其Pricing Model是十分复杂且困难的,因此除了建立Pricing Model 直接找寻加入的列以外,我们可以通过一些巧妙的方法找到所有或大部分可行的线路,以直接计算每一循环的reduced cost。

参考文献:

Lecture Notes from Dr. Sun - Derterministic Optimization 2017 in Georgia Tech

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值