二维矩形装箱问题

二维矩形装箱问题

  • 问题描述
  • 问题分析
    • 如何放置
    • 如何决定矩形出现的顺序
  • 运行结果

问题描述

二维矩形装箱问题(2D rectangular packing problem, 简称2DRP)是一种常见的问题,常用在物流运输或材料切割场景下。
论坛里也有各种分析和教学,但从实际效果看,很多运行的结果并不算很好,尤其是矩形多了以后,效果更差。故在这里整理一下思路,供大家借鉴。

问题分析

对于这个问题,我们应该分成两部分来看:
1.当手里拿到一个矩形以后,该如何放置;
2.如何决定拿到矩形的顺序;

如何放置

这个问题可以参考LijunWei等大神发明的SkyLine算法以及后续不断优化和改进的算法。对于算法本身可以参考《A skyline heuristic for the 2D rectangular packing and strip packing problems》等学术论文。另外也可以在这个 链接下了解这个算法的实现过程。

如何决定矩形出现的顺序

这个问题实现就比较简单了,常见的元启发式算法都可以试用。我自己使用的是遗传算法,得到了较好的效果,遗传算法排列了矩形出场顺序及方向。

运行结果

能看懂算法的前提下,代码编写不存在什么难点的。贴几个标准算例的效果。我电脑是I5 9400,只使用了CPU计算,未使用GPU计算。从结果看,这种方法还是可行的。

25PCS矩形,满排,耗时大约5秒。
二维矩形装箱问题_第1张图片
28PCS的,也很简单,满排10秒

二维矩形装箱问题_第2张图片

97PCS,应该能满排的算例,但是我差一块没放进去,耗时大约1分钟。
二维矩形装箱问题_第3张图片

197PCS矩形,应该能满排的,也没实现满排,运行2分钟的结果。
二维矩形装箱问题_第4张图片

你可能感兴趣的:(笔记,数学建模)