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