一些三维装箱问题

三维装箱问题在电商业务中有重要应用, 例如订单打包和商品装车. 下面我们列举一些电商业务中可能用到的三维装箱问题.

基本概念

首先我们把问题分为两类:

  • 判定问题(Decision Problem). 这类问题的答案只有两种: .
  • 优化问题(Optimiation Problem). 这类问题一般有一个优化目标, 问题的最优解使得目标达到最优.

为了方便描述, 我们先介绍一些术语和假设.

物品

物品有两种类型:

  • 普通物品(Item). 它是长方体且无弹性. 用长宽高来描述普通物品的尺寸.

  • 柔性物品(Soft Item). 它有 k ≥ 1 k \geq 1 k1种尺寸, 即 ( l 1 , w 1 , h 1 ) , ( l 2 , w 2 , h 2 ) , … , ( l k , w k , h k ) (l_1, w_1, h_1), (l_2, w_2, h_2), \ldots, (l_k, w_k,h_k) (l1,w1,h1),(l2,w2,h2),,(lk,wk,hk). 要求所有尺寸对应的体积相同, 即 l i w i h i = l j w j h j l_iw_ih_i = l_jw_jh_j liwihi=ljwjhj, ∀ i ≠ j \forall i\neq j i=j. 普通物品可以看成是只有一种尺寸的柔性物品.

箱子

箱子有两种类型:

  • 盒子(Box). 它是长方体的表面, 且无弹性. 用长宽高来描述盒子的尺寸.
  • 袋子(Bag). 它是高度为零的长方体表面. 用长和宽描述袋子的尺寸. 此外, 袋子是柔软的. 换句话说它可以变形成盒子, 要求其表面积等于袋子的表面积, 且水平和垂直方向的周长不超过袋子在水平和垂直方向上的周长. 设袋子的长和宽分别为 L L L W W W, 它变形成的盒子的长宽高分别是 l , w , h l,w,h l,w,h. 因此我们要求:
    l + h ≤ L w + h ≤ W \begin{aligned} & l + h \leq L\\ & w+ h \leq W \end{aligned} l+hLw+hW

装箱

我们说物品集合 I I I能被装入盒子当且仅当:

  1. I I I中所有物品都在盒子的内部;
  2. I I I中任意两个物品不相交.

装袋

我们说物品集合 I I I能被装入袋子当且仅当存在一个由袋子形变的盒子能装入 I I I中所有物品.

判定问题

3D装盒-单盒 (Three-dimensional box packing with single box)

输入. 长宽高为 ( L , W , H ) (L, W, H) (L,W,H)的盒子和 n n n个物品. 物品的长宽高分别是 ( l i , w i , h i ) (l_i, w_i, h_i) (li,wi,hi), i = 1 , 2 , … , n i=1, 2, \ldots, n i=1,2,,n且允许90度旋转.
问题. 物品是否可以被全部装入盒中?

3D装盒-单盒-柔性物品 (Three-dimensional box packing with single box and soft items)

输入. 长宽高为 ( L , W , H ) (L, W, H) (L,W,H)的盒子和 n n n个柔性物品, 其中每个柔性物品 i i i k i k_i ki种尺寸, 即 ( l i 1 , w i 1 , h i 1 ) , … , ( l i k i , w i k i , h i k i ) (l_i^1, w_i^1, h_i^1), \ldots, (l_i^{k_i}, w_i^{k_i}, h_i^{k_i}) (li1,wi1,hi1),,(liki,wiki,hiki), i = 1 , 2 , … , n i=1, 2, \ldots, n i=1,2,,n. 允许物品90度旋转.
问题. 柔性物品是否可以被全部装入盒中?

3D装袋-单袋 (Three-dimensional bag packing with single bag)

输入. 长宽为 ( L , W ) (L, W) (L,W)的袋子; n n n个物品, 其长宽高是 ( l i , w i , h i ) (l_i, w_i, h_i) (li,wi,hi), i = 1 , 2 , … , n i=1, 2, \ldots, n i=1,2,,n. 物品允许90度旋转.
问题. 物品是否可以被全部装入袋中?

3D装袋-单袋-柔性物品 (Three-dimensional bag packing with single bag and soft items)

输入. 长宽为 ( L , W ) (L, W) (L,W)的袋子; n n n个物品, 其中每个物品 i i i k i k_i ki种尺寸, 即 ( l i 1 , w i 1 , h i 1 ) , … , ( l i k i , w i k i , h i k i ) (l_i^1, w_i^1, h_i^1), \ldots, (l_i^{k_i}, w_i^{k_i}, h_i^{k_i}) (li1,wi1,hi1),,(liki,wiki,hiki), i = 1 , 2 , … , n i=1, 2, \ldots, n i=1,2,,n. 物品允许90度旋转.
问题. 柔性物品是否可以被全部装入袋中?

优化问题

3D装盒-单盒 (Three-dimensional box packing with single box)

输入. m m m个盒子, 其长宽高为 ( L j , W j , H j ) (L_j, W_j, H_j) (Lj,Wj,Hj), 成本为 c j c_j cj, j = 1 , 2 , … , m j=1,2,\ldots,m j=1,2,,m; n n n个物品, 长宽高为 ( l i , w i , h i ) (l_i, w_i, h_i) (li,wi,hi), i = 1 , 2 , … , n i=1, 2, \ldots, n i=1,2,,n. 物品允许90度旋转.
问题. 找一个成本最低的盒子使得它能装下所有商品, 否则返回不存在.

3D装盒-单盒-柔性物品 (Three-dimensional box packing with single box and soft items)

输入. m m m个盒子, 长宽高为 ( L j , W j , H j ) (L_j, W_j, H_j) (Lj,Wj,Hj), 成本为 c j c_j cj, j = 1 , 2 , … , m j=1,2,\ldots,m j=1,2,,m; n n n个物品, 其中每个物品 i i i k i k_i ki种尺寸, 即 ( l i 1 , w i 1 , h i 1 ) , … , ( l i k i , w i k i , h i k i ) (l_i^1, w_i^1, h_i^1), \ldots, (l_i^{k_i}, w_i^{k_i}, h_i^{k_i}) (li1,wi1,hi1),,(liki,wiki,hiki), i = 1 , 2 , … , n i=1, 2, \ldots, n i=1,2,,n. 物品允许90度旋转.
问题. 找一个成本最低的盒子使得它能装下所有柔性物品, 否则返回不存在.

3D装盒-多盒 (Three-dimensional box packing with mutiple boxes)

输入. m m m个盒子, 长宽高为 ( L j , W j , H j ) (L_j, W_j, H_j) (Lj,Wj,Hj), 成本为 c j c_j cj, j = 1 , 2 , … , m j=1,2,\ldots,m j=1,2,,m; n n n个物品, 长宽高为 ( l i , w i , h i ) (l_i, w_i, h_i) (li,wi,hi), i = 1 , 2 , … , n i=1, 2, \ldots, n i=1,2,,n; 总成本 M M M. 物品允许90度旋转.
问题 找一些盒子使得它们能装下所有物品且总成本不超过 M M M, 否则返回不存在.

3D装盒-多盒-柔性物品 (Three-dimensional box packing with multiple boxes and soft items)

输入. m m m个盒子, 长宽高为 ( L j , W j , H j ) (L_j, W_j, H_j) (Lj,Wj,Hj), 成本为 c j c_j cj, j = 1 , 2 , … , m j=1,2,\ldots,m j=1,2,,m; n n n个柔性物品, 其中每个柔性物品 i i i k i k_i ki种尺寸, 即 ( l i 1 , w i 1 , h i 1 ) , … , ( l i k i , w i k i , h i k i ) (l_i^1, w_i^1, h_i^1), \ldots, (l_i^{k_i}, w_i^{k_i}, h_i^{k_i}) (li1,wi1,hi1),,(liki,wiki,hiki), i = 1 , 2 , … , n i=1, 2, \ldots, n i=1,2,,n; 总成本 M M M. 物品允许90度旋转.
问题. 找一些盒子使得它们能装下所有柔性物品且总成本不超过 M M M, 否则返回不存在.

3D装袋-单袋 (Three-dimensional bag packing with single bag)

输入. m m m个袋子, 长宽为 ( L j , W j ) (L_j, W_j) (Lj,Wj), 成本为 c j c_j cj, j = 1 , 2 , … , m j=1,2,\ldots,m j=1,2,,m; n n n个物品, 长宽高为 ( l i , w i , h i ) (l_i, w_i, h_i) (li,wi,hi), i = 1 , 2 , … , n i=1, 2, \ldots, n i=1,2,,n. 物品允许90度旋转.
问题. 找一个成本最低的袋子使得它能装下所有物品, 否则返回不存在.

3D装袋-单袋-柔性物品 (Three-dimensional bag packing with single bag and soft items)

输入. m m m个袋子, 长宽为 ( L j , W j ) (L_j, W_j) (Lj,Wj), 成本为 c j c_j cj, j = 1 , 2 , … , m j=1,2,\ldots,m j=1,2,,m; n n n个柔性物品, 其中每个物品 i i i k i k_i ki种尺寸, 即 ( l i 1 , w i 1 , h i 1 ) , … , ( l i k i , w i k i , h i k i ) (l_i^1, w_i^1, h_i^1), \ldots, (l_i^{k_i}, w_i^{k_i}, h_i^{k_i}) (li1,wi1,hi1),,(liki,wiki,hiki), i = 1 , 2 , … , n i=1, 2, \ldots, n i=1,2,,n. 物品允许90度旋转.
问题. 找一个成本最低的袋子使得它能装下所有物品, 否则返回不存在.

3D装袋-多袋 (Three-dimensional bag packing with multiple bags)

输入. m m m个袋子, 长宽为 ( L j , W j ) (L_j, W_j) (Lj,Wj), 成本为 c j c_j cj, j = 1 , 2 , … , m j=1,2,\ldots,m j=1,2,,m; n n n个物品, 长宽高为 ( l i , w i , h i ) (l_i, w_i, h_i) (li,wi,hi), i = 1 , 2 , … , n i=1, 2, \ldots, n i=1,2,,n; 总成本 M M M. 物品允许90度旋转.
问题. 找一些袋子使得它们能装下所有物品且总成本不超过 M M M, 否则返回不存在.

3D装袋-多袋-柔性物品 (hree-dimensional bag packing with multiple bags and soft items)

输入. m m m个袋子, 长宽为 ( L j , W j ) (L_j, W_j) (Lj,Wj), 成本为 c j c_j cj, j = 1 , 2 , … , m j=1,2,\ldots,m j=1,2,,m; n n n个柔性物品, 其中每个物品 i i i k i k_i ki种尺寸, 即 ( l i 1 , w i 1 , h i 1 ) , … , ( l i k i , w i k i , h i k i ) (l_i^1, w_i^1, h_i^1), \ldots, (l_i^{k_i}, w_i^{k_i}, h_i^{k_i}) (li1,wi1,hi1),,(liki,wiki,hiki), i = 1 , 2 , … , n i=1, 2, \ldots, n i=1,2,,n; 总成本 M M M. 物品允许90度旋转.
问题. 找一些袋子使得它们能装下所有柔性物品且总成本不超过 M M M, 否则返回不存在.

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值