耗材推薦問題,旨在對待裝貨物推薦合適的包裝耗材,由於該問題屬於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 ...