Column-and-row Generation 列和行生成算法(二)

论文地址:Linear Programs with Column-Dependent-Rows

上一节大概介绍了一下这个算法可以解决的问题,这一节仔细讲一下当我们拿到一个formulation之后,怎么应用这个算法。

CDR问题形式与三个假设的讨论

上一节中给出了两个例子:quadratic set covering model (QSC) 二次集合覆盖问题和multi-stage cutting stock (MSCS) 多阶段木材下料问题。

  • MSCS:先把木材按一定的cutting pattern切成intermediate rolls(第一阶段),再把中间roll按不同的cutting pattern切割成finished rolls(第二阶段),在这个过程中解决最小化浪费的问题。
  • QSC:最小化覆盖集合中所有的item的成本(成本的定义根据具体问题)。

对比这两个问题与最原本的问题形式,我们可以看出a、b、c、d、r这些参量可以为0也可以为1,以及A、B、C、D也可以为全1或者全0

  • 在MSCS中,A, a, d, and r are zero, and c is a vector of all ones
  • 在QSC中,both B and b equal to zero, and a is a vector of ones.

这意味着问题的形式(目标函数与约束)可以有很大的变化。在这种情况下,如何确定所求的问题就是一个column-dependent-rows (CDR-problems)呢?这就需要说到上一节中提到的三个基本假设,基本上对照着这三个假设检查之后,就可以确定是否是CDR问题了。

Recall:CDR的Master Problem

假设一:x变量的生成取决于y变量的生成。此外,每个x变量只与一组linking constraint相关联。

这个假设对应于CDR问题中的MP-x与MP-yx。其中MP-x是x变量相关联的linking constraint,MP-yx是描述y变量的生成如何确定x变量的生成。

比如在MSCS问题中,只有在第一阶段包含了intermediate roll的pattern,这个intermediate roll在第二阶段才能产生pattern。

我们可以反过来想,如果一个x变量与多组linking constraint相关联。那么,当我们添加进一个x变量(列)的时候,无法同时生成两个linking constraint(行),如果只生成一个行,那么,应该生成哪一个行呢?这个假设意味着当我们设计约束与变量的关系时,要仔细检查它们之间的联系。直觉上可以尝试PCA或许SVD来精简约束与变量之间的关系(没有实际应用过,只是猜测)。

假设二:linking constraint是冗余的,直到与该linking constraint相关联的至少一个最小变量集(the minimal variable sets)中的所有变量被添加到SRMP。

比如在QSC问题中,

变量xkl和linking constraint集(9)、(10)和(11)是冗余的,直到变量yk和yl都是SRMP的一部分。所以,最小变量集SK = {yk, yl}允许xkl的生成。

假设一与假设二一起定义了一个子问题row-generating PSP的目标,就是找到变量对应的一个或若干个最小变量集,这个后面会仔细讲。

假设三:一个变量xn,n ∈ SN(SK),在生成∈( SK)的至少一个最小变量集中的所有变量在SRMP中为正之前,不能假定为是一个正值。

这个假设对应的CDR的MP问题中的约束MP-yx。

比如在MSCS问题中,

当没有加入intermediate roll i时,cutting pattern n生成对应的约束(5)就是假设中所提到的形式:

在QSC问题中,约束(10)(11)也是这个形式。

CDR-problems with interaction or no interaction

CDR问题被分为CDR-problems with interaction和CDR-problem with no interaction。定义如下:

我们可以发现,区分这两种问题很简单:

  • CDR-problems with interaction:任何最小变量集的基数都大于1
  • CDR-problems with no interaction:任何最小变量集的基数都是1

所以,MSCS是很典型的CDR-problems with no interaction,而CDR-problems with interaction。区分这两种问题的目的是为了更好的解释假设二中提到的row-generating PSP的应用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值