Optimierung mit Matlab



Ähnliche Dokumente
Optimierung mit Matlab

Optimierung für Nichtmathematiker

Extrema von Funktionen in zwei Variablen

Optimierung für Wirtschaftsinformatiker: Analytische Optimierung ohne Nebenbedingungen

Tangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort:

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

3. Grundlagen der Linearen Programmierung

Lineare Optimierung Ergänzungskurs

Nichtlineare Optimierung ohne Nebenbedingungen

Kevin Caldwell. 18.April 2012

Lernmaterial für die Fernuni Hagen effizient und prüfungsnah

ERGÄNZUNGEN ZUR ANALYSIS II MITTELWERTSATZ UND ANWENDUNGEN

Die Verbindung von Linearer Programmierung und Graphentheorie

Optimierung und Simulation ökonomischer Problemlagen privater Haushalte 3. Vorlesung

Mathematik 1 für Wirtschaftsinformatik

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

Übungsklausur. Bitte wählen Sie fünf Aufgaben aus! Aufgabe 1. Übungsklausur zu Mathematik I für BWL und VWL (WS 2008/09) PD Dr.

Doing Economics with the Computer Sommersemester Excel Solver 1

Primzahlen und RSA-Verschlüsselung

3. LINEARE GLEICHUNGSSYSTEME

Praktische Mathematik: Lineare und Netzwerk-Optimierung (SS 2015) Praktikumsaufgaben

LU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen.

Optimalitätskriterien

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Entladen und Aufladen eines Kondensators über einen ohmschen Widerstand

Professionelle Seminare im Bereich MS-Office

Bestimmung einer ersten

Lineare Gleichungssysteme

Optimierung für Wirtschaftsinformatiker: Analytische Optimierung mit Ungleichungsnebenbedingungen

Theoretische Grundlagen der Informatik WS 09/10

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Musterlösungen zur Linearen Algebra II Blatt 5

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

Im Jahr t = 0 hat eine Stadt Einwohner. Nach 15 Jahren hat sich die Einwohnerzahl verdoppelt. z(t) = at + b

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Aufgaben zur Flächenberechnung mit der Integralrechung

1 topologisches Sortieren

Lineare Gleichungssysteme

4. Dynamische Optimierung

9.2. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83

Lineare Algebra und Lösung linearer zeitinvarianter Differentialgleichungssysteme

6.2 Scan-Konvertierung (Scan Conversion)

Konzepte der Informatik

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Charakteristikenmethode im Beispiel

1 Mathematische Grundlagen

a n auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

LINGO: Eine kleine Einführung

Aufgabe 1. Zunächst wird die allgemeine Tangentengleichung in Abhängigkeit von a aufgestellt:

Rekursionen. Georg Anegg 25. November Methoden und Techniken an Beispielen erklärt

V 2 B, C, D Drinks. Möglicher Lösungsweg a) Gleichungssystem: 300x y = x + 500y = 597,5 2x3 Matrix: Energydrink 0,7 Mineralwasser 0,775,

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Eigenwerte und Eigenvektoren von Matrizen

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Was meinen die Leute eigentlich mit: Grexit?

Übungen lineare Gleichungssysteme - Lösungen 1. Bestimme die Lösungsmenge und führe eine Probe durch! a)

OPERATIONS-RESEARCH (OR)

Fachhochschule Bochum Fachhochschule Münster Fachhochschule Südwestfalen

Division Für diesen Abschnitt setzen wir voraus, dass der Koeffizientenring ein Körper ist. Betrachte das Schema

13. Lineare DGL höherer Ordnung. Eine DGL heißt von n-ter Ordnung, wenn Ableitungen y, y, y,... bis zur n-ten Ableitung y (n) darin vorkommen.

Teil II. Nichtlineare Optimierung

Optimale Steuerung. Sequentielle Quadratische Programmierung. Kevin Sieg. 14. Juli Fachbereich für Mathematik und Statistik Universität Konstanz

Mathematischer Vorbereitungskurs für Ökonomen

0, v 6 = , v 4 = span(v 1, v 5, v 6 ) = span(v 1, v 2, v 3, v 4, v 5, v 6 ) 4. span(v 1, v 2, v 4 ) = span(v 2, v 3, v 5, v 6 )

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Zeichen bei Zahlen entschlüsseln

7 Rechnen mit Polynomen

Modulabschlussklausur Analysis II

Grundlagen der Theoretischen Informatik, SoSe 2008

Abschlussprüfung Realschule Bayern II / III: 2009 Haupttermin B 1.0 B 1.1

Optimierungsprobleme mit Nebenbedingungen - Einführung in die Theorie, Numerische Methoden und Anwendungen

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

Erstellen von x-y-diagrammen in OpenOffice.calc

Approximation durch Taylorpolynome

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Erwin Grüner

Theoretische Grundlagen der Informatik

Informationsblatt Induktionsbeweis

Z = 60! 29!31! 1,

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

11. Das RSA Verfahren und andere Verfahren

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen

Excel Pivot-Tabellen 2010 effektiv

Universität Bonn, Institut für Angewandte Mathematik. WS 2012/2013 Prüfung Angewandte Mathematik und Statistik - Agrarwiss. /ELW

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Lizenzen auschecken. Was ist zu tun?

Berechnungen in Access Teil I

Lösungsmethoden gewöhnlicher Differentialgleichungen (Dgl.)

11.3 Komplexe Potenzreihen und weitere komplexe Funktionen

Klausur zur Vorlesung Mathematische Grundlagen für Wirtschaftswissenschaftler

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Fit in Mathe. Juni 2014 Klassenstufe 9. Lineare Funktionen

Matrizennorm. Definition 1. Sei A M r,s (R). Dann heißt A := sup die Matrixnorm. Wir wissen zunächst nicht, ob A eine reelle Zahl ist.

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

TECHNISCHE UNIVERSITÄT MÜNCHEN

Definition 3.1: Ein Differentialgleichungssystem 1. Ordnung

Modellbildungssysteme: Pädagogische und didaktische Ziele

Transkript:

Lehrstuhl Mathematik, insbesondere Numerische und Angewandte Mathematik Prof. Dr. L. Cromme Computerbasierte Mathematische Modellierung für Mathematiker, Wirtschaftsmathematiker, Informatiker im Wintersemester 2010/2011 1 Optimierungsaufgaben Optimierung mit Matlab Die allgemeine Aufgabenstellung der Optimierung besteht darin, zu einer gegebenen Menge X R n, n N \ {0} und einer Funktion f : X R ein x Z X zu finden, so dass gilt: f (x ) f(x) für alle x Z. Die Funktion f wird Zielfunktion, Z zulässiger Bereich und f(x ) wird Optimalwert bzw. Optimum genannt. Für diese Aufgabenstellung ist die Kurzschreibweise min u.d.n f(x) x Z (1.1) üblich, wobei u.d.n für unter den Nebenbedingungen bzw. unter der Nebenbedingung steht. Im Fall von Z X R n spricht man von einem restringierten Optimierungsproblem, während man für Z = R n von unrestringierter Optimierung spricht. Der zulässige Bereich Z wird wird allgemein durch Nebenbedingungen (Restriktionen) definiert. Dies erfolgt durch Gleichungen und/oder Ungleichungen. Ist die Zielfunktion linear und werden die Nebenbedingungen durch ein System linearer Gleichungen und Ungleichungen definiert, so spricht man von linearer Optimierung. Ist dagegen entweder die Zielfunktion nichtlinear oder werden Nebenbedingungen durch nichtlineare Gleichungen und Ungleichungen definiert, dann spricht man von nichtlinearer Optimierung. Werden keine Gleichungen oder Ungleichungen angegeben, so kann für (allgemeinere) Teilmengen Z R n (z. B. Z = R n 0 ) auch kürzer min f(x) (1.2) x Z geschrieben werden (wobei z.b. Z = R n 0 natürlich auch durch Ungleichungen dargestellt werden kann). Nachfolgend wird stets angenommen, dass Z = X ist. Es ist zu beachten, dass es Problemstellungen gibt, die ohne Restriktionen keine Lösung haben. Zum Beispiel hat das unrestringierte Problem (1.2) für die Zielfunktion f(x) = x 3 für den zulässigen Bereich Z = R keine Lösung, während das Problem (1.2) mit der zulässigen Menge Z := {x R x 1} die Lösung x = 1 hat. Generell müssen in der Optimierung nur Minimierungsprobleme betrachtet werden, denn alle Maximierungsprobleme können wegen max f(x) = min f(x) x Z x Z in ein Minimierungsproblem überführt werden. Zu den Ungleichungsrestriktionen ist anzumerken, dass die meisten Verfahren hier nur die -Relation zulassen. Dies aber immer erreichbar, denn jede die - Relation enthaltende Ungleichung läßt sich durch Multiplation mit 1 in die gewünschte Form überführen. 1

Außerdem besteht zwischen unrestringierten Optimierungsproblemen und nichtlinearen Gleichungssystemen ein besonderer Zusammenhang: Dazu sei F : R n R m mit n, m N \ {0} und m n eine nichtlineare Abbildung, wobei F = (F 1,..., F m ) T und F i : R n R für i = 1,..., m. Das (im Fall m > n überbestimmte) nichtlineare Gleichungssystem F (x) = 0 ist allgemein nicht lösbar. Ist aber x eine Lösung, so löst x auch das unrestringierte Optimierungsproblem m min f(x) := (F i (x)) 2 = F (x) 2 2, (1.3) i=1 denn für alle x R n gilt f(x) 0 = f(x ). Zum Beispiel in [2] wird das Problem (1.3) als Ersatzproblem für das nichtlineare Gleichungssystem F (x) = 0 bezeichnet, und zwar auch für den Fall, wenn F (x) = 0 nicht lösbar ist. Minimierungsprobleme der Form (1.3) bezeichnet man auch als Ausgleichsprobleme, da die Ausgleichung von Messdaten häufig auf Probleme des Typs (1.3) führt. Anstatt des Problems (1.3) werden nichtlineare Ausgleichsaufgaben in der l 2 -Norm oft auch durch das äquivalente Problem min f(x) := 1 m (F i (x)) 2 = 1 2 2 F (x) 2 2 (1.4) definiert. i=1 2 Optimierungsverfahren - Überblick 2.1 Lineare Optimierung Es gibt verschiedene Methoden zur Lösung eines linearen Optimierungsproblems. Am bekanntesten ist dabei das auf G. Dantzig zurückgehende Simplex-Verfahren, das entweder nach endlich vielen Schritten mit einer Lösung endet, oder die Unlösbarkeit bzw. Unbeschränktheit des Problems feststellt. Die Grundidee des Verfahrens besteht darin, ausgehend von einer Ecke des zulässigen Bereichs Z entlang der Kanten von Z zu einer optimalen Ecke zu laufen. Die Begriffe Ecke und Kanten rühren daher, dass der zulässige Bereich im Fall eines linearen Minimierungsproblems ein (konvexes) Polyeder ist. Ist der zulässige Bereich konvex, dann ist jede lokale Lösung auch gleichzeitig globale Lösung des Problems. Der Simplex-Algorithmus gliedert sich in zwei Phasen. In Phase I wird lediglich eine Startecke aus Z berechnet, mit der dann in die Phase II übergegangen wird, in der dann iterativ versucht wird, aus einer zulässigen Lösung eine neue zulässige Lösung mit besserem Zielfunktionswert zu konstruieren. Zulässige Lösungen sind dabei immer Ecken des zulässigen Bereichs. Das skizzierte Vorgehen wird solange iteriert, bis keine Verbesserung mehr möglich ist, wobei jede Iteration der Lösung eines linearen Gleichungssytems entspricht. Für Details sei auf die weiterführende Literatur verwiesen. 2.2 Nichtlineare Optimierung Hier gibt es praktisch (noch) fast keine Methoden, bei deren Anwendung man in den meisten Fällen eine Lösung des Problems erhält, die mit Sicherheit eine globale Lösung ist. Deshalb ist oft nur die Berechnung von lokalen Lösungen möglich. Welche Methode zur Berechnung einer lokalen Lösung verwendet wird, hängt von der Problemstellung bzw. den Eigenschaften der Zielfunktion und den Nebenbedingungen ab. Ist zum Beispiel die Zielfunktion nur stetig, aber nicht differenzierbar, so ist die Verwendung von ableitungsfreien Verfahren erforderlich, wie zum Beispiel das Simplex-Verfahren von Nelder und Mead oder das Intervallhalbierungsverfahren. Ableitungsfreie Verfahren sind meist nur iterativ und weisen oft nur sehr langsame Konvergenz auf, sind aber relativ robust. 2

Verfahren, bei denen der Gradient der Zielfunktion benötig wird, sind z.b. das Gradientenverfahren und Quasi-Newton-Verfahren. Diese Verfahren sind schneller als die ableitungsfreien Methoden, insbesondere, wenn der Gradient schnell berechnet werden kann. Ist die oft numerisch teuere Berechnung der Hesse-Matrix gerechtfertigt, so kann diese Information zu einer weiteren Beschleunigung der Problemlösung führen. Ein Verfahren, das die Hesse-Matrix nutzt, ist zum Beispiel das Newton-Verfahren. 3 Lösung von Optimierungsproblemen mit Hilfe von Matlab 3.1 Minimierung ohne Ableitung und ohne Nebenbedingungen Gegeben sei die quadratische Funktion f(x) := ( x ( )) 2 T ( ( 1 A x 2 )) ( 1 mit A := 1 1 ) 1 2. Gesucht ist ein Minimum x = (x 1, x 2) T von f. Dazu ist zunächst die Funktion f zu implementieren: function[f,df] = quadfkt(x) A = [1,-1; -1, 2]; y = x - [-2;1]; f = transpose(y)*a*y; df = 2*A*y; Die Ableitung df wird bei der Minimierung mit fminsearch nicht notwendig benötigt, kann die Minimierung aber erheblich beschleunigen. Zur Berechnung des Minimums genügt nun der Aufruf: x0 = [1;2]; [x,fx] = fminsearch(@quadfkt,x0); x0 stellt dabei den Startwert des iterativen Minimierungsverfahrens dar, x ist das berechnete (lokale) Minimum x und fx der Funktionswert in x. Die Funktion fminsearch stellt eine Implementierung des ableitungsfreien Nelder-Mead-Verfahrens dar. Die Matlab-Dokumentation zur fminsearch erklärt eine Vielzahl von Optionen, die es ermöglichen, den Algorithmus zu beeinflussen. Dies erfolgt mit Hilfe der Funktion optimset. Zum Beispiel bewirkt der Aufruf x0 = [1;2]; opt = optimset( Display, iter, TolX,1.0e-005, MaxIter,100); [x,fx] = fminsearch(@quadfkt,x0,opt); dass detaillierte Informationen über den Verlauf der Iteration ausgegeben werden, das Abbruchkriterium TolX verändert wird und der Algorithmus auf maximal 100 Iterationen beschränkt wird. Es besteht natürlich auch die Möglichkeit, parameterabhängige Funktionen zu minimieren. Soll zum Beispiel in der Beispielfunktion quadfkt die Matrix A nicht fest, sondern variabel sein, so ändert man diese wie folgt ab: function[f,df] = quadfkt2(x,a) y = x - [-2;1]; f = transpose(y)*a*y; df = 2*A*y; Wichtig ist dabei immer, dass die zu minimierende Variable x am Anfang der Liste der Funktionsvariablen steht! Die Funktion fminsearch ist nun wie folgt aufzurufen: 3

[x,fx] = fminsearch(@(x) quadfkt2(x,a),x0,opt); Matlab stellt keine Maximierungsroutinen zur Verfügung. Dies ist, wie bereits weiter oben erwähnt wurde, auch nicht notwendig, denn alle Maximierungsprobleme können wegen max f(x) = min f(x) x D x D in ein Minimierungsproblem überführt werden. Für die Implementierung hat man also zwei Möglichkeiten: Entweder man definiert die entsprechende Matlab-Funktion für f oder mit der Definition von f wird wie folgt verfahren: [x,fx] = fminsearch(@(x) -quadfkt2(x,a),x0,opt); fx = -fx; Die letzte Zeile sorgt dafür, das fx dann wirklich das Maximum ist. 3.2 Minimierung mit Verwendung der Ableitung Das zweite Argument df der Funktionen quadfun und quadfun2 wurde bisher nicht benötigt. Die bis hierher vorgeschlagenen Minimierungsaufrufe hätten genauso funktioniert, wenn [f,df] in quadfun.m und quadfun2.m durch f ersetzt und die df-zeile gelöscht wird. Die Verwendung des Gradienten df beschleunigt die Minimierung erheblich, wenn man zum Beispiel den Aufruf x0 = [1;2]; opt = optimset( Display, iter, GradObj, on ); [x,fx] = fminunc(@quadfkt,x0,opt); wählt. Die Funktion fminunc verwendet dann den Gradienten bei der Minimierung. Eine weitere Beschleunigung ist durch die Verwendung der Hessematrix H f möglich. Weiteres erläutert die Matlab- Dokumentation zu fminunc. 3.3 Minimierung unter Nebenbedingungen Die Funktion fmincon erlaubt die Minimierung der Zielfunktion mit Nebenbedingungen der folgenden Form: c ineq (x) 0 (3.1) c eq (x) = 0 (3.2) A ineq x b ineq (x) (3.3) A eq x = b eq (x) (3.4) l x u (3.5) x, b ineq, b eq, l und u sind Vektoren, A ineq und A eq Matrizen, c ineq (x) und c eq (x) Funktionen, die Vektoren liefern. c ineq (x) und c eq (x) dürfen nichtlinear sein. Die Matlab-Dokumentation zu fmincon erklärt detailliert, wie die Nebenbedingungen angesteuert werden. Durch die Übergabe der Gradienten der Zielfunktion f und c ineq (x), c eq (x) kann die Konvergenz des Verfahrens erheblich beschleunigt werden. Die Auswahl des Minimierungsverfahrens hängt von den gegebenen Nebenbedingungen (3.1) - (3.5) ab und kann ferner mittels optimset gesteuert werden. Im folgenden seien einige Beispielaufrufe dokumentiert. Die Nebenbedingungen (3.1) - (3.5) können einzeln verwendet werden, aber auch miteinander kombiniert werden. 4

3.3.1 Lineare Gleichungsbedingungen lina = [-1,-1]; linb = 1; opt = optimset( Algorithm, interior-point ); [x,fx,exitflag,output] = fmincon(@quadfkt,x0,[],[],lina,linb,[],[],[],opt); 3.3.2 Einfache Ungleichungsnebenbedingungen (auch Box-Contraints genannt) lb = [0;0]; ub = [0.5 ; 0.5]; [x,fx,exitflag,output] = fmincon(@quadfkt,x0,[],[],[],[],lb,ub,[],opt); 3.3.3 Nichtlineare Gleichungsnebenbedingungen Zunächst wird in einer Funktion coneq.m die Nebenbedingung der Form (2) definert (im nachfolgenden Beispiel ist dies x 2 1 + x 2 2 = 1 4 ): function[c,ceq] = coneq(x) c=[]; ceq = x(1)^2 + x(2)^2-0.25; Hier ist ceq skalarwertig. Werden mehrere Nebenbedingungen benötigt, so wird ceq als Spaltenvektor verwendet. Die Minimierung wird mit dem folgenden Aufruf gestartet: x0 = [0,0]; opt = optimset( Display, iter ); [x,fx,exitflag,output] = fmincon(@quadfkt,x0,[],[],[],[],[],[],@coneq,opt); 3.3.4 Nichtlineare Ungleichungsnebenbedingungen Definition der nichtlinearen Ungleichungsnebenbedingungen und Aufruf des Minimierers geschehen analog zu den nichtlinearen Gleichungsnebenbedingungen. Der Unterschied liegt in der Definition der Nebenbedingungsfunktion conineq.m, die jetzt die Ungleichungsnebenbedingung liefert (hier: x 2 1 + x 2 2 1 4 ): function[c,ceq] = conineq(x) c = x(1)^2 + x(2)^2-0.25; ceq=[]; Die Minimierung wird analog wie eben mit dem folgenden Aufruf gestartet: x0 = [0,0]; opt = optimset( Display, iter ); [x,fx,exitflag,output] = fmincon(@quadfkt,x0,[],[],[],[],[],[],@conineq,opt); 3.4 Lösung von Ausgleichsproblemen Zur Lösung von Problemen des Typs (1.3) bzw. (1.4) wird u.a. die Funktion lsqnonlin bereitsgestellt. Ihre Verwendung wird im Beispiel 4.2 weiter unten demonstriert. 5

4 Beispiele Beispiel 4.1 Eine Großmolkerei wird monatlich mit 24 Millionen Liter Milch beliefert, die zu Quark und Käse verarbeitet werden. Für die Herstellung von 1 kg Quark werden 4.62 Liter, für die von 1 kg Käse 11.23 Liter Milch benötigt. Ferner dürfen aus technischen Gründen die produzierten Massen an Quark und Käse zusammen 4000 Tonnen nicht übersteigen. Außerdem müssen aufgrund von Lieferverpflichtungen mindestens 1000 Tonnen Quark und 500 Tonnen Käse produziert werden. Pro Kilogramm Quark verdient die Molkerei nach Abzug aller Produktionskosten 11 Cent, bei einem Kilo Käse sind es 14 Cent. Wie viele Tonnen Käse und Quark müssen pro Monat produziert werden, damit der Gewinn unter den gegebenen Voraussetzungen maximiert wird? Sei q die monatlich produzierte Menge an Quark in kg und k die monatlich produzierte Menge an Käse in kg. Dies führt auf das folgende Maximierungsproblem: max 0.11 q + 0.14 k u.d.n. 4.62 q + 11.23 k 24 10 6 q + k 4 10 6 q 10 6 k 5 10 5 Wegen den Bemerkungen in Abschnitt 1, müssen wir dieses Problem in ein Minimierungsproblem überführen, außerdem müssen die -Relationen in -Relationen umgewandelt werden. Es ist deshalb folgendes Minimierungsproblem zu lösen: min 0.11 q 0.14 k u.d.n. 4.62 q + 11.23 k 24 10 6 q + k 24 10 6 q 10 6 k 5 10 5 Zur numerischen Lösung des Problems mit Matlab, wird für die zu minimierende Zielfunktion f(q, k) = 0.11 q 0.14 k eine Funktion gewinnfunktion.m definiert, wobei wir zulassen, dass sich der Gewinn pro Kilogramm Quark bzw. Käse auch verändern kann: function[wert] = gewinnfunktion(param,gewinn) wert = -gewinn(1)*param(1) - gewinn(2)*param(2); Analog werden die Nebenbedingungen als Funktion definiert, wobei auch hier die Möglichkeit zugelassen wird, dass sich die Liefer-/Produktionsmengen ändern können: function[c,ceq] = nebenbed(param,minkaese,minquark,maxgesamt,milchmenge) % es gibt keine Gleichungsnebenbedingungen ceq = []; % die Ungleichungsnebenbedingungen c = [4.62*param(1) + 11.23*param(2) - milchmenge;... param(1) + param(2) - maxgesamt;... minquark - param(1);... minkaese - param(2)]; Das Maximierungsproblem wird nun durch folgende Eingaben gelöst: 6

gewinn = [0.11,0.14]; milchmenge = 24*10^6; maxgesamt = 4*10^6; minkaese = 5*10^5; minquark = 10^6; startwert = [1,1]; [x,fx] = fmincon(@(param) gewinnfunktion(param,gewinn),startwert,... fx = -fx; [],[],[],[],[],[],@(param) nebenbed(param,minkaese,minquark,maxgesamt,milchmenge),... optimset( Display, off, Algorithm, active-set )); Auf diese Weise hat man berechnet, dass das Milchwerk einen maximalen Gewinn von fx = 465052.95 Euro erzielt, wenn es x(1) = 3164901.7 kg Quark und x(2) = 835098.34 kg Käse produziert. Beispiel 4.2 In der Medizin werden die Beziehungen zwischen der Gabe einer oralen Einzeldosis und Elimination eines Medikaments in Abhängigkeit von der Zeit durch die Differentialgleichung dx dt = λ 1C 0 e λ1t λ 2 x beschrieben, wobei C 0, λ 1, λ 2 > 0 aus Messwerten (t i, x i ) zu bestimmende Konstanten sind. Die Lösung der Differentialgleichung, die auch als Bateman-Funktion bekannt ist, lautet ( λ C 1 0 λ 2 λ 1 e λ 1t e λ2t), λ 1 λ 2 x(t) =. C 0 λ 1 t e λ1t, λ 1 = λ 2 Mit Hilfe der Bateman-Funktion ist es zum Beispiel möglich, den Zeitpunkt und die Höhe der maximalen Wirkstoffkonzentration oder das Unterschreiten einer minimalen Wirkkonzentration abzuschätzen. Bei drei Patienten j = 1, 2, 3 wurden die Messwerte (t i, x j,i ), i = 1,..., 16 durch Blutuntersuchungen in stündlichen Abständen bestimmt (s. Tabelle 1). Bestimmen Sie die Konstanten C 0, λ 1, λ 2 > 0 mit dem Ansatz der kleinsten Quadrate, indem Sie die Matlab-Funktion lsqnonlin verwenden. (Hinweis: Die Daten können auf der Internetseite zur Lehrveranstaltung abgerufen werden. Dateiname: wirkstoff.csv) t i x 1,i x 2,i x 3,i 1 0.0958 0.1177 0.0795 2 0.1353 0.1538 0.1526 3 0.1390 0.2105 0.1223 4 0.1221 0.1867 0.1320 5 0.1047 0.1782 0.0759 6 0.0913 0.1837 0.0867 7 0.0754 0.1382 0.1015 8 0.0570 0.1242 0.0336 9 0.0610 0.1046 0.0570 10 0.0460 0.1121 0.0351 11 0.0439 0.0797 0.0328 12 0.0256 0.0536 0.0170 13 0.0162 0.0421 0.0150 14 0.0249 0.0655 0.0146 15 0.0162 0.0600 0.0626 16 0.0080 0.0500 0.0349 Tabelle 1 Unterstreichen wir die Abhängigkeit der Funktion x von den Parametern C0, λ 1 und λ 2 durch die Notation x(t) := x(c 0, λ 1, λ 2, t), so ist die Bestimmung der drei Parameter auf die Lösung eines Minimie- 7

rungsproblems in der l 2 -Norm zurückzuführen, also ein Problem der kleinsten Quadrate mit der folgenden Zielfunktion f, wobei X j := (x j,1,..., x j,16 ) für j = 1, 2, 3 und T := (t 1,..., t 16 ): f(c 0, λ 1, λ 2 ) := X j x (C 0, λ 1, λ 2, T ) 2 = 16 (x j,i x(c 0, λ 1, λ 2, t i )) 2 Zur Berechnung der Parameter bzw. Minimierung von f benötigt man einerseits die Batemanfunktion function[werte] = batemanfunktion(cnull,lambda1,lambda2,t) if lambda1 == lambda2 else end werte = cnull*lambda1*t.*exp(-lambda1*t); werte = cnull*lambda1*(exp(-lambda1*t)-exp(-lambda2*t))/(lambda2-lambda1); sowie die Fehlerfunktion function[fehler] = batemanfehler(param,t,x) fx = batemanfunktion(param(1),param(2),param(3),t); fehler = norm(x-fx,2); Dann sind für den ersten Datensatz folgende Eingaben vorzunehmen: dat = csvread( wirkstoff.csv ); startwert = [0.1,0.1,0.1]; opt = optimset( Display, off, TolX,1e-010); [p,fehler] = fminsearch(@(param) batemanfehler(param,dat(:,1),dat(:,2)),startwert,opt); Der Ergebnisvektor p = [0.22824,0.66831,0.20086] enthält die gesuchten Parameter (C 0, λ 1, λ 2 ), die Variable fehler = 0.01936 ist der l 2 -Approximationsfehler an die Messdaten. Alternativ kann man bei Problemen, die mit Hilfe der Methode der kleinsten Quadrate gelöst werden, auch auf für diese Probleme zugeschnittene Matlab-Funktion lsqnonlin zurückgreifen. Genauer wird dabei das Problem (1.4) gelöst, wozu nur die Differenzen x j,i x(c 0, λ 1, λ 2, t i ) übergeben werden müssen, was folgende Modifikation der Fehlerfunktion erfordert: function[fehler] = batemanfehlerlsq(param,t,x) fx = batemanfunktion(param(1),param(2),param(3),t); fehler = x-fx; Zusätzlich müssen noch Intervallgrenzen ub und lb angegeben werden, in denen die gesuchten Parameter liegen. Im vorliegenden Beispiel ist es zweckmäßig, dass alle Parameter positiv sind, so dass folgende Eingaben notwendig sind: dat = csvread( wirkstoff.csv ); startwert = [0.1,0.1,0.1]; ub = [0,0,0]; lb = [inf,inf,inf]; opt = optimset( Display, off, TolX,1e-010); [p,fehler] = lsqnonlin(@(param)batemanfehlerlsq(param,dat(:,1),dat(:,2)),... startwert,ub,lb,opt) Alternativ kann die Funktion lsqnnonlin auch wie folgt aufgerufen werden: [p,fehler] = lsqnonlin(@batemanfehlerlsq,startwert,[0,0,0],[inf,inf,inf],... opt,dat(:,1),dat(:,2)); Der Ergebnisvektor enthält wieder die gesuchten Parameter (C 0, λ 1, λ 2 ), die Variable fehler ist hier allerdings das Quadrat der l 2 -Norm, d.h. in diesem Fall fehler = 0.00037481. i=1 8

Literatur [1] Alt, W.: Nichtlineare Optimierung. Vieweg, Braunschweig/Wiesbaden, 2002 [2] Geiger, C.; Kanzow, C.: Numerische Verfahren zur Lösung unrestringierter Optimirungsaufgaben. Springer, Berlin/Heidelberg, 1999 [3] Reemtsen, R.: Lineare Optimierung. Shaker Verlag, Aachen, 2001. [4] Werner, J.: Numerische Mathematik 2. Vieweg, Braunschweig / Wiesbaden, 1992 9