53、装箱小结

 

做了两年多的装箱问题,在这里做一个小结,说一说自己的一些理解

这里的三维装箱定义如下:

有n个待装的商品,m种数量不限的箱子,如何去选择箱子和装箱方案,使得最终使用的箱子总体积最小(有时也可以作成“少而小”的多目标的形式)

建模如下:

 

 

 

在问题规模较小时,推荐使用上述模型配合一般的求解器求解

在问题规模较大时,推荐使用一般的启发式方案,因为此时求解器一般很难得到最优解,即使得到的可行解gap一般也会很大

至于规模大小的划分,个人经验是n=20左右,这里使用的是个人的pc机,求解器为开源的scip,如果算力资源较好时,也可适当增大这个阈值(当然实际实现时,两种方案一般都会运行,选择好的结果作为最终结果)

 

至于启发式方法,其实就是对装载的一种策略:

  • 有人学习砌墙工人砌墙,不断的去设置准线去装
  • 有人先将所有的东西拼好,码垛成一条一条、一层一层的再装
  • 有人将所有可能拼成的形状都罗列出来再去装

规则很多,但宗旨很多都是基于贪心的策略去做的,目前在通用的测试集下,大多数基于“拼”的策略结果都较好

其中:

  • 序列装载是基调,排在前面的先装,所以整体看,序列大致呈降序排列时,结果较好(因为这样装的结果是大的先装,小的插空)
  • 而对于具体的案例来说,严格的降序排列经常不一定的是最优解,所以一般会配合元启发式方法或者说一些局部搜索的方法(2-opt、模拟退火等)使用,使得该解起码是一个局部最优解

这里面很多思想都是贪心的,通用的,一个比较重要且特殊的思想就是要“先拼再装”,这些思想结合起来就不会太差

 

 

 

 

 

 

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值