纸箱尺寸(纸盒包装尺寸图)

一、背景极光包装盒成为潮流logo,get-something App成为年轻潮人的精神归属。特殊的包装材料在消费者中形成了强大的心智,极光蓝等于get-som

一、背景

极光包装盒成为潮流logo,get-something App成为年轻潮人的精神归属。特殊的包装材料在消费者中形成了强大的心智,极光蓝等于get-something。

但由于早期的箱尺寸数据是靠人工经验设计的,存在着箱尺寸与商品尺寸匹配度不高的问题,一般会造成以下效果:

不合理的纸箱尺寸导致部分商品使用了较大的纸箱,造成了纸箱采购成本的浪费。较大纸箱会造成运输成本的增加。商品和纸箱之间的空隙过大,可能在运输过程中造成商品的损坏。二、确定方案

考虑到纸箱的投标节奏,以及留在仓库打样、试装、试发货的时间,需要以较快的速度完成建模和计算。

在这件事情上,业务方无法给出一些具体的准则。例如,要计算的综合目标包括运输成本,运输成本包括承运商的配送算法规则及其运费模板。直接把这些因素纳入盒子建模基本上是不可能的。再比如箱子的数量影响采购招标谈判的成本和仓库里的人的效率。这里很难量化,无法直接定义盒量值的评价标准。所以首先要和业务方一起分析产品的现状,明确目标,把所有的问题量化,同时把问题简单化。

2.1 问题分析

Sku数据:过去一年出货sku的主数据及其对应的销量,规则中排除的(只考虑纸箱出货的货物,排除分箱包装的货物)和异常值(如sku大小异常)。

纸箱尺寸参数约束:考虑到板材尺寸的合理性(纸箱尺寸下限的定义)和仓库内人员打包的方便性(纸箱尺寸上限的定义),我们确定了纸箱的上下限,形成了百万个组合空间。

箱数约束:排除异形箱,要综合考虑装箱率、采购成本、仓库效率。一般来说,单个仓库的箱子数量不能超过15个。

覆盖率:在已经筛选出纸箱包装的SKU的前提下,接受部分异形、大件物品无法被箱组覆盖,要求发货单率>:=99%。

基于以上对问题的分析,可以看出,如果有一套K盒计算装箱率的解法,这个问题的复杂度是不错的。但是如果从正面做计算,需要遍历符合条件的SKU的盒子组合,基本上无法在有效时间内计算出结果。

2.2 问题简化2.2.1 箱型数约束

剔除异形箱,基于仓库的实际情况,预计本次新设计的箱子数量为8~15个。需要综合考虑装箱率、采购成本、仓库效率。箱数增加,装箱率会增加,采购成本也会增加,在仓库的效率会降低。因为这里无法量化,比如给出具体的综合指标,所以决定给出几个版本供业务方选择,而不是作为建模的约束或目标。这相当于直接简化了将M组盒子中的M *固定在一个盒子中的复杂性。在实际开发中,只需要同时使用M个容器来执行计算。

2.2.2 覆盖率约束

覆盖是一个不等式约束,目前的问题,未覆盖的sku零件分布非常明显,集中在长度、宽度、高度以及超过仓库内搬运便利性上限的一个或多个值。因此,这里,在建模之前确定盒类型的上限和未覆盖的部分。

2.2.3 目标函数定义

至于采购成本,不言而喻,肯定和纸箱用纸的情况有关。纸箱用纸越小(纸箱展开面积越小),成本越低。

就运输成本而言,基本上3pl是用MAX(抛重,实际重量)法计算的,所以这和纸箱发展区域的优化方向也是正的;

如果将每个3pl运费模板都加入建模,同时需要考虑承运人分配的算法设计,问题会过于复杂,计算量会非常大。现在,很明显,我们只需要优化每张纸的纸张面积。如果一张纸的优化纸箱包装不触及运费模板的范围,运费不变,如果触及,运费成本必然降低。

综上所述,最终考虑的是以装箱率这个间接指标作为目标。装箱率指的是测试(数据集sku总体积/数据集装运箱总体积),这也是产品和业务方熟悉并一直关注的指标。

2.2.4 问题建模

经过上述简化,将目标函数定义为装箱率,将配送订单覆盖率和箱数的约束值放在建模问题之外。

纸箱尺寸(纸盒包装尺寸图)插图

其中S_i代表Sku_i的销售量,R_i代表SKU _ I的推荐包装率

推荐的箱型应满足内部间隙大于最小值的要求,最小的箱型从箱型组中选取,即

箱子的大小要满足至少能附上运单的要求,不能太影响仓库人员的装箱效率。

同时,我们使sku长>:宽>:同时,定义纸箱长>:宽>:高

最后,我们要求盒子的长度、宽度和高度数据为整数,即

三、优化算法3.1 一般求解方法概述

对于这种优化问题,通常主要包括精确解算法和启发式算法:

精度的方法主要是用单纯形法(线性规划)或者一些迭代法(非线性规划)结合分支定界法来寻找我们想要的整数解。方法如果精确问题是线性规划问题,可用单纯形法在可行域的顶点找到全局最优解,用微分法或有限次迭代找到接近最优解的非线性规划。由于不是多项式时间求解方法,在大规模例子中往往不可行。

启发式算法,如遗传算法、蚁群算法、进化算法和智能算法,是针对常见问题的。它可以作为几乎任何问题的黑匣子。启发式算法,说白了就是一种定向穷举的方法。在计算资源有限的情况下,需要根据问题场景和模型的特点选择合理的邻域结构或运行机制,在全局搜索能力和局部搜索能力之间进行权衡。启发式算法通常需要给定的初始解;另外,算法不能保证在多项式时间内收敛,但往往可以控制迭代次数。

3.2 精确解求法线性规划

对于线性规划问题,其可行解的集合是凸集或无界域,基本可行解对应于凸集的顶点。通过凸集的性质得出最优解会在凸集的顶点上,然后通过遍历和重新排序得到最优解。但当顶点过多时,就需要用单纯形法求线性规划的最优解。

非线性规划

如果目标函数或约束条件中含有非线性函数,例如当前问题中目标函数的装箱率有非线性因素,这类规划问题就是非线性规划问题。一般来说,求解非线性规划问题比求解规划问题要困难得多。与单纯形法这种求解线性规划的通用方法不同,非线性规划没有通用算法,每种方法都有自己特定的适用范围。

整数规划

因为要求输出结果是整数,所以需要用分支定界法求解。

分支定界法的核心思想是分支和剪枝。当不考虑解必须是整数的条件时,用单纯形法可以得到最优解,但这个解往往不全是整数,所以用剪枝的方法一点一点缩小范围,直到解是整数解。

从图中可以看出,在初始化阶段,需要给出输出的全局上界和下界。如果能采用一些启发式的方法,获得一个稍微好一点的上界和下界,作为导入的初始解,那就最好了。如果没有,可以先设置为正负无穷大。

然后进入主循环,通过求解整数规划(线性规划)的连续松弛问题得到子问题的上界;问题分解可以帮助拆分整数规划问题,也可以帮助我们得到下界。

3.3 元启发式方法

这种算法以遗传算法为代表,适用于以下场景:

神经网络超参数优化一部分结构和特性固定的组合优化问题一部分机理模型难以建立的黑箱优化问题多目标优化问题3.3.1 遗传算法基本概念

基因:可行解的元素

染色体:染色体是一个可行的解决方案。

交叉:多个染色体被切断,拼接成新的染色体。

突变:修改染色体的某些基因。

副本:最后一条染色体的完整遗传副本。

执行流程

在算法初始阶段,它会随机生成一组可行解,也就是第一代染色体。然后采用适应度函数分别计算每一条染色体的适应程度,并根据适应程度计算每一条染色体在下一次进化中被选中的概率。通过“交叉”,生成N-M条染色体。再对交叉后生成的N-M条染色体进行“变异”操作。然后使用“复制”的方式生成M条染色体;重复2~5。四、具体建模4.1 数据分析

首先粗略看一下过去一年发货的SKU的长宽高主数据及其销售分布。这是我们盒子设计的基础数据。同时,考虑到仓库实际操作的效率和采购的成本,箱子的种类和数量不能太大,否则会增加仓库包装工取箱的难度,采购成本也会相应增加。

在这一步中,考虑到当前盒型的A/B首先要准确,同时建模参数增加8~15个类型也增加了计算复杂度,所以决定固定这个盒型的值。首先假设N种类型的盒子是固定的,每种盒子类型有长、宽、高三个数,即输出3 * N个参数。

接下来我们来定义sku的长度和box >: Width >: High,首先把最近一年的数据按长宽高排序,把离群值清洗掉。例如,当12个盒子类型固定时,我们通过k-means将sku和盒子类型在长度、宽度和高维度上聚类成12个组。

做这种聚类分析,一方面根据实际情况,比如通过结合结合面的单个大小来定义盒子大小的下限,再通过结合盒子覆盖的下限来定义盒子大小的上限;

另一方面,每个簇的最大值可以作为盒型的初始化值(实际需要是加5mm作为间隙)。

4.2 约束和目标

就业务约束而言,只需要将货物装箱,留有空隙,而且既然确定了箱子的种类和数量,那么就需要在这里确定每组箱子的长度>:宽度>:高,即

Constraint_ueq = (#单框长度>:宽度>:高λx:x[1]-x[0],λx:x[2]-x[1],λx:x[4]-x[3],λx:x[5]-x[4],...)目标是最大包装率,即

def cal _ avg _ r _ cached(p):& # 39;''目标函数。输入程序,返回总距离。cal _ total _ distance(NP . arange(num _ points))& # 39;''对于npd中的行,total _ r = 0:r =[-1]*对于范围中的I,box _ num(box _ num):if(row[0]& lt;= p[3 * i])和(row[1]& lt;= p[3 * i + 1])和(row[2]& lt;= p[3 * I+2]):r[I]= row[4]/(p[3 * I]* p[3 * I+1]* p[3 * I+2])total _ r+= max(r)* row[3]print(total _ r)return-total _ r/sum _ CNT

4.3结论

最后几个版本并行运行,打包率以不同的方式增加,平均纸张面积明显下降。

最终1203方案被选为工程方的输出,装箱率提高了5.49%,平均单位纸张面积节省了7.6%,平均单位运费减少了0.06元。

五、彩蛋 -- 使用遗传算法绘制NONO

在这篇文章中,我在相关资料中发现了一些脑洞,将几个彩色的三角形组装成图像。

在这里,我试图用60个三角形来画诺诺。

效果大致如下:

优化算法中介绍了遗传算法的一般流程,那么画这个NONO和盒子设计有什么区别呢?

在箱体设计中,需要根据装箱率指标计算箱体尺寸。因此,在定义适应度函数时,我们只需要取最大化装箱率这个指标。所以这里我们只需要将目标函数定义为不同颜色和大小的透明三角形的组装结果与目标图片的相似度。

5.1 适应度函数

首先,我们需要找到一种方法来量化透明三角形组成的图与目标NONO图之间的差异或相似性。那么我们如何定义相似性呢?图像相似度是某一颜色空(如RGB,HSV)中值向量的相似度。每个点的差值的最小和更接近期望的目标图案。常用的评价函数有MSE、RMSE、PSNR、ERGAS、SAM等。

下图显示了一些图像噪声方法的各种相似性评价方法的相似性结果。“原始”栏显示原始图像与其自身相比的得分。

这里选择ERGAS作为我们适应度函数的基础。

5.2 选择

在这里,轮盘赌方法不一定用于做出选择。具有最高适应度函数的解以95%的概率被选择,其他解以5%的概率被随机选择。

if random . random()& lt;0.95: '''选择基因的来源亲本,95%的几率随机来自最优秀的祖先& # 39;''poly _ a = random . choice(polygons[:1])poly _ b = random . choice(polygons[1:5])else:& # 39;''所选基因的来源亲本,5%是从所有祖先中随机选取的& # 39;''Poly _ a =随机。选择(多边形)poly _ b =随机。选择(多边形5.3交叉和变异)这里也使用了随机数。分配的基因大概率随机继承父类,小概率修改基因值。坐标交叉变化大致如下,颜色交叉变化也一样。

temp = random.random() if temp < 1 / polygon_num: '''设定一定几率坐标变异''' rnd_temp_coord = poly_a.coord_list[i][:] rnd_temp_coord[random.randint(0, vertices - 1)] = random.randint(0, img_width), random.randint(0, img_height) temp_coords.append(rnd_temp_coord) elif temp < 0.5: '''随机继承父母中的一个基因''' temp_coords.append(poly_b.coord_list[i]) else: temp_coords.append(poly_a.coord_list[i]) temp = random.random()

temp = random . random()if temp & lt;1/polygon _ num:& # 39;''设定一定的坐标变化概率& # 39;''rnd _ temp _ coord = poly _ a . coord _ list[I][:]rnd _ temp _ coord[random.randint(0,vertices - 1)] = random.randint(0,img_width),random . randint(0,img _ height)temp _ coords . append(rnd _ temp _ coord)elif temp & lt;0.5: '''从随机的父母那里继承一个基因& # 39;''temp _ coords . append(poly _ b . coord _ list[I])else:temp _ coords . append(poly _ a . coord _ list[I])temp = random . random()

*文/酱油

关注采集技术,每周一、五、五晚18:30更新技术干货。

如果你觉得文章对你有帮助,请评论转发~

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/240957.html

发表回复

登录后才能评论