1、耗材推荐问题小结

耗材推荐问题,旨在对待装货物推荐合适的包装耗材,由于该问题属于NP问题,故多采用启发式思路为算法的过程加速。

普通的装箱问题一般针对的是多类货物单类箱型,故问题的重点在于装箱的过程;而耗材推荐中,需要对每一种可能的耗材集类型作判断,每一种耗材类型与待装货物就构成了一组装箱问题,故其难度比装箱高一层次,需在耗材的选取中也添加启发式的规则,达到平衡计算时间、计算资源消耗和计算精度的目的。

一期的箱装首先将所有可能的耗材集类型列举出来,然后选取m(20)个可能的耗材集进线程并行处理,在规定时间(200s)内若有返回值,则返回结果,否则认为超时

袋装由于袋子的柔性特质,将其看成多种箱子,导致袋子集本身的大小过大,无法使用列举的形式,故其选定了袋子的数量(6个),逐一尝试进行装载(一种不行,换掉部分继续尝试)

 

由算法的流程可以看到,箱装中实际尝试装载的耗材集过小,导致了很多可行集都没有办法尝试,袋装由于数量的庞大会更多,因此需要在其中添加一些启发式的规则。

 

2018.4.3:

耗材数频率
10.3593
20.345
30.1311
40.0684
50.0415
60.0198
70.007
80.0064
90.0018
100.012
110.0011
120.0012
130.0013

整理统计了10000个订单内的商品数如上图,可知订单数分布主要集中在5个及5个以下,故对此几种状况优先考虑,

对于商品货物为1个的情况下,对耗材按体积从小到大排序,依次试装,能装下则break,否则返回商品尺寸过大。

对于商品货物为2个的情况下,先将其拼成一个更大的矩体,再试装,若装不下则分两个包裹试装。

对于商品货物为3个及3个以上的情况下,先将商品按照最长边从大到小排列,以期尺寸大的货物先装载,利用启发式规则,先以高为约束,将货物都码成条状,再以宽为约束,将条码成层,

码成层之后,用每类耗材试装,看每类耗材需要几个才能全部装下,选取耗材需求量最小的耗材。

3个及3个以上的情况下,一般最后一个箱子填充率可能较低,在此将其中货物再次重装,选取最小的耗材装载。

至此,本次耗材推荐的算法过程叙述完成。

 

 

比较新算法与之前算法的速度如下:

计算平均时间   
商品数旧(100个随机测试用例)新(10000个随机测试用例)速度比
129.260.0446656.0538
235.810.0653548.392
337.810.1221309.6642
458.340.108540.1852
562.090.1185523.9662
686.670.1197724.0602
799.480.1651602.5439
8117.460.1658708.4439
9120.120.1507797.0803
10151.990.1557976.1721
11154.220.1677919.6184
12148.610.1635908.9297
13152.440.14031086.529
14156.280.13071195.715
15147.350.1577934.3691
161710.15641093.35
17137.790.1578873.1939
18155.670.1759884.9915
19143.20.1698843.3451
20131.590.1904691.1239

 

 

 

该曲线为计算时间关于计算商品数的关联曲线,旧算法采用100个测试用例,新算法由于速度较快,用了10000个测试用例,

从结果看,新算法的速度大致比旧算法快三个数量级

 

 

对两个算法采用相同的测试用例测试,结果如下:

旧算法的平均使用体积为4.45,新算法为1.43,提升效率约为3倍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值