生成全1矩阵_“行生成,列生成”学习笔记

f520be7e380d9afec215980bcfc8e772.png

1. 什么是“行生成”Row Generation?

行生成是一种对应于列生成的叫法。更多情况下,它被称为“割平面法(Cutting Plane)”。割平面在线性规划中等同于“约束”的概念,所以有些书里面也叫它为“延迟约束生成法(delayed constraint generation)”。

它是一种解决大规模线性规划的手段。这里所谓的“大规模“通常就是指约束或者变量非常多,比如指数数量。

2.为什么使用“行生成”

如果我们把这样的具有大量约束的线性规划直接丢给单纯形法去求解,首先输入这么多约束(比如指数级数量)的计算复杂度就已经不是polynomial的了,更别说去求解。经过实践发现,很多时候一个线性规划的解根本不需要那么多约束就可以求出来。

3. “行生成”的步骤

所以,不难想到:先只算一小部分的约束(约束子集),另一部分暂时不管(实际上这叫relaxation)。这样一来,解决了约束太多的问题。如果求出的解是originally feasible的,那么原问题的最优解就是它了。要是不行,那就找出一个被违反的约束,加进来再求解。然后直到我们能找到一个originally feasible的解即可。

以下是正式描述:

原问题:

表示: 约束子集所组成的系数矩阵;

表示:剩下的

表示:对应于
中约束的右端常数;

所以,得到一个原问题的reduced problem:

约束生成算法的框架如下:

Step1:初始化

,

Step2: 求解问题

,得到最优解

Step3: 如果

也是问题
的feasible solution,那么停止算法,否则将
违反的某个
中的约束加入
,Go to Step2.

4.算法的效率分析

行生成算法对于求解线性规划问题,step2理论上可以做到"polynomial-time solvable",因为众所周知的椭球法。所以,step3将决定了行生成算法的计算复杂度[1]。

Step3: 最关键的一步。如何确定

^*_{RP} 是否违反了剩下的约束?最直观的方法,当然是每一个剩下的约束都检查一遍。但是这个步骤不是polynomial-time的,因为剩下的约束数量不是polynomial-size。为了解决这个问题,我们引入一个子问题(sub-problem),名叫separation problem[2],找到这么一个被违反的约束。
解决这个问题的算法复杂度决定了行生成算法的效率。

对该子问题进行如下的建模[3]:

表示是所有约束的index集合。(在这里并没有写出约束。通常来说,子问题的约束是为了构造一个“合法的”set。所以约束方面得结合具体的问题。)

的最优解是

如果

,则第
个约束就是所要找的被违反的约束。

如果

,则能够证明
的一个最优解。

在比如TSP问题中,等同于求解一个最大流问题[3],所以行生成在该问题中非常高效。但是也有可能在其他问题中很难求解
,所以行生成的计算复杂度得视具体问题而定。

但是行生成有一个非常不错的性质:就算我们无法求得

的最优解,而且得到的近优解(比如用启发式算法获得)表明
没有违反任何约束,这种情况下,
是原问题的低界。这一性质保证了行生成求解整数规划问题时依然能够求得理论上的最优解。

5.行生成-->列生成

以前总是从D-W分解和cutting stork切入学习列生成,其实理解了行生成后,通过对偶理论可以自然而然地推得列生成算法的步骤。

有如下线性规划问题。

的数量非常大。自然地,我们也会产生与行生成类似的思路,即列生成。

中取一部分“列”,组成新的系数矩阵
。对应的,能得到
。于是我们有如下reduced problem:

求解得到

的最优解
。接下来,如何判断
的最优解呢?

借用行生成的思路,我们把

的对偶问题
都写出来:

的最优解,如果它不是
的最优解,那么
也不会是
的最优解。所以,接下来,只要考察当前
是否违反了某个约束。于是:

按照之前所说的行生成法,

是原矩阵
中所有列的index集合。

因为

代入

就会发现, objective function就是:
,而它就是reduced cost。再做个简单的变换就得到我们熟悉的pricing problem了:

得到违反的约束后,添入

,再对偶回去得到新的
——也就是添加了新的一列。

参考文献:

[1]Grötschel, Martin, László Lovász, and Alexander Schrijver. "The ellipsoid method and its consequences in combinatorial optimization." Combinatorica 1.2 (1981): 169-197.

[2]Letchford, Adam N., and Andrea Lodi. "Primal separation algorithms." Quarterly Journal of the Belgian, French and Italian Operations Research Societies 1.3 (2003): 209-224.

[3]Bertsimas, Dimitris, and John N. Tsitsiklis. Introduction to linear optimization. Vol. 6. Belmont, MA: Athena Scientific, 1997.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值