ruby – So implementieren Sie die Prioritätslagerauswahl der Empfangsadresse und des Versandlagers in PHP
怪我咯
怪我咯 2017-06-27 09:18:02
0
1
929

Heute werde ich eine technische Frage zur Prioritätslagerauswahl von Produkten, Lieferadressen und Versandlagern stellen.

Wie im Titel:

  1. 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;

  2. Die Lieferadresse ist X ;

  3. 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:

gesendet
A: 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:

gesendet
A: 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:

gesendet
A: 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:

gesendet
A: 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?

怪我咯
怪我咯

走同样的路,发现不同的人生

Antworte allen(1)
学习ing

我是这么想的,先把sku,数组降序,比如,3件sku,array(8,4,1);
分别得出8件,4件,3件的最优包裹方案,
然后将这三个方案的仓库情况,合并去重,就可以得优的方案了。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage