So planen Sie Flüge in Python

Weisen Sie mit CVXPY genügend Flugzeuge zu und minimieren Sie gleichzeitig die Kosten

Motivation

Stellen Sie sich vor, Sie sind Eigentümer einer Fluggesellschaft. Ihre Fluggesellschaft muss ihre Flugzeuge mit Sitz in New York zuweisen, um alle anstehenden Linienflüge abzudecken.

Es gibt 10 Flüge und 8 Flugfolgen. Jede Flugsequenz besteht aus mehreren Flügen.

Eine Flugsequenz kann beispielsweise aus Flügen von New York nach Buffalo, von Buffalo nach Chicago und von Chicago nach New York bestehen.

Bild vom Autor

Jede Flugsequenz hat einen bestimmten Preis. Wir müssen eine Teilmenge von Flugsequenzen auswählen, damit es für jeden Flug mindestens ein Flugzeug gibt.

Es gibt viele Möglichkeiten, eine Kombination von Flugsequenzen auszuwählen, sodass für jeden Flug ein Flugzeug zur Verfügung steht. Eine mögliche Kombination sieht so aus:

Bild vom Autor

Eine andere mögliche Kombination sieht so aus:

Bild vom Autor

Und viele mehr.

Welche Kombination von Sequenzen sollte Ihre Fluggesellschaft wählen, damit die Einschränkung erfüllt und die Kosten minimiert werden?

Viele große Fluggesellschaften stehen vor diesem Problem. American Airlines schätzt, dass ihr auf mathematischer Programmierung basierendes System etwa 20 Millionen US-Dollar pro Jahr einspart.

In diesem Artikel erfahren Sie, wie Sie dieses Problem mithilfe von Integer-Programmierung und Python lösen.

Was ist Integer-Programmierung?

Integer-Programmierung bringt Probleme mit Zielen und Einschränkungen mit sich. Einige oder alle Variablen sind auf Ganzzahlen beschränkt.

CVXPY ist ein Python-Tool, das Schnittstellen zu vielen Lösern zur Integer-Programmierung bereitstellt. Geben Sie Folgendes ein, um CXVPY zu installieren:

pip install cvxpy

Daten bekommen

Beginnen Sie mit dem Herunterladen der Daten von Google Drive:

Rufen Sie den Zeitplan, die Kosten und die Stunden jeder Flugsequenz ab.

Verwandle alle positiven Zahlen in 1:

Eingabeparameter

Eingabeparameter definieren:

Bild vom Autor

Entscheidungsvariablen

Definieren Sie Entscheidungsvariablen mit cp.Variable:

Bild vom Autor

Zwang

Es muss mindestens ein Flugzeug pro Flug vorhanden sein. Um beispielsweise sicherzustellen, dass für den Flug New York → Buffalo mindestens ein Flugzeug vorhanden ist, muss die Flugsequenz 1, 4 oder 7 gewählt werden.

Um sicherzustellen, dass für den Flug New York → Cincinnati mindestens ein Flugzeug zur Verfügung steht, muss entweder die Flugsequenz 2 oder 5 gewählt werden.

Für den Flug von New York → Buffalo haben wir also die Einschränkung:

Bild vom Autor

Verallgemeinern Sie diese Einschränkung für alle 10 Flüge, wir haben:

Bild vom Autor

Zielsetzung

Wir wollen die Flugsequenzen wählen, die die Gesamtkosten minimieren.

Bild vom Autor

Das Problem lösen

Jetzt haben wir Einschränkungen und ein Ziel, lasst uns das Problem lösen!

13.0

[1. 1. 1. 0. 0. 0. 0. 0.]

Das bedeutet, dass das Flugzeug fliegen sollte:

  • aus New York → Buffalo → Chicago → New York
  • aus New York → Cincinnati → Pittsburgh → New York
  • aus New York → Chicago → Cincinnati → New York
  • Bild vom Autor

Lassen Sie uns diese Einschränkung zu unserem Problem hinzufügen und sehen, was passiert.

Einschränkung der Gesamtstundenzahl

Zuerst müssen wir das Array erhalten, das die Anzahl der Stunden für jede Flugsequenz darstellt:

Bild vom Autor

Kombinieren Sie die erste Einschränkung mit der neuen Einschränkung:

Bild vom Autor

Das Problem lösen:

20

Dies liegt daran, dass unterschiedliche Flugfolgen gewählt werden.

Bild vom Autor

Aber warum werden die zweite und dritte Flugsequenz nicht gewählt? Wenn wir uns das Array mit den Stunden genauer ansehen, können wir sehen, dass die Gesamtstunden der ersten 3 Flüge 1700 überschreiten.

Bild vom Autor
Bild vom Autor

Allerdings sind die Gesamtstunden der ersten, fünften und sechsten Flugsequenz kleiner als 1700, was die Einschränkung erfüllt.

Bild vom Autor

Und hier die visuelle Darstellung der neu gewählten Flugsequenzen.

Bild vom Autor

Fazit

Herzliche Glückwünsche! Sie haben gerade gelernt, wie Sie Flugsequenzen auswählen und gleichzeitig die Kosten minimieren. Ich hoffe, dieser Artikel wird Sie motivieren, ähnliche Probleme mit Integer-Programmierung und Python zu lösen.

Zögern Sie nicht, den Code für diesen Artikel in diesem Github-Repository zu forken und zu spielen:

Ich schreibe gerne über grundlegende Data-Science-Konzepte und spiele mit verschiedenen Algorithmen und Data-Science-Tools. Sie können sich mit mir auf LinkedIn und Twitter verbinden .

Star dieses Repo , wenn Sie die Codes für alle Artikel prüfen wollen , die ich geschrieben habe. Folgen Sie mir auf Medium, um mit meinen neuesten Data Science-Artikeln wie diesen auf dem Laufenden zu bleiben:

Referenz

Chen, D.-S., Batson, RG, & Dang, Y. (2010). Angewandte Integer-Programmierung: Modellierung und Lösung . J. Wiley & Söhne.

Suggested posts

So führen Sie ChatGPT-Plugins kostenlos mit Langchain aus

So führen Sie ChatGPT-Plugins kostenlos mit Langchain aus

Sie haben sicher schon von allen neuen leistungsstarken ChatGPT-Plugins wie Browser, Code Interpreter usw. gehört. Es gibt jedoch ein Problem: Der Zugriff auf Plugins ist auf eine Warteliste beschränkt und viele haben daher keinen Zugriff darauf.

Wie ich von Mathe zu CS wechselte

Wie ich von Mathe zu CS wechselte

Das Zulassungsverfahren für Herbst 2023 geht zu Ende und es kommt zu Verschiebungen/Ablehnungen. Herzlichen Glückwunsch, wenn Sie in Ihr Traumprogramm an der UW aufgenommen wurden.

Related posts

Die Cowboy-Lüge

Wie Megakonzerne den Amerikanern eine fette Lüge verkauften

Die Cowboy-Lüge

Es ist ein strahlend goldener Morgen in den sanften Hügeln des Westens, während die ersten Sonnenstrahlen das gefrorene Gras auf den Ebenen erhellen. Eine Herde friedlicher Angus-Rinder, pechschwarz und massig, zeichnet sich vor dem Sonnenaufgang ab, während sie einen ausgetretenen Pfad entlang zu einem Ort geht, den sie alle gut kennen; die Frühstücksbar.

Warum manche Freiberufler ihr Leben vortäuschen

Warum manche Freiberufler ihr Leben vortäuschen

Ich war kürzlich auf Linkedin, dem weltweit größten professionellen sozialen Netzwerk, und habe Beiträge von freiberuflichen Designern gefunden, denen ich folge und die meine Aufmerksamkeit erregt haben. Sie alle haben Fotos aus Flugzeugen, am Strand mit ihren Laptops, aus Schwimmbädern und Büros mit atemberaubender Aussicht gepostet.

Ist Kunst jemals unpolitisch?

Ist Kunst jemals unpolitisch?

Gestern haben wir die Tür zum diesjährigen Eurovision Song Contest mit einem glitzernden, chaotischen großen Finale geschlossen, bei dem die schwedische Sängerin Loreen die Trophäe mit nach Hause nahm. Sie war damit die erste Frau, die zweimal gewann, und holte die Krone 50 Jahre nach dem Gewinn des Wettbewerbs durch ABBA zurück nach Schweden mit „Waterloo“. Sie entwickelten sich zu einem der größten Acts im Kanon der Popmusik.

Die Workplace-Revolution: Top-Experten diskutieren über Hybrid- und Remote-Arbeit

Die Workplace-Revolution: Top-Experten diskutieren über Hybrid- und Remote-Arbeit

In der sich schnell entwickelnden Geschäftslandschaft von heute hat das Konzept der Hybrid- und Remote-Arbeit eine beispiellose Dynamik erlangt. Während sich Unternehmen weiterhin an die sich verändernden Bedürfnisse und Erwartungen ihrer Mitarbeiter anpassen, sind Experten aus verschiedenen Bereichen zusammengekommen, um die Vorteile, Herausforderungen und die Zukunft dieser transformativen Arbeitsweise zu diskutieren.