Die Aufgabe der Lieferung von Waren

Bild

In diesem Beitrag werden wir sehen, wie Flexport mithilfe von Mathematik und Datenwissenschaft Lieferprobleme löst und Waren pĂŒnktlich zu möglichst geringen Kosten liefert.

Stellen Sie sich ein spekulatives Szenario vor: Der Spediteur hat zehn AbflĂŒge und einen Zielflug fĂŒr jede Sendung. Die einzige Entscheidung, die getroffen werden muss, ist, ob jede Sendung diesem einzelnen Flug zugeordnet werden soll. Wenn wir dem Flug keine bestimmte Last zuweisen, nehmen wir an, dass es möglich ist, ihn auf andere Weise zu bewegen.

Jede Sendung hat Volumen und Kosten, und das Flugvolumen ist begrenzt. Sie können sich das als vereinfachtes Rucksackproblem vorstellen. Es gibt also 1024-1 = 1023 mögliche Lösungen (wir wĂŒrden das Flugzeug nicht vollstĂ€ndig leer senden).

Wir könnten eine Tabelle erstellen, um die gesamte Lösung aufzulisten und die rentabelste auszuwĂ€hlen. Aber was ist, wenn Sie die gleichen zehn AbflĂŒge haben, aber zwei FlĂŒge? Dies sind 59.049 Lösungen in nur 10 Sendungen.

Ein großer Spediteur hat mehr als zehn AbflĂŒge und natĂŒrlich mehr als zwei FlĂŒge zur Auswahl, was zu Billionen bis Billionen möglicher Lösungen fĂŒhrt. Unter diesen sind nur Millionen machbar, was bedeutet, dass die traditionelle Tabellenkalkulationsmethode mindestens eine praktikable Lösung finden kann. Wir brauchen aber nicht nur machbare Lösungen. Wir brauchen die besten und optimalen Lösungen. Wie findet man sie unter unzĂ€hligen Möglichkeiten? Eine Antwort ist die Verwendung der Ganzzahlprogrammierung.

Die ganzzahlige Programmierung ist ein Unterabschnitt der diskreten Optimierung, ein Bereich der Untersuchung von Operationen im Zusammenhang mit der Minimierung einiger objektiver Funktionen, die EinschrĂ€nkungen unterliegen. Wir wollen die Gesamtkosten minimieren, vorausgesetzt, die Waren werden pĂŒnktlich an die richtigen Orte geliefert, gestapelt in ULD (Unit Load Device - ein Mittel zum Verpacken von Waren). Wir streben nach einer optimalen Lösung, aber in der Praxis können wir sie manchmal nicht erreichen. In diesem Fall sind wir mit einer guten oder engen Lösung zufrieden. Hier beschrĂ€nken wir uns auf ein einfaches Modell, in dem die optimale Lösung erreichbar ist.

Der erste Schritt zur Lösung dieses Problems besteht darin, sich der Literatur zuzuwenden. Die wissenschaftliche Gemeinschaft befasst sich seit vielen Jahren mit der Spedition. Wir haben mehrere Werke gefunden, die sehr an unser Problem erinnern. Wir haben viele der folgenden Konzepte und Notationen aus diesen Werken ĂŒbernommen und danken den Autoren fĂŒr ihren Beitrag zu diesem Bereich.

Wir beginnen mit der Definition der Zielfunktion. Um die Kosten zu minimieren, mĂŒssen wir das Konzept des Standardgewichts verstehen. Kurz gesagt, das Standardgewicht ist das Mindestgewicht, mit dem der Spediteur arbeiten möchte, unabhĂ€ngig davon, welches Gewicht tatsĂ€chlich angeboten wird. Wir haben Gesamtgewicht, Standardgewicht und Chancen fĂŒr Überlastungen und umgekehrt Untergewicht. Das Standardgewicht mal das Untergewicht ist eine UnterschĂ€tzung, daher können wir das Untergewicht ignorieren und uns auf den Überlastungsfaktor multipliziert mit der Überlast selbst konzentrieren.

Die Zielfunktion besteht darin, die Gesamtkosten zu minimieren, definiert als das Gesamtgewicht aller von ULD zugewiesenen Waren, multipliziert mit dem Auslastungsfaktor. Wenn ULD1 beispielsweise 100 kg Überlastung aufweist und die Überlastungsrate fĂŒr ULD1 4 USD pro Kilogramm betrĂ€gt, betragen die Gesamtkosten fĂŒr ULD 1 400 USD. Wir brauchen also eine Notation, um ĂŒbergewichtig zu sein und um ihren Wert zu ermitteln.

LassenyjE  - Gewicht ULD j ĂŒber Standard und cjE - Kostenfaktor fĂŒr dieselbe ULD. Wir mĂŒssen rechnenyjEcjE fĂŒr alle j. Wennj∈1,2,3dann wird die Zielfunktion sein y1Ec1E+y2Ec2E+y3Ec3E. Es bricht zusammen∑yjEcjE. Wir wollen den Wert minimieren, also unser Endziel:

min∑jyjEcjE


Wert fĂŒr cjEkein berechneter Wert. Dieser Parameter wird aus einer Tabelle oder Datenbank abgerufen. AberyjE Wir haben das GesamtĂŒberlastgewicht fĂŒr ULD definiert j, die wir als Gesamtgewicht aller von ULD zugewiesenen Lieferungen berechnen können (bezeichnen Sie es yj) abzĂŒglich des Standardgewichts dieser ULD. Das Standardgewicht ist spezifisch fĂŒr den ULD-Typ und auch ein Parameter. LassenUjP  ist das Standardgewicht fĂŒr ULD jin Kilogramm. Dann die Menge an zusĂ€tzlichem Gewicht fĂŒr ULDj definiert als yjE=yj−UjP.
Das Gesamtgewicht der ULD hĂ€ngt natĂŒrlich davon ab, welche Gewichte der ULD zugewiesen sind und wie schwer sie sind. Daher benötigen wir einen Ausdruck, um ihn zu berechnen, einschließlich der oben genannten Details.

Dies ist einfach die Summe der von ULD zugewiesenen Gewichte. Wie kann angegeben werden, dass eine Warencharge einer bestimmten ULD zugeordnet wurde? Dazu benötigen wir keinen Parameter, sondern eine Lösungsvariable. Eine Entscheidungsvariable kann der Löser steuern und gleichzeitig die Zielfunktion minimieren.

Lassen Sie den Parametergi reprÀsentiert das Bruttogewicht iin Kilogramm.
Zum Beispiel,g4=500bedeutet, dass eine Ladung von 4 500 Kilogramm wiegt.

Lassenxi,j  - eine Entscheidungsvariable mit dem Wert 1 beim Versand ivon ULD zugewiesen j, und 0sonst. Wenn wir also alle von ULD 3 zugewiesenen Sendungen zĂ€hlen möchten, können wir alle Variablen durchlaufenxi,jwo j=3. Wenn wir 4 Sendungen hĂ€tten und die Sendungsnummern 1 und 3 ULD 3 zugewiesen wĂŒrden, wĂŒrde dies folgendermaßen aussehen:

x1,3+x2,3+x3,3+x4,3=1+0+1+0=2

Aber wir brauchen das Gesamtgewicht, nicht die Menge. Um es zu erhalten, können Sie einfach jede Lösungsvariable mit einem Gewichtungsparameter multiplizieren. Da die Entscheidungsvariable den Wert 0 annimmt, wird dieses Gewicht zurĂŒckgesetzt und nicht in die Summe einbezogen, wenn ihr kein Gewicht zugewiesen ist. Angenommen, die Gewichte fĂŒr die Ladungen eins bis vier betragen 10, 50, 25 und 5. Dann betrĂ€gt das Gesamtgewicht in ULD 3:

g1x1,3+g2x2,3+g3x3,3+g4x4,3=(10)(1)+(50)(0)+(25)(1)+(5)(0)=10+25=35


Schreiben wir diese Berechnung des Gesamtgewichts im Allgemeinen. Bestimmen Sie das Gesamtgewicht der ULDj wie yj. Danny1=g1x1,1+g2x2,1+
+gixi,1, und y2=g1x1,2+g2x2,2+
+gixi,2. Wir können dies mithilfe der Summationsnotation reduziereny1=∑gixi,1 und y2=∑gixi,2. Da wir wollen, dass dies fĂŒr alle möglichen giltjverwenden wir das Zeichen "fĂŒr alle": ∀. Dies gibt uns die endgĂŒltige Form unserer Gesamtgewichtsgrenze:

yj=∑i∈Igixi,j∀j∈J



Extra Gewicht


Nachdem wir das Gesamtgewicht haben, können wir unsere Formel fĂŒr die zusĂ€tzliche Last anwenden:

yjE=yj−UjP∀j∈J



Zum Beispiel wenn y1=1500und und U1P=1000dann zusĂ€tzliches Gewicht y1E=1500−1000=500Kilogramm. Multiplizieren Sie dies mit dem Kostenfaktor, um das Ergebnis in Dollar zu erhalten. Auf den ersten Blick mag dies ausreichend erscheinen, aber wie sieht es aus, wenn das Gesamtgewicht der gesamten Ladung fĂŒr ULD das Standardgewicht nicht ĂŒberschreitet? In diesem Fall wĂ€re das Überlastgewicht eine negative Zahl, wenn wir die Ist-Formel verwenden wĂŒrden. Wenn beispielsweise das Standardgewicht 1650 Kilogramm und das zugewiesene Gesamtgewicht 1000 Kilogramm betrĂ€gt, ist Überlast = 1000–1650 = -650. Die Zielfunktion multipliziert diese Zahl mit einem Faktor fĂŒr Überlastungen und wir erhalten eine negative Zahl. Als ob der Spediteur uns fĂŒr den Versand weniger als die Kosten eines Standardgewichts bezahlt hĂ€tte.

Folgendes wollen wir wirklich:max(yjE,0).
Dies entspricht dem Setzen von 0 fĂŒr eine Variable, was so einfach ist wie das Erstellen einer EinschrĂ€nkungyjE>=0.

yjE>=yj−UjP∀j∈J, yjE>=0∀j∈J

Also haben wir die Funktion max () in die mathematische Programmierung implementiert: a = max (b, c), dh a> = b && a> = c. Schauen wir uns unsere Definitionen an.
Zielfunktion:min∑jyjEcjE
cjE: ULD-ÜberlastungsverhĂ€ltnis j
yjE: ULD-Überlastung j;;

Source: https://habr.com/ru/post/undefined/


All Articles