引言
集装箱装箱问题属于经典的NP-hard组合优化问题。本工具采用启发式算法,在保证计算速度的前提下,尽可能逼近最优装载方案。本文将深入解析工具内置的算法逻辑,帮助您理解计算结果背后的原理。
一、单一货物模式算法
当只有一种货物时,算法目标是找到使集装箱装载数量最大化(或占用体积最小)的摆放方式。核心步骤如下:
1. 确定最大层数
首先根据货物高度和集装箱高度计算可堆放层数:最大层数 = floor(集装箱高度 / 货物高度)
2. 计算单层摆放方案
对于每一层,算法会评估三种排列策略:
- 纯长边沿宽度方向:货物长边(含间隙)沿集装箱宽度方向排列,深度方向步长为货物宽边(含间隙)。
- 纯宽边沿宽度方向:货物宽边(含间隙)沿集装箱宽度方向排列,深度方向步长为货物长边(含间隙)。
- 混合排列:在宽度方向上同时放置长边朝向和宽边朝向的货物,通过遍历所有可能的组合,找到单层数量最多的方案。
3. 选择最优方案
对于非最后一种货物(多货物模式)或数量不限的情况,算法会优先选择占用体积最小的方案,以便为后续货物留出更多空间。对于最后一种货物或数量固定的情况,算法会选择装载数量最大的方案。
4. 尾部空间填充
当货物数量不限时,算法还会检查长度方向的尾部剩余空间,尝试将货物旋转后塞入,以进一步提升装载量。例如,如果尾部剩余深度大于货物宽度,则可再放入一列长边朝向的货物。
二、多货物顺序装载算法
多货物混装时,算法按照用户添加的顺序依次处理每种货物,策略如下:
- 顺序处理:从第一种货物开始,计算在当前可用空间(深度、宽度、高度)下的最大装载方案。
- 部分装载处理:如果货物有指定数量且小于最大可装数量,则按需装载,并只占用所需的深度空间。
- 碎片收集:每装载完一种货物,算法会分析产生的“横向碎片”(宽度方向剩余)和“深度台阶碎片”(由于混合排列导致的不同区域深度差),并将这些碎片空间记录下来。
- 尾部空间处理:当前货物装载完成后,长度方向剩余的连续空间会作为后续货物的可用深度。
- 最后一种货物优化:如果最后一种货物数量不限,算法会在所有前述货物装载完毕后,额外扫描之前产生的所有碎片空间以及自身的尾部剩余空间,尝试将最后一种货物填入这些碎片中,实现最大限度的空间利用。
三、空间利用率计算
空间利用率 = (所有已装载货物的总体积) / (集装箱总容积) × 100%
货物体积按原始尺寸(不含间隙)计算,集装箱容积按长×宽×高计算。
四、算法优势与局限
优势
- 速度快:启发式算法可在毫秒级完成计算,适合在线实时使用。
- 支持混合排列:同时考虑两种货物朝向,比单一朝向方案空间利用率更高。
- 碎片再利用:能够识别并利用装载过程中产生的边角空间。
局限
- 顺序依赖:多货物装载结果受货物添加顺序影响较大,不一定能得到全局最优。
- 仅支持方体:无法处理圆柱、梯形体等异形货物。
- 无重量约束:未考虑货物重量分布和集装箱承重限制。
五、优化建议
- 调整货物顺序:对于多货物混装,建议将尺寸较大、数量较多的货物放在前面。
- 合理设置间隙:间隙值会显著影响装载量,应根据实际托盘、包装情况准确填写。
- 分批计算:如果货物种类很多,可先按尺寸分组,分批计算后再人工组合。
理解算法原理有助于您更好地解读计算结果,并在实际装箱中做出更合理的决策。如有特殊需求,欢迎通过留言反馈。