一、《基于混合遗传算法的多箱型集装箱装载问题研究》张长勇

本文以实际问题——航空器货物装载为切入点,研究了遗传算法在航空装载问题中的有效性。

1、问题定义:

多箱型集装箱装载问题:

在一定的约束条件下,将大量质量不等、大小不同的货物以适当的装载方法装入到多个集装箱中,其中待装载集装箱为常用的四种航空集装箱(AMA、AKE、AMF、AAU 集装箱),使得满足实际约束的情况下各集装箱的体积利用率最大,以提高航空集装箱运输中对集装箱的合理利用,从而降低运输成本提高经济效益。
2、假设条件:

(1)货物密度均匀,形状均为长方体,尺寸各异且不大于集装箱尺寸;(2)货物由挤压产生的微小形变可忽略;(3)货物的码放不受限制,可放置在箱内任意位置。(4)货物具有不同到站。
3、约束条件:
(1)体积约束:货物的总体积不超过集装箱的最大容积;(2)载重量约束:货物的总重量不超过集装箱的最大承载能力;(3)重心约束:为保证垛形稳定性,集装箱重心应在合理的范围内;(4)不重叠约束:货物之间不允许重叠放置;(5)承重约束:充分考虑货物的载重能力,以免因过度挤压而损坏货物。(6)正交放置约束:码放过程中货物边缘与集装箱边缘平行或者垂直。(7)装载顺序约束:货物编号与装载顺序一一对应,先到站的后装,后到站的先装。
这里比较难理解的是重心约束如何去实现,涉及到一点高等数学的知识:重心的计算
4、遗传算法设计
遗传算法最重要的就是编码和解码,因此,设计过程就是编码的过程。
(1)货物放置状态。这里需要引起注意:实际问题中有一些货物可以上下颠倒放置,因此有六种放置状态;有一部分货物不能上下颠倒,因此只有两种放置状态1 2。这一点可以通过自己拿身边的物品实操一下即可理解1 2 3 4 5 6。
(2)个体的编码和解码:考虑对货物的装箱顺序、货物放置状态和集装箱编号进行编码
(3)货物放置规则:还是通用方法,即放置一个物品,减少一个pivot,但是产生三个pivot
(4)评价函数:最大化集装箱体积利用率,这里是装载的总的物品体积/所使用全部集装箱体积
(5)常规遗传操作
5、实验分析部分
思路:(1)选取文献当中的标准算例,与其他使用该算例的算法进行对比分析
(2)实例验证:物流公司获取的具体货物数据来进行验证。这里还分析了单个集装箱的体积利用率大小。
(3)收敛性判断:在经过一定次数的迭代,是否可以收敛。
(4)可视化分析
个人评述:
(1)文章前面的对比实验数据,是以单一种类集装箱为基础的,即箱子的种类只有一个,然后进行了对比实验,但是航空装载是多种类集装箱装载,我认为对比实验的说服力不强,还不能说明该遗传算法的有效性。
(2)航空公司实际数据的分析和可视化中,作者篇幅和笔墨较少,可视化是怎么实现的,箱子的位置如何确定的,均未描述;非长方体箱型装载如何实现的?
(3)实际货物可能都是长方体形状的吗?我认为这是这篇文章接下来应该研究的重点。

二、《OPTIMIZING THREE-DIMENSIONAL BIN PACKING THROUGH SIMULATION》

这篇文章的发表于2006年,但是它的方法还是比较经典的。文章本身写得确实不咋地,初看的话有些晦涩,因为它很多的方法和细节都没有详细阐述,默认读者是明白的。这种先入为主的写作思想,对于读者来说简直是噩梦。

1、研究问题

文章直接假设物品和容器均为长方体,选取若干的容器装载物品,使得每一个容器的体积利用率最大。在这里,我解读为,物品总体积/使用容器总体积 这个值最小即可。

2、假设条件

(1)物品和容器均为正方体

(2)物品和容器平行装载

(3)物品可以在六个方向随意旋转

需要指出的是,这里没有考虑的限制有很多,比如重心限制,承重限制等

3、约束条件

(1)总重量:每个箱子的载重量有限

(2)大小:放置的所有物品大小不能超过箱子本身

(3)交叉:不同物品间不能交叉放置

4、解决方法

Best Fit

(1)以体积大小为标准,对items和bins做排序。初始放置点为(0,0,0)。

(2)第一个物品放置完毕后,之后每放置一个物品,首先生成一个可放置点,具体方法是:根据上一个物品的放置点,我们可以按照width,depth,height三个方向新生成三个可放置点,这里并不保存,只是选择其中的一个作为可放置点。然后穷尽6个方向放置物品,直到物品可以被放进去。

(3)如果在三个方向上生成的可放置点上都无法将箱子放进去,那么就将该物品放入unfitted items中,先将其他箱子处理完,再来处理该箱子。

3D First Fit Decreasing

(1)该算法尽量让物品和最长边贴着箱子的最长边放置。比如一个箱子为10X9X8,即width是最长的。有一个物品规格为1X2X3,那么就使其旋转变成3X2X1(或3X1X2),使最长边贴着箱子的最长边放置。

(2)初始阶段,按照箱子width、height、depth的大小顺序,对装载的物品做一个递减排序。比如箱子箱子是10X9X8,即width>height>depth,那么箱子就要按照宽带、长度、深度递减的顺序排列。

(3)假设3X2X1无法放置到箱子,那么再次旋转使其变成2X3X1(或2X1X3),使其第二长边对应箱子放置,以此类推。

作者没有给出该方法的伪代码,有效性和算法的优劣性暂无结论。而且这个也只适用于单个箱子装载物品的场景,当有多个种类和规格不同的箱子进行装载的时候,这个方法没有很方便。

5、实验分析部分

实验分析部分并未给出对比,仅仅做了可视化实验。

三、Issues in the to Development of Approaches Container Loading

这篇文章几乎会被后来的每篇三维装箱主题文章引用,因为它给出了这个领域的标准数据集,并沿用至今。同时,给出了数据集生成算法,以及统一的问题定义,方便后来的学者继续做研究。

数据集链接

研究背景

作者对箱子进行了分类。按照箱子的种类和数量的多少,将装箱问题分为强异构型问题和弱异构型问题。当时的算法,很大程度上取决于问题是强异构类型还是弱异构类型,这个很影响算法的效果。因此,作者想找到一种结合的方法,却解决这个问题。

问题定义:

简单来说,就是给定单个容器和一系列尺寸不一一定数量的箱子,要找到一个恰当的装载方式,使得容器的容积利用率最大。注意,这里并不是要所有物品都被装进去,而是要用算法选定一定的物品进行装载,使得容器的容积利用率最大。

约束条件:

(1)箱子之间不能重叠。(2)方向约束。width、height和depth是否能作为垂直方向的长度。

(3)承载约束。要考虑到箱子单位面积能够承受的重量。

(4)物品放置顺序的约束。比如重的物品要放在地板上,或者不能放太高,方便搬运和卸载。

(5)承载的稳定性。确保货物在运输过程中不能剧烈移动。

(6)物品分组限制。把相同的物品分为一组,放在一起,方便搬运和卸货。

(7)多次卸载限制。货物可能有不同的卸货地点,先卸货的后装载,后卸货的先装载。

(8)货物之间的分离。有一些货物不能放在一起,比如说化学品和食物

(9)完整的物品搬运。(还不太明白)

(10)货物运输的优先级。

(11)装载方法不能过于复杂,这样会导致更大的工作量。

(12)集装箱重量限制

(13)重心限制。整个容器的重心要尽量接近它的几何重心。

以上~会继续更新

四、领域搜索

在三维装箱问题中,启发式算法产生新解的方式:

《三维装箱问题的组合启发式算法》

(1)改变两类箱子的装填顺序

(2)交换某类箱子的任意两个尺寸

《A novel hybrid tabu search approach to container loading》

(1)交换任意两个解在集装箱中的位置

五、Loading pallets with non-identical items

1、解决的问题

托盘是一个装载货物的器械,和航空装载的ULD类似。给定一定数量,不同种类的物品,要求找到一个装载方案,让物体放置在托盘中,从而最大化托盘的空间利用率。

2、与集装箱装载问题的不同

本文使用的是分层装载的思想

但文章中对“层”的定义描述不清晰

三维装箱论文阅读小结相关推荐

  1. 三维视觉论文阅读:RAFT2020双目光流

    论文 RAFT: Recurrent All-Pairs Field Transforms for Optical Flow 摘要 2020年下半年以来,深度学习都逐渐走向了迭代优化(例如NeRf), ...

  2. 三维视觉论文阅读:GANet2019双目立体匹配

    论文 GA-Net: Guided Aggregation Net for End-to-end Stereo Matching 摘要 自从大家开始将SGM的思想引入双目立体匹配网络后,越多越多的学者 ...

  3. 三维视觉论文阅读:StereoDRNet2019双目立体匹配

    论文 StereoDRNet: Dilated Residual Stereo Net 摘要 个人感觉StereoDRNet是StereoNet的后续,做了很多的改进,实验效果也非常好. 网络模型 S ...

  4. 论文阅读-20220904

    开学第一周论文阅读总结 本周阅读了两篇英文文献,第一篇是陈铿的一种基于自适应特征调整的室内场景三维点云多目标检测方法,另一篇是林在超的一种基于特征增强的改进点云补全方法. 目录 开学第一周论文阅读总结 ...

  5. 场景生成及编辑3D定位论文阅读

    前置知识 归纳偏置 关于归纳偏置的理解:首先推荐一篇解释归纳偏置非常好的博客:浅谈归纳偏置 (InductiveBias) 通俗的,归纳偏置可以理解为,从现实生活中观察到的现象中归纳出一定的 规则(h ...

  6. 多目标跟踪:CVPR2019论文阅读

    多目标跟踪:CVPR2019论文阅读 Robust Multi-Modality Multi-Object Tracking 论文链接:https://arxiv.org/abs/1909.03850 ...

  7. Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读

    Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读 Action4D: Online Action Recognition in the Crowd and Clutter 论文链接 ...

  8. 深度学习点云语义分割:CVPR2019论文阅读

    深度学习点云语义分割:CVPR2019论文阅读 Point Cloud Oversegmentation with Graph-Structured Deep Metric Learning 摘要 本 ...

  9. 3D目标检测论文阅读多角度解析

    3D目标检测论文阅读多角度解析 一.前言 CNN(convolutional neural network)在目标检测中大放异彩,R-CNN系列,YOLO,SSD各类优秀的方法层出不穷在2D图像的目标 ...

最新文章

  1. CommunityServer研习心得(转)
  2. oracle locked time,ORACLE distributed_lock_timeout参数
  3. 迷你世界电锯机器人_迷你世界:石像机器人升级版,制作如此简单!
  4. cocos2D创建一组单选按钮菜单
  5. Oracle 12C R2-新特性-SQLPLUS提供查看历史命令的功能
  6. C# NPOI Excel 合并单元格和取消单元格
  7. 荣耀4a android art,华丽布局全网通,从一堂课诞生的荣耀4A测评
  8. 电路原理 | 二阶动态电路
  9. Centos 6.5、7升级安装openssh8.2p1
  10. java mail 回复邮件_JavaMail - 退回邮件( Bounced Messages)
  11. 如何进行手机投屏设置,屏幕传输达到最快速度
  12. 科大讯飞语音离线命令识别
  13. 4H5样式控制CSS1-美化网页元素
  14. ngrock内网穿透(Ngrok 和 Sunny-Ngrok )
  15. 让你的终端更漂亮——MAC OS 终端的设置
  16. C语言位运算农夫过河,位运算常见操作和农夫过河问题(C++实现)
  17. GiB 与 GB 的区别
  18. 回到过去看未来(2)
  19. 程序员牛逼的摸鱼神器来了?上班也可以在看股票、基金实时数据~
  20. javascript中function详解

热门文章

  1. 使用ltp进行三元组提取的实战代码
  2. 支持多线程的Redis 6.0终于发布了!
  3. Elasticsearch Java Client创建索引
  4. web服务器攻击的八种方式
  5. C语言sfr定义一个变量,单片机c语言的sbit和sfr
  6. 物联网设备数据流转之数据如何存储:TDengine集成SpringBoot, MyBatisPlus实现ORM与CRUD
  7. 使用Convert命令进行显示转换
  8. ERD Online 元数据管理开放平台
  9. 数学黑洞(三)角谷猜想
  10. 【转】Mac突然连不上WiFi解决步骤