1 耗材推薦問題小結

2021-08-19 18:50:51 字數 2254 閱讀 4230

耗材推薦問題,旨在對待裝貨物推薦合適的包裝耗材,由於該問題屬於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個隨機測試用例)

速度比1

29.26

0.0446

656.0538

235.81

0.0653

548.392

337.81

0.1221

309.6642

458.34

0.108

540.1852

562.09

0.1185

523.9662

686.67

0.1197

724.0602

799.48

0.1651

602.5439

8117.46

0.1658

708.4439

9120.12

0.1507

797.0803

10151.99

0.1557

976.1721

11154.22

0.1677

919.6184

12148.61

0.1635

908.9297

13152.44

0.1403

1086.529

14156.28

0.1307

1195.715

15147.35

0.1577

934.3691

16171

0.1564

1093.35

17137.79

0.1578

873.1939

18155.67

0.1759

884.9915

19143.2

0.1698

843.3451

20131.59

0.1904

691.1239

該曲線為計算時間關於計算商品數的關聯曲線,舊演算法採用100個測試用例,新演算法由於速度較快,用了10000個測試用例,

從結果看,新演算法的速度大致比舊演算法快三個數量級

對兩個演算法採用相同的測試用例測試,結果如下:

舊演算法的平均使用體積為4.45,新演算法為1.43,提公升效率約為3倍

PCB問題小結(1)

今天碰到乙個詭異的問題,在給arm晶元tm4c129encpdt佈線時,相鄰管腳佈線可以出現短路現象,且與該晶元所連線的訊號線佈好後都不能編輯拖拽。開始以為是pcb佈線規則裡的shortcircuit選項勾上了,允許短路電流。後來發現不是這原因。因為其他器件佈線時不存在允許短路現象,且其他器件的訊號...

推薦系統實戰(1) EE問題

主要是以多臂 為例子,講述bandit演算法。下面兩篇文章結合起來看 1 2 import numpy as np import matplotlib.pyplot as plt import math 個數 number of bandits 10 的臂數 number of arms 10 嘗試...

常用的推薦演算法小結

使用者資料 性別,年齡,年級等 互動資料 對產品的評價打分 構建評價模型 如果主動推送給使用者,很有可能會引起使用者反感,雖然在一定程度上會提公升使用者活躍度。當然這個也可以通過演算法去控制要不要主動推送,對於活躍度一直很低的可以主動推薦,甚至是通過發簡訊來推送,其他使用者則可以轉為被動。不足 a ...