Dynamische Optimierung Michaela Nettekoven Abteilung für Quantitative Betriebswirtschaftslehre und Operations Research Wirtschaftsuniversität Wien 21. Januar 2005 Unter dynamischer Optimierung versteht man eine generelle mathematische Methode zur Lösung mehrstuger Entscheidungsprozesse. Die Güte einer Entscheidung wird dabei nicht an ihrer momentanen Wirkung, sondern an ihrem Einuss auf den Prozess als Ganzes gesehen. So entscheidet beispielsweise ein Schachspieler dynamisch gut, wenn er bei einem Zug nicht nur direkte Vorteile, sondern auch Möglichkeiten in späteren Zügen berücksichtigt. Je nachdem, ob die Entscheidungen zu bestimmten (diskreten) Zeitpunkten oder kontinuierlich getroen werden, spricht man von diskreten oder stetigen dynamischen Programmen. Diskrete dynamische Programme sind typischerweise mit Dienzengleichungen verknüpft, stetige dynamische Programme mit Dierentialgleichungen. Die dynamische Programmierung wurde in den 50er Jahren von Richard Bellman begründet (Bellman'sches Optimalitätsprinzip, Bellman'sche Rekursionsgleichungen). Anwendungsgebiete der dynamischen Optimierung nden sich z.b. in Produktionsplanung, Lagerhaltung, Wachstumstheorie, usw. Von der Problemstellung her ergeben sich Beziehungen zur Kontrolltheorie, zur Variationsrechnung und zu dynamischen Spielen. In der dynamischen Programmierung werden Optimierungsprobleme rekursiv gelöst. Obwohl die Grundidee einfach ist, ist die Formulierung der Rekursionsgleichungen oft schwierig, da es anders als in der linearen Optimierung keine Standardform gibt, sondern die Gleichungen an das spezielle Problem angepasst werden müssen. Daher werden im Folgenden verschiedene Modellbeispiele vorgestellt, anhand derer die Methoden der dynamischen Programmierung gezeigt werden. 1 Einführungsbeispiel: Das Postkutschenproblem Ein Goldsucher möchte zur Zeit des amerikanischen Goldrauschs (Mitte des 19. Jahrhunderts) mit der Postkutsche von Missouri nach Kalifornien reisen. Dem Goldsucher stehen verschiedene Routen zur Auswahl, insgesamt erfordert die Reise drei Zwischenstopps (vgl. Abbildung 1). Die Kosten der einzelnen Etappen sind ebenfalls in Abbildung 1 gegeben. Der Goldsucher möchte nun die billigste Reiseroute von Missouri (A) nach Kalifornien (J) nden. Im allgemeinen ist es nicht optimal, jeweils die billigste Teilstrecke zu wählen! 1
7 B E 1 4 6 2 H 3 4 3 6 4 2 A C F J 4 3 3 I 4 4 3 1 D G 5 3 Abbildung 1: Reiserouten und Kosten beim Postkutschenproblem Eine Möglichkeit zur Problemlösung besteht darin, alle möglichen Routen zu bestimmen und die entsprechenden Kosten zu berechnen. Mit Hilfe der dynamischen Programmierung kann die optimale Lösung aber mit wesentlich weniger Rechenaufwand ermittelt werden. Dabei wird das groÿe Gesamtproblem in kleine Teilprobleme zerlegt. Der Graph, der das Postkutschenproblem beschreibt, besteht aus 5 Schichten, diese bezeichnet man auch als Stufen n des Problems: n = 1, 2,..., 5. Die verschiedenen Orte, die durch die Buchstaben A bis J gekennzeichnet sind, bezeichnet man als Zustände. In Stufe 1 gibt es also nur einen Zustand, nämlich A, in Stufe 2 sind die Zustände B, C und D, usw. bis zur Stufe 5 mit dem Zustand J. Die Zustände in den einzelnen Stufen n bezeichnet man auch als x n. In jeder der Stufen n = 1,..., 4 ist die Entscheidung darüber zu treen, welche weitere Route gewählt wird, d.h. welcher Zustand x n+1 in der nächsten Stufe eintreten wird (z.b. ob vom Zustand x 2 =D der Zustand x 3 =E, F oder G erreicht wird). Bezeichne f n (x n, x n+1 ) die Gesamtkosten der besten Strategie für die verbleibenden Stufen, wenn der Goldsucher sich derzeit in Zustand x n bendet und als Folgezustand x n+1 wählt. Sei x n+1 derjenige Folgezustand x n+1, der f n (x n, x n+1 ) minimiert, und sei f n(x n ) der entsprechende Funktionswert: f n(x n ) = min x n+1 f n (x n, x n+1 ) = f n (x n, x n+1) wobei f n (x n, x n+1 ) = unmittelbare Kosten beim Übergang von x n nach x n+1 + + minimale zukünftige Kosten von x n+1 bis zum Endzustand = c xn,x n+1 + f n+1(x n+1 ) Das Ziel ist es, die minimalen Gesamtkosten f 1 (x 1 ) = f 1 (A) und die entsprechende Reiseroute zu nden. Die dynamische Optimierung ermittelt dabei nacheinander f 4 (x 4 ), f 3 (x 3 ), f 2 (x 2 ) und schlieÿlich f 1 (x 1 ) (Rückwärtsinduktion). Danach wird, beginnend beim Ausgangspunkt, die optimale Route zusammengesetzt (Vorwärtsrechnung). 2
Die Lösung des Problems beginnt beim letzten Teilproblem: Angenommen, der Goldsucher ist in Stufe 4 (Zustand H oder I), wie hoch sind die Kosten für die verbleibende Wegstrecke? Da man sich in der vorletzten Stufe bendet, ergibt sich sofort die Lösung: Für n = 4 gilt: aktueller minimale optimaler Zustand Folgekosten Folgezustand x 4 f4 (x 4 ) x 5 H 3 J I 4 J Für n = 3 sind ein paar Berechnungen erforderlich: aktueller Kosten bei Weg nach J über minimale optimaler Zustand f 3 (x 3, x 4 ) = c x3,x 4 + f4 (x 4 ) Folgekosten Folgezustand x 3 H I f3 (x 3 ) x 4 E 1+3=4 4+4=8 4 H F 6+3=9 3+4=7 7 I G 3+3=6 3+4=7 6 H Angenommen, der Goldsucher bendet sich auf Stufe 2 im Zustand B. Die nächsten möglichen Zustände sind E, F oder G. Wählt er E als Folgezustand und danach die kostenminimale Route (d.h. von E weiter nach H und J), so kommen zu den unmittelbaren Kosten von c B,E =7 die minimalen Folgekosten, ausgehend vom Zustand E, hinzu, die in der obigen Tabelle berechnet wurden: f 3 (E) = 4. Damit ergibt sich Tabelle für n = 2: Zuletzt für n = 1: aktueller Kosten bei Weg nach J über minimale optimaler Zustand f 2 (x 2, x 3 ) = c x2,x 3 + f3 (x 3 ) Folgekosten Folgezustand x 2 E F G f2 (x 2 ) x 3 B 7+4=11 4+7=11 6+6=12 11 E,F C 3+4=7 2+7=9 4+6=10 7 E D 4+4=8 1+7=8 5+6=11 8 E,F aktueller Kosten bei Weg nach J über minimale optimaler Zustand f 1 (x 1, x 2 ) = c x1,x 2 + f2 (x 2 ) Folgekosten Folgezustand x 1 B C D f1 (x 1 ) x 2 A 2+11=13 4+7=11 3+8=11 11 C,D Die drei optimalen Reiserouten verursachen demnach Gesamtkosten in Höhe von jeweils 11 und lauten A C E H J D E H J F I J 3
2 Charakteristika dynamischer Optimierungsprobleme Dynamische Programme weisen typischerweise folgende Merkmale auf: ˆ Das Problem kann in einzelne Stufen n, n = 1,..., N, zerlegt werden. Auch unendlich viele Stufen sind möglich. ˆ In jeder Stufe n = 1,..., N 1 ist eine Entscheidung u n, u n Ω n, zu treen. ˆ Jeder Stufe n sind bestimmte Zustände x n, x n X n, zugeordnet. Die Anzahl der Zustände kann je nach Problemstellung endlich oder unendlich sein. ˆ Jede auf der Stufe n getroene Entscheidung u n hat zwei Auswirkungen: Der direkte Eekt zeigt sich durch den unmittelbaren Beitrag zur Zielfunktion (z.b. die Reisekosten von B nach E im Postkutschenbeispiel), der indirekte Eekt manifestiert sich durch den durch diese Entscheidung erreichten Folgezustand auf Stufe n+1: x n+1 = h n (x n, u n ). Um langfristige Optimalität zu gewährleisten, müssen sowohl direkter als auch indirekter Effekt berücksichtigt werden. Im Postkutschenproblem bestand die Entscheidung u n in der Auswahl des nächsten Zustands x n+1. Hier wurden zur Vereinfachung u n mit x n+1 identiziert und in der Notation unterdrückt (reduzierte Modellformulierung). ˆ Die Lösungsmethode liefert eine optimale Entscheidungspolitik: Für jeden Zustand in jeder Stufe wird die jeweils optimale weitere Strategie ermittelt. Wenn es den Goldsucher im Postkutschenbeispiel durch bestimmte Umstände z.b. in den Ort G verschlägt (der nicht in der optimalen Reiseroute enthalten ist), kann er trotzdem sofort seine weitere optimale Route wählen: über H nach J. Diese zusätzliche Information ist v.a. für Sensitivitätsanalysen hilfreich. ˆ Bei gegebenem Zustand ist die optimale Entscheidungsfolge für den Rest des Problems unabhängig von den zuvor getroenen Entscheidungen, d.h. alle für ein Subproblem relevanten Informationen sind im aktuellen Zustand subsumiert (Optimalitätsprinzip der dynamischen Programmierung). Die Wegstrecke, die der Goldsucher wählen sollte, wenn er beispielsweise in Ort F ist, hängt nicht davon ab, wie er nach F gelangt ist. ˆ Der Algorithmus beginnt bei der letzten Stufe des Problems und sucht für dieses Teilproblem die optimale Lösung. ˆ Aus der optimalen Lösung für die Stufe n+1 wird mit Hilfe einer rekursiven Beziehung die optimale Lösung für die Stufe n ermittelt. Diese Rekursionsgleichung lautet im Postkutschenproblem (bei Gleichsetzung von u n und x n+1 ): f n(x n ) = min x n+1 { cxn,x n+1 + f n+1(x n+1 ) } Die konkrete Form der Rekursionsgleichung (Bellman'sche Rekursionsgleichung) hängt vom jeweiligen Problem ab. Allgemein lautet sie f n(x n ) = min u n { g(xn, u n ) + f n+1(x n+1 ) } 4
Stufe n x n u n Stufe n+1 x n+1 Abbildung 2: Deterministisches dynamisches Programm bzw. für Maximierungsprobleme f n(x n ) = max u n { g(xn, u n ) + f n+1(x n+1 ) }, wobei die Funktion g(, ) den unmittelbaren Beitrag von u n zur Zielfunktion beschreibt. ˆ Ist der Algorithmus auf Stufe 1 angelangt, ist das gesamte Problem gelöst. Bellman'sches Optimalitätsprinzip der dynamischen Programmierung: Die optimale Entscheidungspolitik hat die Eigenschaft, dass unabhängig vom jeweiligen Anfangszustand und den bisherigen Entscheidungen die restlichen Entscheidungen eine optimale Politik für das verbleibende Teilproblem darstellen. Anders ausgedrückt, unabhängig davon, wie ein bestimmter Zustand x n der n-ten Stufe im Intervall [0, N] erreicht wurde, müssen die Entscheidungen u n,..., u N für das noch zu durchlaufende Intervall [n, N] so gewählt werden, dass mit x n als Anfangszustand eine optimale Lösung für das Intervall [n, N] erreicht wird. Jede Teilfolge der optimalen Entscheidungsfolge ist optimal. Der groÿe Vorteil der dynamischen Programmierung besteht in der Rechenzeitersparnis gegenüber der bloÿen Enumeration. Beim Postkutschenproblem gibt es insgesamt 18 mögliche Reiserouten. Berechnet man für jeden Weg die entsprechenden Kosten und sucht dann die billigste Route aus, muss man insgesamt 54 Additionen (3 pro Weg) und 17 Vergleiche durchführen. Bei der Lösung als dynamisches Problem sind lediglich 3+9+6=18 Additionen und 11 Vergleiche durchzuführen. Je mehr Stufen und Zustände pro Stufe ein Problem aufweist, umso gröÿer wird die Ersparnis im Vergleich zur vollständigen Enumeration: bei einem Problem mit 10 Stufen, 10 Zuständen pro Stufe und 10 möglichen Entscheidungsalternativen pro Zustand gibt es 10 10 verschiedene Wege, der Algorithmus der dynamischen Programmierung kommt jedoch mit 1000 Rechenoperationen (10 für jeden Zustand in jeder Stufe) aus. Dynamische Programmen können in deterministische und stochastische dynamische Programme unterteilt werden. Bei deterministischen dynamischen Programmen ist der Folgezustand x n+1 vollständig durch den aktuellen Zustand x n und die getroene Entscheidung u n bestimmt (Abbildung 2). Im Gegensatz dazu wird bei stochastischen dynamischen Programmen (Markov'sche Entscheidungsprobleme) der Folgezustand der nächsten Stufe durch den aktuellen Zustand, die aktuelle Entscheidung und eine Wahrscheinlichkeitsverteilung bestimmt (vgl. Abbildung 3). 5
Stufe n Entscheidung x n u n p 1 Stufe n+1 1 2 p 2. p S 1 p S S-1 7 S Abbildung 3: Stochastisches dynamisches Programm 3 Deterministische dynamische Programme: Beispiele 3.1 Zuteilung von Ärzteteams Die Weltgesundheitsorganisation möchte Ärzteteams in drei verschiedene unterentwickelte Länder schicken, um die ärztliche Versorgung der Bevölkerung zu verbessern. Insgesamt stehen 5 Teams zur Verfügung. In der folgenden Tabelle ist angegeben, welche Auswirkungen (zusätzlich erwartete Personen-Lebensjahre in 1.000) der Einsatz von Ärzteteams hat: zusätzliche Personen-Lebensjahre in 1.000 Anzahl Land Teams 1 2 3 0 0 0 0 1 45 20 50 2 70 45 70 3 90 75 80 4 105 110 100 5 120 150 130 Wie sollten die Teams auf die drei Länder aufgeteilt werden? Formulierung: Die drei Länder können als die Stufen des Problems aufgefasst werden. Die Entscheidungsvariablen u n beschreiben, wie viele Teams in das jeweilige Land geschickt werden. Die Zustände in den einzelnen Stufen werden von den Entscheidungen beeinusst. Sie beschreiben, wie viele Teams noch nicht zugeteilt wurden und für die nächsten Länder noch zur Verfügung stehen. Daher gibt es zu Beginn des Problems in Stufe 1, wenn noch keine Teams 6
Abbildung 4: Zuteilung Ärzteteams zugeteilt wurden, nur einen Zustand x 1 = 5. Für Stufe 2 bzw 3 gilt x 2 = x 1 u 1 = 5 u 1 bzw. x 3 = x 2 u 2. Am Ende sollen alle Teams eingeteilt sein, daher gilt x 4 = 0. Abbildung 4 beschreibt das Problem. Bezeichne p i (u i ) die in der Tabelle gegebenen Auswirkungen, wenn u i Arzteteams in Land i gesendet werden. Ziel ist es, die Variablen u i so zu wählen, dass 3 i=1 p i(u i ) maximiert wird, wobei 3 i=1 u i = 5 gelten muss und die u i nichtnegative ganzzahlige Variablen sind. Damit ergibt sich für eine beliebige Stufe n f n (x n, u n ) = p n (u n ) + max u n+1,...,u 3 3i=n u i = xn 3 i=n+1 p i (u i ). Mit f n(x n ) = max f n (x n, u n ) u n=0,1,...,x n 7
gilt dann und damit die rekursive Beziehung Lösung: f n(x n ) = f n(x n, u n ) = p n (u n ) + f n+1(x n u n ), { max pn (u n ) + f u n =0,1,...,x n n+1(x n u n ) }. Für die letzte Stufe gilt f 4 (0) = 0, damit ergibt sich für Stufe 3 Stufe 2: Stufe 1: aktueller maximaler optimale optimaler Zustand Folgebeitrag Entscheidung Folgezustand x 3 f3 (x 3 ) u 3 x 4 0 0 0 0 1 50 1 0 2 70 2 0 3 80 3 0 4 100 4 0 5 130 5 0 akt. ZF-Beitrag bei u 2 Teams in Land 2 max. opt. opt. Zustand f 2 (x 2, u 2 ) = p 2 (u 2 ) + f3 (x 2 u 2 ) FB Entsch. FZ x 2 0 1 2 3 4 5 f2 (x 2 ) u 2 x 3 0 0 0 0 0 1 50 20 50 0 1 2 70 70 45 70 0, 1 2, 1 3 80 90 95 75 95 2 1 4 100 100 115 125 110 125 3 1 5 130 120 125 145 160 150 160 4 1 akt. ZF-Beitrag bei u 1 Teams in Land 1 max. opt. opt. Zustand f 1 (x 1, u 1 ) = p 1 (u 1 ) + f2 (x 1 u 1 ) FB Entsch. FZ x 1 0 1 2 3 4 5 f1 (x 1 ) u 1 x 2 5 160 170 165 160 155 120 170 1 4 Die optimale Zuteilung lautet also ein Team in Land 1, drei in Land 2 und eines in Land 3. Dieses Beispiel illustriert einen häugen Typ dynamischer Programme, bei dem eine beschränkte Ressource auf verschiedene Aktivitäten aufgeteilt werden soll. Diese Sichtweise erinnert natürlich an das Standardproblem der linearen Optimierung, trotzdem gibt es einige wichtige Unterschiede: 8
ˆ Im obigen dynamischen Problem wird nur eine Ressource aufgeteilt. Prinzipiell ist es auch möglich, mit mehreren Ressourcen zu arbeiten, die Lösungsmethode wird aber sehr schnell inezient. Im Gegensatz dazu können lineare Programme sehr viele Ressourcen bzw. Nebenbedingungen in ezienter Weise berücksichtigen. ˆ Die Formulierung eines solchen Problems als dynamisches Programm ist weitaus allgemeiner als ein lineares Programm. Von den vier Voraussetzungen der linearen Optimierung (Proportionalität, Additivität, Teilbarkeit und Sicherheit) muss nur die Bedingung der Additivität erfüllt sein (bzw. das Analogon für Produkte (statt Summen) von Funktionen), damit das Bellman'sche Optimalitätsprinzip gilt. Proportionalität: wird von fast allen dynamischen Programmen verletzt (auch im obigen Beispiel, siehe die Tabelle mit den zusätzlichen Lebensjahren). Teilbarkeit: Sehr oft sind die Entscheidungsvariablen ganzzahlig. Meistens wird das Problem sogar komplexer, wenn beliebige Teilbarkeit der Variablen gefordert wird. Sicherheit: Auch wenn wir hier nur deterministische Probleme behandeln, sind in der Praxis vor allem stochastische dynamische Programme verbreitet. Auch das obige Zuteilungsproblem lieÿe sich realitätsnäher durch ein stochastisches Programm beschreiben. 4 Übungsaufgaben 1. EVN will in NÖ Transformatoren aufstellen. Jeder Transformator kann an mehreren Stellen positioniert werden. Je nach gewählter Stelle ergeben sich unterschiedliche Arbeitskosten. Zwischen den Transformatoren werden Leitungen gelegt, so dass zusätzliche Kosten entstehen (siehe Abbildung). Finden Sie mittels dynamischer Programmierung die kostengünstigste Variante. 2. Eine Studentin hat noch 7 Tage bis zum Beginn der Prüfungswoche, in der sie alle vier Prüfungen, zu denen sie antritt, gleich am ersten Tag hat. Sie möchte die verbleibende Lernzeit so eektiv wie möglich aufteilen. Sie braucht mindestens einen Tag für jedes Fach, und sie möchte sich täglich nur auf ein Fach konzentrieren. Die Studentin beschlieÿt, die Aufteilung mittels dynamischer Programmierung vorzunehmen, um die Gesamtpunkte- 9
zahl der vier Prüfungen zu maximieren. Sie schätzt die Punkteanzahl bei entsprechender Aufteilung folgendermaÿen ein: geschätzte Punkteanzahl Anzahl der Kurs Lerntage 1 2 3 4 1 3 5 2 6 2 5 5 4 7 3 6 6 7 9 4 7 9 8 9 Lösen Sie dieses Problem mittels Dynamischer Programmierung. 3. Der Preis eines neuen Autos beträgt 10000, die jährlichen Instandhaltungskosten und Wiederverkaufswerte sind in nachstehender Tabelle angeführt. Bestimmen Sie unter der Annahme, dass Sie jetzt ein neues Auto besitzen, mittels Dynamischer Programmierung eine replacement-politik, mit der Sie die minimalen Kosten aus Besitz und Instandhaltung eines Autos für die nächsten 6 Jahre erzielen. (Gehen Sie davon aus, dass Sie nach Ende dieser 6 Jahre kein Auto besitzen.) Alter des Autos (Jahre) Wiederverkaufswert Instandhaltungskosten 1 7000 300 (Jahr 1) 2 6000 500 (Jahr 2) 3 4000 800 (Jahr 3) 4 3000 1200 (Jahr 4) 5 2000 1600 (Jahr 5) 6 1000 2200 (Jahr 6) 10