Heute werde ich eine technische Frage zur Prioritätslagerauswahl von Produkten, Lieferadressen und Versandlagern stellen.
Wie im Titel:
Der Benutzer hat drei Produkte gekauft: A, B und C (es kann davon ausgegangen werden, dass der Benutzer n SKU-Produkte gekauft hat und jede SKU eine entsprechende Menge hat. Wir verwenden Großbuchstaben für die Produkt-SKU: A, B, C;
Die Lieferadresse ist X ;
Jedes Produkt verfügt über mehrere Lager, und die aktuellste und optimale Lagerlieferung wird ausgewählt (die Priorität wird entsprechend der Lieferadresse konfiguriert). Die Lager sind beispielsweise: a, b, c, d (Lager werden durch Kleinbuchstaben dargestellt). Buchstaben) usw.;
Prioritätslogik:
Die vom Benutzer gekauften Waren können aus dem Lager versendet werden. Je kleiner die Anzahl der Pakete, desto besser (primär) und je näher das Paket ist, desto besser (sekundär);
Die Lieferadresse ist X, die Prioritätsliste der Lager, die der X-Adresse entsprechen:
X => a,b,c,d
Beispiel:
Beispiel 1. Der Benutzer hat 1 SKU gekauft (die Menge beträgt 3) und sie an die entsprechende Adresse X:
gesendetA: 3
A Der diesem Produkt entsprechende Bestand und die Menge: Die der X-Adresse entsprechende Bestellung lautet: a, b, c, d
Eine entsprechende Lager- und Inventarliste:
a: 1
b: 3
c: 4
d: 5
Gemäß dem Prinzip der Mindestverpackung zum nächstgelegenen Lager wird das Ergebnis vom Bestand des Lagers B (3 Artikel eines Produkts A) abgezogen, um 1 Paket zu versenden.
Beispiel 2. Der Benutzer hat 2 SKUs gekauft und an die entsprechende Adresse X:
gesendetA: 3
B: 2
Der Bestand und die Menge, die diesen Produkten A und B entsprechen: (Die Reihenfolge, die der X-Adresse entspricht, lautet: a, b, c, d)
Eine entsprechende Lager- und Inventarliste:
a: 1
b: 3
c: 4
d: 5
B entsprechende Lager- und Inventarliste:
a: 1
b: 2
c: 1
d: 5
Gemäß dem Prinzip der Mindestverpackung für das nächstgelegene Lager sollte das Ergebnis auch von Lager B (3 Produkte A, 2 Produkte B) abgezogen werden, in dem 1 Paket gelagert und versendet wird.
Beispiel 3. Der Benutzer hat 2 SKUs gekauft und an die entsprechende Adresse X:
gesendetA: 3
B: 2
Der Bestand und die Menge, die diesen Produkten A und B entsprechen: (Die Reihenfolge, die der X-Adresse entspricht, lautet: a, b, c, d)
Eine entsprechende Lager- und Inventarliste:
a: 3
b: 3
c: 1
d: 5
B entsprechende Lager- und Inventarliste:
a: 1
b: 1
c: 2
d: 1
Gemäß dem Prinzip des nächstgelegenen Lagers für Mindestpakete sollte das Ergebnis auch Lager a (3 Artikel von Produkt A, 1 Artikel von Produkt B) abziehen, Lager b (1 Artikel von Produkt B) hinzufügen und insgesamt 2 Pakete versenden ( Lager a und Lager b) jeweils eins) (Auch hier halten wir uns an den Grundsatz, die besten paar Pakete und das nächstgelegene Lager zu haben).
Beispiel 4: Der Benutzer hat 2 SKUs gekauft und an die entsprechende Adresse X:
gesendetA: 3
B: 5
Der Bestand und die Menge, die diesen Produkten A und B entsprechen: (Die Reihenfolge, die der X-Adresse entspricht, lautet: a, b, c, d)
Eine entsprechende Lager- und Inventarliste:
a: 2
b: 3
c: 4
d: 5
B entsprechende Lager- und Inventarliste:
a: 1
b: 1
c: 2
d: 5
Gemäß dem Prinzip der Mindestverpackung am nächstgelegenen Lager sollte das Ergebnis auch von Lager d abgezogen werden (3 Artikel von Produkt A, 5 Artikel von Produkt B) und insgesamt 1 Paket (ein Paket in Lager d) versendet werden . Hier wird das Prinzip der Mindestanzahl an Paketen erreicht
Ich wage zu fragen, wie einige Experten diesen Algorithmus knacken können?
我是这么想的,先把sku,数组降序,比如,3件sku,array(8,4,1);
分别得出8件,4件,3件的最优包裹方案,
然后将这三个方案的仓库情况,合并去重,就可以得优的方案了。