Programming lesson
Optimierung mit Xpress: Einführung in die Modellierung und Lösung von Standort- und Produktionsproblemen
Lerne, wie man Optimierungsprobleme mit Xpress modelliert und löst. Von Standortplanung bis Produktionsplanung – dieser Leitfaden zeigt dir Schritt für Schritt, wie du lineare und quadratische Programme erstellst.
Einführung in die Optimierung mit Xpress
In diesem Tutorial lernst du, wie du mit der Modellierungssprache Xpress Optimierungsprobleme lösen kannst. Xpress ist ein leistungsstarkes Werkzeug, das in vielen Bereichen wie Logistik, Finanzen und Produktionsplanung eingesetzt wird. Wir werden uns auf zwei klassische Probleme konzentrieren: das Facility-Location-Problem und die Produktionsplanung bei einem Computerhersteller. Diese Beispiele sind nicht nur für deine Hausaufgaben relevant, sondern auch für reale Anwendungen, wie sie etwa in der Lieferkettenoptimierung oder bei der Standortwahl für neue Filialen vorkommen.
Grundlagen der Modellierung
Bevor wir in die Tiefe gehen, wiederholen wir die Grundlagen. Ein Optimierungsproblem besteht aus einer Zielfunktion, die es zu minimieren oder maximieren gilt, und Nebenbedingungen, die die Lösung einschränken. Variablen repräsentieren Entscheidungen, z.B. die Koordinaten eines neuen Standorts oder die Produktionsmenge eines Produkts. In Xpress werden Variablen mit mpvar deklariert. Standardmäßig sind sie nichtnegativ, was für viele praktische Probleme sinnvoll ist. Wenn du freie Variablen benötigst, musst du is free angeben.
Das Facility-Location-Problem
Stell dir vor, du möchtest zwei neue Einrichtungen A und B so platzieren, dass die Summe der Manhattan-Distanzen (L1-Distanzen) zwischen A und B, A und C, A und D, B und D sowie B und E minimiert wird. Die bestehenden Einrichtungen C, D und E haben feste Koordinaten. Zudem müssen A und B innerhalb eines Rechtecks liegen (x: 0-900, y: 0-1500). Dieses Problem ähnelt der Standortplanung von Lagern oder Verteilzentren, wie es aktuell bei der Expansion von Lieferdiensten wie Amazon oder Flink relevant ist.
Modell mit Absolutbeträgen
Die Zielfunktion lautet: min |x_A - x_B| + |y_A - y_B| + |x_A - 300| + |y_A - 1200| + |x_A - 0| + |y_A - 600| + |x_B - 0| + |y_B - 600| + |x_B - 600| + |y_B - 0|. Die Nebenbedingungen sind die Box-Constraints: 0 ≤ x_A, x_B ≤ 900 und 0 ≤ y_A, y_B ≤ 1500.
Lineare Reformulierung
Um die Absolutbeträge zu linearisieren, führen wir Hilfsvariablen ein. Für jeden Term |a - b| ersetzen wir ihn durch u + v mit den Nebenbedingungen u ≥ a - b und v ≥ b - a, wobei u, v ≥ 0. Dies ist eine Standardtechnik, die in vielen Optimierungssoftwares wie Xpress automatisch angewendet wird, aber das Verständnis hilft dir, komplexere Probleme zu modellieren.
Implementierung in Xpress
Der bereitgestellte Code hw1prob1Fac.mos zeigt die Umsetzung. Nach dem Ausführen erhältst du die optimalen Koordinaten. Überprüfe, ob die beiden neuen Einrichtungen überlappen. Bei der Variante mit Abstandsrestriktionen (A zu C ≤ 500, B zu E ≤ 700) modifizierst du die Nebenbedingungen entsprechend.
Quadratische Programme und stückweise lineare Approximation
Ein weiteres wichtiges Thema ist die Approximation nichtlinearer Funktionen. Betrachte das Problem: min f(x) = (x1 - 1.5)^2 + (x2 - 0.8)^2 unter der Nebenbedingung |x1| + |x2| ≤ 1 (L1-Einheitskugel). Dies ist ein quadratisches Programm mit linearen Nebenbedingungen. Da quadratische Programme manchmal schwer zu lösen sind, approximieren wir die quadratische Zielfunktion durch eine stückweise lineare Funktion, die von unten stützt. Dazu wählst du 10 zulässige Punkte, berechnest den Funktionswert und erstellst lineare Ungleichungen, die die quadratische Funktion von unten beschreiben. Der resultierende lineare Programmansatz liefert eine untere Schranke für das Optimum.
Implementierung der Approximation
Generiere 10 Punkte auf dem Rand der L1-Kugel, z.B. (0.2, 0.8), (0.5, 0.5) usw. Für jeden Punkt x^i definierst du eine lineare Funktion, die f(x^i) entspricht und f(x) für alle x unterschreitet. Die Hülle dieser Funktionen ist die stückweise lineare Approximation. In Xpress implementierst du dies als LP mit zusätzlichen Variablen und Nebenbedingungen. Vergleiche die Lösung mit der des ursprünglichen QP – die Differenz zeigt die Approximationsgüte.
Produktionsplanung bei DEC
Ein klassisches Beispiel aus der Industrie ist die Produktionsplanung von Digital Equipment Corporation (DEC) im Jahr 1988. DEC führte neue Computersysteme ein: GP-1, GP-2, GP-3, WS-1 und WS-2. Die Herausforderungen waren begrenzte CPU- und Speicherressourcen sowie Nachfragebeschränkungen. Ziel war die Maximierung des Umsatzes unter Berücksichtigung bereits erhaltener Aufträge.
Lineares Programm für die Produktionsplanung
Die Entscheidungsvariablen x1 bis x5 stehen für die Produktionsmengen (in Tausend) der fünf Systeme. Die Zielfunktion maximiert den Gesamterlös: max 60x1 + 40x2 + 30x3 + 30x4 + 15x5 (in Tausend Dollar). Die Nebenbedingungen umfassen die CPU-Verfügbarkeit (x1+x2+x3+x4+x5 ≤ 7), die Speicherverfügbarkeit (4x1+2x2+2x3+2x4+1x5 ≤ 8), sowie Nachfrageobergrenzen: x1 ≤ 1.8, x3 ≤ 0.3, x1+x2+x3 ≤ 3.8, x4+x5 ≤ 3.2. Zudem müssen Mindestmengen erfüllt werden: x2 ≥ 0.5, x4 ≥ 0.5, x5 ≥ 0.4.
Dieses Modell ist ein typisches Beispiel für ein lineares Programm, das in der Praxis zur Produktions- und Absatzplanung eingesetzt wird. Ähnliche Modelle finden sich heute in der Halbleiterindustrie oder bei der Planung von Elektrofahrzeugproduktionen.
Fazit und Ausblick
Mit Xpress kannst du eine Vielzahl von Optimierungsproblemen effizient lösen. Die vorgestellten Techniken – Linearisierung von Absolutbeträgen, stückweise lineare Approximation und Produktionsplanung – sind grundlegend für weiterführende Kurse wie ISYE 6669. Vertiefe dein Wissen, indem du die bereitgestellten Code-Vorlagen anpasst und eigene Erweiterungen testest. Optimierung ist ein Schlüsselwerkzeug in Data Science, maschinellem Lernen und Operations Research – und mit Xpress hast du ein mächtiges Werkzeug an der Hand.