今天我來問個技術性的問題, 關於商品,收貨地址以及發貨倉庫的優先倉庫選擇問題.
如題:
用戶購買了商品A, B, C 三個商品(可以認為用戶買了n個SKU商品, 每個sku有對應的數量), 商品SKU我們用大寫: A, B, C;
收貨地址為 X ;
每個商品都對於多個倉庫, 倉庫發貨選擇最近最優(優先順序根據收貨地址配置), 如倉庫有: a, b, c, d(倉庫我們用小寫字母表示)等等;
優先邏輯:
用戶購買的商品, 選擇倉庫出貨, 包裹數越少越優(主), 包裹越近越優(次);
收貨地址為 X, X 位址對應的倉庫優先順序清單:
X => a,b,c,d
範例:
範例1. 用戶購買了1個sku(數量是3個)發送到對應的位址X:
A: 3
A這個商品對應的庫存以及數量: X位址對應的順序是: a,b,c,d
A 對應的倉庫以及庫存清單:
a: 1
b: 3
c: 4
d: 5
依照最少包裹最近倉庫原則, 結果會扣除 b倉庫存(A商品3個)發貨1個包裹.
例2. 用戶購買了2個sku發送到對應的位址X:
A: 3
B: 2
A,B這些商品對應的庫存以及數量: (X位址對應的順序是: a,b,c,d)
A 對應的倉庫以及庫存清單:
a: 1
b: 3
c: 4
d: 5
B 對應的倉庫以及庫存清單:
a: 1
b: 2
c: 1
d: 5
依照最少包裹最近倉庫原則, 結果同樣應該扣除 b 倉庫(A商品3個, B商品2個)存發貨1個包裹.
例3. 用戶購買了2個sku發送到對應的位址X:
A: 3
B: 2
A,B這些商品對應的庫存以及數量: (X位址對應的順序是: a,b,c,d)
A 對應的倉庫以及庫存清單:
a: 3
b: 3
c: 1
d: 5
B 對應的倉庫以及庫存清單:
a: 1
b: 1
c: 2
d: 1
依照最少包裹最近倉庫原則, 結果同樣應該扣除a 倉庫(A商品3個, B商品1個), 加上b 倉庫存(B商品1個), 發貨共2個包裹(a 倉和b 倉各一個)(這裡同樣做到了最好少包裹最近倉原則).
例4, 用戶購買了2個sku發送到對應的位址X:
A: 3
B: 5
A,B這些商品對應的庫存以及數量: (X位址對應的順序是: a,b,c,d)
A 對應的倉庫以及庫存清單:
a: 2
b: 3
c: 4
d: 5
B 對應的倉庫以及庫存清單:
a: 1
b: 1
c: 2
d: 5
依照最少包裹最近倉庫原則, 結果同樣應該扣除d 倉庫(A商品3個, B商品5個), 發貨共1個包裹(d倉一個), 這裡就做到了最少包裹數原則.
敢問, 大牛些這個演算法如何破?
我是這麼想的,先把sku,數組降序,比如,3件sku,array(8,4,1);
分別得出8件,4件,3件的最優包裹方案,
然後將這三個方案的倉庫狀況,合併去重,就可以得優的方案了。