Praxisbezogen führt Claus Richter in die Algorithmen der Optimierung ein. Einsteiger und Fortgeschrittene werden gleichermaÃen auf den heutigen Stand der Dinge gebracht. In klaren Schritten umreiÃt der Autor die Grundlagen dieses Gebietes, beginnend mit Definitionen und Optimalitätsbedingungen, um sich dann direkt an den C++-Programmierer zu wenden. Der nötige mathematische Apparat, die verwendete Programmiersprache C++ und ihre Klassen werden vorgestellt. Damit stellt der Autor ein einheitliches Niveau her und wird so einer breiten Leserschaft gerecht. Im Folgenden werden 20 Verfahren der linearen, quadratischen und nichtlinearen Optimierung behandelt und dem Anwender nähergebracht. Jeder Algorithmus wird im Aufbau erläutert und an einem konkreten Beispiel demonstriert. Fünf weitere Kapitel widmen sich anwendungsbezogenen Sachverhalten, u.a. der Parameteridentifikation, optimalen Steuerung und Strukturoptimierung. Durch die Bereitstellung der diskutierten Algorithmen und Beispiele als C++-Klassen gewährleistet das Buch einen optimalen Einstieg in die Optimierung.
Mit C++-Programmen zum Download unter [external URL]
1 Einleitung 1
1.1 Das lineare und das nichtlineare Optimierungsproblem 1
1.2 Definitionen und Bezeichnungen 1
1.3 Spezialfälle linearer und nichtlinearer Optimierungsaufgaben 2
1.4 Anwendungen 4
1.4.1 Strukturoptimierung 4
1.4.2 Das Least-Squares-Problem 5
1.4.3 Optimale Steuerung 6
2 Grundlagen 9
2.1 Regularitätsbedingungen 9
2.1.1 Slater-Bedingung 9
2.1.2 Abadie-Bedingung 9
2.1.3 Bedingung der linearen Unabhängigkeit – LICQ 10
2.1.4 Constraint Qualification 10
2.1.5 Bemerkungen 10
2.2 Optimalitätsbedingungen 10
2.2.1 Optimalitätskriterium mittels zulässiger Richtungen 11
2.2.2 Karush-Kuhn-Tucker-Bedingung 11
2.2.3 Bezeichnungen 11
2.2.4 Notwendige Bedingungen 2. Ordnung 12
2.2.5 Hinreichende Bedingungen 2. Ordnung 12
2.2.6 Strenge hinreichende Bedingungen 2. Ordnung 13
2.3 Optimalitätskriterien für spezielle Optimierungsaufgaben 13
2.4 Wünschenswerte Eigenschaften von Optimierungsverfahren 14
2.4.1 Theoretische Richtung 15
2.4.2 Empirische Richtung 17
2.5 Vom C++-Programm zum nutzerfreundlichen Softwaresystem 18
3 Mathematische Hilfsmittel 21
3.1 Das Austauschverfahren 22
3.2 Lösung von Gleichungssystemen mit der QR-Zerlegung 26
3.2.1 Aufbau des Algorithmus 28
3.3 Cholesky-Zerlegung 29
3.3.1 Grundlagen des Verfahrens 29
3.3.2 Aufbau des Algorithmus 30
3.3.3 Weiterführende Bemerkungen 31
3.4 Fibonacci-Verfahren 31
3.4.1 Grundlagen des Verfahrens 31
3.4.2 Aufbau des Algorithmus 33
3.5 Das Verfahren des Goldenen Schnitts 34
3.5.1 Grundlagen des Verfahrens 34
3.5.2 Aufbau das Algorithmus 35
3.6 Newton-Verfahren 36
3.6.1 Grundlagen des Verfahrens 36
3.6.2 Aufbau des Algorithmus 36
3.7 Runge-Kutta-Verfahren zur Lösung von Differenzialgleichungen 37
3.7.1 Weiterführende Bemerkungen 40
4 Probleme und Algorithmen als C++-Klassen 43
4.1 Die Programmiersprache C++ 43
4.2 DerWeg zur objektorientierten Programmierung 44
4.3 Begriffe der objektorientierten Programmierung 45
4.4 Lösungsverfahren und Probleme als Klassen 46
5 Lineare Optimierung 55
5.1 Das Simplexverfahren 56
5.1.1 Grundlagen des Verfahrens 56
5.1.2 Aufbau des Algorithmus 59
5.1.3 Konstruktion eines ersten Simplextableaus 61
5.2 Das revidierte Simplexverfahren 63
5.2.1 Grundlagen des Verfahrens 63
5.2.2 Aufbau des Algorithmus 66
5.3 Weiterführende Bemerkungen 67
5.4 Das Ellipsoidverfahren 67
5.4.1 Grundlagen des Verfahrens 67
5.4.2 Aufbau des Algorithmus 70
5.5 Weiterführende Bemerkungen 71
6 Quadratische Optimierung 73
6.1 Das Relaxationsverfahren 74
6.1.1 Grundlagen des Verfahrens 74
6.1.2 Aufbau des Algorithmus 74
6.1.3 Weiterführende Bemerkungen 76
6.2 Methode der aktiven Restriktionen von Fletcher 76
6.2.1 Grundlagen des Verfahrens 76
6.2.2 Der Algorithmus 77
6.2.3 Weiterführende Bemerkungen 78
7 Unbeschränkte nichtlineare Optimierung 79
7.1 Das Verfahren der stochastischen Suche 80
7.1.1 Grundlagen des Verfahrens 80
7.1.2 Aufbau des Algorithmus 80
7.1.3 Weiterführende Bemerkungen 81
7.2 Das Verfahren der koordinatenweisen Suche 82
7.2.1 Grundlagen des Verfahrens 82
7.2.2 Aufbau des Algorithmus 82
7.3 Das einfache Polytopverfahren 83
7.3.1 Grundlagen des Verfahrens 83
7.3.2 Aufbau des Algorithmus 85
7.3.3 Weiterführende Bemerkungen 86
7.4 Das Verfahren des steilsten Abstiegs 87
7.4.1 Grundlagen des Verfahrens 87
7.4.2 Aufbau des Algorithmus 88
7.4.3 Weiterführende Bemerkungen 89
7.5 Das Verfahren der konjugierten Gradienten 89
7.5.1 Grundlagen des Verfahrens 89
7.5.2 Aufbau des Algorithmus 91
7.5.3 Weiterführende Bemerkungen 91
7.6 Das Newton-Verfahren 92
7.6.1 Grundlagen des Verfahrens 92
7.6.2 Aufbau des Algorithmus 93
7.6.3 Weiterführende Bemerkungen 94
7.7 Das Newton-Verfahren mit konsistenter Approximation der Hesse-Matrix 95
7.7.1 Grundlagen des Verfahrens 95
7.7.2 Aufbau des Algorithmus 96
7.7.3 Weiterführende Bemerkungen 97
7.8 Das Verfahren der variablenMetrik (Quasi-Newton-Verfahren) 97
7.8.1 Grundlagen des Verfahrens 97
7.8.2 Aufbau des Algorithmus 99
7.8.3 Weiterführende Bemerkungen 100
8 Beschränkte nichtlineare Optimierung 101
8.1 Die adaptive Zufallssuche 102
8.1.1 Grundlagen des Verfahrens 102
8.1.2 Aufbau des Algorithmus 103
8.1.3 Weiterführende Bemerkungen 104
8.2 Das erweiterte Polytopverfahren 104
8.2.1 Grundlagen des Verfahrens 104
8.2.2 Algorithmus 106
8.2.3 Weiterführende Bemerkungen 108
8.3 Das Schnittebenenverfahren 109
8.3.1 Grundlagen des Verfahrens 109
8.3.2 Aufbau des Algorithmus 110
8.3.3 Weiterführende Bemerkungen 111
8.4 Das SQP-Verfahren 112
8.4.1 Grundlagen des Verfahrens 112
8.4.2 Aufbau des Algorithmus 113
8.4.3 Weiterführende Bemerkungen 114
8.5 Das erweiterte Newton-Verfahren 114
8.5.1 Grundlagen des Verfahrens 114
8.5.2 Aufbau des Algorithmus 116
8.5.3 Weiterführende Bemerkungen 117
8.6 Verfahren mit Straf- und Barrierefunktionen 117
8.6.1 Grundlagen des Verfahrens 117
8.6.2 Der Algorithmus 119
8.6.3 Weiterführende Bemerkungen 120
9 Globalisierung 123
9.1 Dämpfungs- und Regularisierungsmethoden 123
9.2 Hybride Methoden 127
9.3 Einbettungsmethoden 128
10 Innere-Punkte-Methoden 131
10.1 Das Projektionsverfahren 131
10.1.1 Grundlagen des Verfahrens 131
10.1.2 Aufbau des Algorithmus 133
10.1.3 Weiterführende Bemerkungen 136
10.2 Kurzschrittverfahren 136
10.2.1 Herleitung des Verfahrens 136
10.2.2 Beschreibung des Algorithmus 138
10.2.3 Weiterführende Bemerkungen 139
11 Parameteridentifikation 141
11.1 Parameterschätzung auf der Grundlage linearer Quadratmittelprobleme 142
11.2 Nichtlineare Parameterschätzung und nichtlineare Optimierungsverfahren 145
11.3 Das Gauß-Newton-Prinzip und ein darauf beruhendes Verfahren 146
11.3.1 Aufbau des Algorithmus 147
11.4 Parameterschätzung und SQP-Verfahren 149
11.5 Parameteridentifikation in Differenzialgleichungen 150
11.5.1 Grundlagen 150
11.5.2 Weiterführende Bemerkungen 152
12 Optimale Steuerung 155
12.1 Einführung 155
12.2 Umwandlung in eine nichtlineare Optimierungsaufgabe 155
12.3 Aufbau des Algorithmus 156
12.4 Implementierte numerische Methoden 157
13 Form- und Strukturoptimierung 161
13.1 Zusammenhang zwischen Bemessungsvariablen und Zustandsvariablen 161
13.2 Lösung von Strukturoptimierungsproblemen mit SQP-Verfahren 163
13.3 Ein weiteres Beispiel 166
14 Optisoft – Ein C++-Softwaresystem zur Optimierung 167
14.1 Einführung 167
14.2 Allgemeine Informationen über Optisoft 168
14.3 Handhabung von Optisoft 170
14.3.1 Formulierung eines Problems 171
14.3.2 Auswahl des Algorithmus 182
14.4 Übersicht über Softwarepakete 184
Anhang A Referenzmanual 187
Anhang B Liste der Beispiele 193
Literatur 195
Stichwortverzeichnis 199