【论文阅读】(2014)Combinatorial Benders’ Cuts for the Strip Packing Problem

简介: 【论文阅读】(2014)Combinatorial Benders’ Cuts for the Strip Packing Problem

@[toc]


论文来源:(2014)Combinatorial Benders’ Cuts for the Strip Packing Problem
作者:Jean-François Côté 等人

一、摘要

  • 我们研究了条形包装问题,即一组二维矩形物品必须被包装在一个固定宽度和无限高的矩形条形中,目的是使使用的高度最小。
  • 这个问题很重要,因为它模拟了大量的现实应用,包括切割作业,如纸张或木材等材料的库存是大量的,必须以最小的浪费进行切割,调度问题,任务需要相同资源的连续子集,以及运输无法堆叠的物品时产生的集装箱装载问题。
  • 在文献中,条形包装问题已经被几种启发式和精确算法攻击,然而,小规模的基准实例仍然没有被证实的最优性。
  • 在本文中,我们提出了一种新的精确方法,可以在有限的计算量内求解大量的开放基准测试实例。
  • 我们的方法是基于Benders的分解,在主程序中,我们将项目切割成单位宽度的切片,并将它们连续地打包在条中,在从程序中,我们试图通过固定其单位宽度切片的垂直位置来重建矩形项目。如果从节点证明重建项目是不可能的,那么就向主节点添加一个切点,并重复该算法。
  • 我们证明了主问题和从问题都是强NP难问题,并通过定制预处理、上下边界技术和精确算法来解决它们。
  • 我们还提出了几种新的技术来改进标准的弯曲切割,使用所谓的组合Benders切割和额外的提升程序。
  • 大量的计算测试表明,相对于以前发表的算法,我们提出的算法提供了一个实质性的突破。

二、求解条形装箱的Benders分解

2.1 Notation

采用 normal patterns 减少摆放位置数量

什么是 normal patterns ?下面给出定义:

每个项目都尽可能往下和向左移动以改善结果,所以,任意一个项目都是挨着另一个项目或者边界的,这可以表示为,任意一个项目的摆放位置,都是其他项目的线性组合

normal patterns 的公式如下:

在这里插入图片描述
而项目的线性组合,可以通过动态规划的方式计算

2.2 SPP的数学逻辑模型

SPP可以通过使用两组变量来建模:一个二元变量$x_{jp}$,如果项目$j$被包装在列$p$中,则值为1,否则为0,一个连续的非负变量$y_j$给出项目j的底边框的高度。然后使用单个变量$z$定义解的总高度。SPP可通过以下数学逻辑模型描述:
在这里插入图片描述

  • 约束条件(6)要求每个项目都精确地包装在一列中。
  • 约束(7)强制$z$不小于占据任何列$q$的项目的总高度
  • 约束(8)强制$z$不小于任何项目$j$的上边界。注意,约束(7)对模型的正确性不是严格必要的,但对我们的分解方法是必要的。
  • 逻辑约束(9)要求占用同一列$q$的项集合对应的垂直区间$[y_j,y_j+h_j]$不重叠。

2.3 分解方法

对于SPP问题,从公式(5)-(11)中删除变量y可以得到下面的式子:

主程序

在这里插入图片描述
Boschetti和Montaletti(2010)使用模型(12)-(15)得到其下界,假设现在已经计算出一个整数解,然后从程序将找到问题的可行解(如果有的话)

从程序( y-check )

在这里插入图片描述

如果y-check返回一个可行解,则我们得到了原SPP实例的最优解。否则我们禁止当前的解,在主问题上加一个Cut。为了这个目的,让:

$$ p_j^s=\sum_{p \in \mathscr{W}(j)} p x_{j p}^s $$

$$ \sum_{j \in N} x_{j, p_j^s} \leqslant n-1 $$

假设现在我们可以找到项目$C^s$⊆N的精简子集,这样,如果我们把它的所有项目放在位置$p^s_j$,那么问题$y-check$仍然有一个不可行的解决方案(我们寻找Cs的方法在§4中讨论)。然后,我们得到组合Benders的切割:

$$ \sum_{j \in C^s} x_{j, p_j^j} \leqslant\left|C^s\right|-1 $$

然后我们可以将SPP建模为以下主问题:
在这里插入图片描述

这种分解的优点在于,它可以利用主节点和从节点的组合结构,为它们开发定制的优化技术。

下图展示了分解的示例:
在这里插入图片描述


三、从问题的解决方案

3.1 复杂性分析

本文的作者证明了$y-check$是NP完全问题。有兴趣可以看看原文详细证明。

3.2 y-check的算法

针对y检验的求解,我们开发了几种算法,并利用组合枚举树,丰富了约简和深探准则,获得了最佳的计算性能。由此产生的算法,在本文的其余部分称为y-check算法,从三种新的预处理技术开始,依次调用。

3.2.1 预处理过程

3.2.1.1 Merge Items 合并项目

对于任意的项目 j ,我们可以将项目 j 左边的其他项目和右边的其他项目分成两个集合
在这里插入图片描述
首先我们考虑第一个块(从不增序排列的$p^s_j$中取)。对于项目j左边的项目集合A,如果A中所有项目的高都小于项目j的高,则调用组合枚举树将A中的项目打包到宽度为$p^s_j$,高度为$h_j$的子区域中。如果A中所有项目都能被打包进去,那我们就将他们合并为一个新的项目k,项目k具有宽度$w_k=p^s_j+w_j$,高度$h_k=h_j$,x坐标 $p^s_k=0$。这保持了解决方案的最佳性,因为没有其他项目可以进入。

3.2.1.2 Lift Item Widths 增大项目宽度

假设现在有N个块,如果我们要对 块i 增大宽度,则我们需要从N个块中取出 块i ,放在x=0处,然后将剩下的N-1个块按照任意组合放在 块i 的右边(不重叠),假设N-1的块任意组合的最大宽度值为$W_{N-1}$,块i的宽度为$w_i$,容器宽度为$W$,则 块i 增大的宽度为$(W-W_{N-1}-w_i)$(任意组合的宽度可以通过动态规划求得)

3.2.1.3 Shrink the Strip 缩小长条容器

假设对N个块求任意组合的最大宽度为$W_{max}$,直接令容器宽度等于$W_{max}$(这一过程也可以通过DP实现)

3.2.2 Enumeration Tree for Problem y-Check 组合枚举树

这里我用不到,所以没有细看(好吧,确实也看不懂哈哈哈哈)。


四、改进Benders Cut

在下面,我们假设我们得到了一个解决方案S,它没有通过 y-check,我们需要通过添加Cut,将其从主问题中剔除。

我们开发了一个使用四个步骤(所有新开发的想法)的程序,前三个步骤用来寻找项目的最小不可行子集,最后一步,我们试图通过线性模型的求解添加$x_{jp}$变量来进一步提升Cut质量。具体在下面详细介绍。

4.1 寻找项目的最小不可行子集

4.1.1 找到可以分割成两个子问题的线

第一步,寻找一条垂直的线,可以将容器内的块分成左右两部分,而没有任何一个块与该线重叠。这样就可以使得原本的容器被一份为二,其中至少有一个部分还是不可行的。这样就找到了不可行子集。同样,这个过程可以递归下去,直到所有子集不能再分。

4.1.2 用线去删除矩形(删矩形效率较低)

第二步,从左往右用一根垂直的线(列)去遍历容器横轴,每次将被线穿过的矩形移除后,再进行y-check,此时如果check通过了,那就...;如果check还是失败,说明当前被线穿过的矩形不是导致check失败的原因,可以直接将其移除,这样就找到了更小的不可行集合。

4.1.3 一个一个删除矩形

第三步根据给定的顺序一次考虑一个项目。它从S中删除当前项,并在缩减实例上重新执行y-check算法。如果结果可行,则将项目重新插入S,否则我们会找到不可行的原因,并将当前项目排除在S之外。无论如何,我们会重复下一个项目,直到所有项目都已扫描完毕。在扫描结束时,我们只剩下一个子集的项目,这仍然会导致不可行。

此步骤的结果取决于选择项目的顺序。出于这个原因,我们用不同的顺序进行了多次尝试。

第一次尝试根据面积的非递减值选择项目。

在第二次尝试中,我们为每个项目分配一个成功分数。在当前SPP实例的解决方案开始时,该值最初设置为0,然后如果在分解算法的先前迭代中从S中移除项目成功(即,如果它导致了仍然不可行的缩减实例),则该值增加一个单位。然后,我们执行的第二次尝试根据成功分数的非递减值选择项目。

第三次尝试只是随机选择项目,并执行10次。

4.2 Lifting the Cut 提升Cut

我们程序的第四步,也是最后一步。我们假设所有项目的x坐标都不再是一个确实值,而是一个范围,线性程序规定,每个项目在自己的一定范围内,任意移动,项目间的重叠关系不会改变。
线性程序的目标是,所有项目的范围总和最大。


五、条形包装问题的精确算法

前面章节中给出的数学模型和算法已被插入到求解SPP的整体算法中。该算法还利用了一些额外的技术来加速收敛到最优值,无论是来自相关文献的最佳实践,还是新开发的程序。由于这个原因,我们称之为BLUE,来自Benders的分解和上界增强。

算法1中概述了一个非正式的伪代码。
在这里插入图片描述
BLUE首先对实例进行预处理,并计算最优解值的上界U和下界L。

然后,只要L严格小于U,它就解决了SPP的识别版本,称为SPP(L),其中条带的高度固定为L,目的是找到不超过L的物品的可行包装(如果有)(该问题在文献中也称为二维正交包装问题;例如,参见Clautiaux等人2007)。SPP(L)实例首先被传递到预处理过程,然后通过两种精确的方法求解,即组合分支和定界以及第二节的Benders分解。

(由于我需要的是用这个方法解决2DBPP,而不是2DSPP,所以后面的内容就没有进行阅读了,大家感兴趣可以阅读原论文)

5.1 Preprocessing and Bounds

5.2 Closing the Gap


六、Computational Results

所有算法都在C++中实现。运行在Intel Core(TM)2 Quad CPU Q8200上,在Linux openSUSE 11.4操作系统下运行2.33 GHz。

通过设置参数RepeatPresolve=3、Reduce=3、Probe=3、Simmetry=5,并强制使用单个处理器(Threads=1),使用IBM Ilog Cplex 12.5解决了LP和MILP。

Martello等人(1999)使用标准动态规划和程序组合的背包问题解决了子集和问题。允许使用蓝色算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


七、Conclusions

我们提出了一种用于精确解决带状包装问题的创新算法,该算法基于Benders分解,并丰富了几种定制技术。我们证明了分解中出现的从属问题是困难的,但用一种实际有效的算法解决了它。

我们提高了标准Benders,通过使用组合Benders Cut的概念和一种新的提升程序进行切割,这在困难情况下非常有效。所提出的算法始终优于先前发表的方法。

它以相似或较小的计算工作量提供了大量的最优解,并首次解决了几十年来开放的经验证的最优实例。

我们提出的一般框架可以适用于解决其他二维包装问题,如二维背包和二维箱式包装。它也可以推广到更高维的问题。这些代表了有趣的未来研究方向。

目录
相关文章
|
缓存 安全 SoC
来看看ARM gicv2/gicv3的详解
来看看ARM gicv2/gicv3的详解
1039 0
|
1月前
|
人工智能 算法 安全
IROS 2025 |从数字智能走向物理智能,“桃源”与真实世界机器人学习挑战赛启动,2大赛道等你来战
2025年10月,IROS (智能机器人与系统国际会议)期间,上海人工智能实验室(上海AI实验室)将举办物理世界中的多模态机器人学习研讨会,IROS 2025“桃源”与真实世界机器人学习挑战赛(机器人学习挑战赛)现已启动报名,欢迎全球创新者与挑战者参加。
208 0
|
4月前
|
人工智能 前端开发 JavaScript
【CodeBuddy】三分钟开发一个实用小功能之:数字华容道拼图
本文通过实现数字华容道游戏,展示codebuddy智能编程助手的强大功能。只需简单描述需求,codebuddy即可生成高质量代码,涵盖HTML、CSS和JavaScript,大幅提升开发效率。其核心功能包括智能代码生成、优化与调试,以及持续学习进化能力。未来,codebuddy有望进一步增强代码可读性、支持更多语言框架,并提升智能化水平,助力开发者专注于设计与创新,开启智能编码新时代。
152 10
【CodeBuddy】三分钟开发一个实用小功能之:数字华容道拼图
|
10月前
|
UED 开发者
鸿蒙next版开发:ArkTS组件通用属性(图片边框设置)
在HarmonyOS 5.0中,ArkTS提供了灵活的图片边框设置属性,使开发者可以为应用中的图片组件添加各种边框效果,提升视觉效果和用户体验。本文详细解读了ArkTS中图片边框设置的通用属性,并提供了示例代码。通过设置`borderImage`属性,可以控制边框的图源、切割宽度、边框宽度、延伸距离、平铺模式和是否填充。示例代码展示了如何使用这些属性来创建具有不同边框效果的图片组件。图片边框设置在美化界面、区分内容和增强交互方面有重要作用。
423 5
|
运维 关系型数据库 MySQL
【运维日常】运维必备的 免费 在线画图工具,真的很好用!_和processon类似的在线画图
【运维日常】运维必备的 免费 在线画图工具,真的很好用!_和processon类似的在线画图
【运维日常】运维必备的 免费 在线画图工具,真的很好用!_和processon类似的在线画图
|
图形学
【用unity实现100个游戏之17】从零开始制作一个类幸存者肉鸽(Roguelike)游戏2(附项目源码)
【用unity实现100个游戏之17】从零开始制作一个类幸存者肉鸽(Roguelike)游戏2(附项目源码)
445 0
|
人工智能 自然语言处理 供应链
阿里云联合伙伴发起“物流智能联盟”
物流行业内首个专注于大模型应用研究与实践的联盟“物流智能联盟”在杭州成立,旨在加速大模型在物流领域落地,用AI助力物流行业增效降本和业务创新。该联盟由阿里云、菜鸟、高德地图、中远海运、东航物流、圆通速递、申通快递、中通快递、德邦快递、G7易流、地上铁、浙江大学智能交通研究所等在2024数智物流峰会上共同成立。
|
Web App开发 资源调度 算法
【机组组合】基于Benders分解算法解决混合整数规划问题——机组组合问题(Matlab代码实现)
【机组组合】基于Benders分解算法解决混合整数规划问题——机组组合问题(Matlab代码实现)
378 1
|
机器学习/深度学习 传感器 算法
【VRP问题】基于蚁群结合 2-opt 解决多站点车辆路径问题 MDVRP附matlab代码
【VRP问题】基于蚁群结合 2-opt 解决多站点车辆路径问题 MDVRP附matlab代码
|
存储 关系型数据库 MySQL
mysql的锁机制实现原理
mysql的锁机制实现原理