Optimierung mit Hilfe der Scilab-Funktion optim und mit C++
|
Beschreibung der Inhalte der Quelltexte
001_uebung3_loesung.sce Wiederholung der Lösung zur Übung3 002_uebung3_gesamtsyste_simulieren.sce Aufbau eines Simulationsmodells des Schwinger-Tilger-Systems mit Hilfe von Scilab 003_optimierung_berechnung_gesamtenergie.sce Minimiert soll die im Modell nach einem Simulationslauf noch vorhandene Gesamtenergie werden. Wie diese berechnet werden kann, wird hier gezeigt. 004_optimierung_erstellen_fehlerfunktion.sce Die Berechnung der Gesamtenergie wird in eine Funktion gepackt. Die Gesamtenergie am Ende der Simulation ist nun der zu minimierende "Fehler". 004b_anderer_eigenmode.sce Es zeigt sich, dass die nach den in Übung 3 angestellten theoretischen Überlegungen gefundene Lösung nicht wirklich optimal ist. Es werden Überlegungen zu Bedinungen angestellt, unter denen sie optimal sein könnte. 005_anpassungen_fuer_optim.sce Scilab verfügt über eine Optimierungsfunktion "optim". Um diese verwenden zu können, werden einige Anpassungen an der Fehlerfunktion vorgenommen. 006_vorversuch_mit_optim.sce Um die Verwendung von "optim" zu verstehen, wird eine einfache Funktion als Vorversuch optimiert. 007_verwendung_von_optim.sce Nun werden die Parameter C2 und D2 für das Schwinger-Tilger-Modell mit Hilfe der Scilab-Funktion "optim" optimiert. 008_simulation_mit_cpp.cpp Nach noch nicht befriedigenden Ergebnissen mit "optim", wird das Schwinger-Tilger-Modell auf ein C++-Simulationsprogramm übertragen. vergleich_simulation_cpp_scilab.sce Die Zeitschrittweite Δt muß für das in C++ verwendete Runge-Kutta-Verfahren deutlich kleiner eingestellt werden, als für den ode-Solver in Scilab. 009_optimierung_mit_cpp.cpp Implementierung eines modifizierten Gradientenverfahrens in C++ test_ergebnis_opti_cpp.sce Überprüfen der Ergebnisse aus dem C++-Programm mit Hilfe von Scilab.
Code 0-1: Beschreibung der Inhalte der Quelltexte
Empfehlung zum Umgang mit den Quelltexten
|
Ergänzung: Verwendung von optim bei neuen Scilab-Versionen
Siehe auch die Scilab-Hilfe unter "optim".
[fopt, xopt, gopt] = optim(list(NDcost,berechneFehler), "b", x0.*0.001, x0.*1000.0, x0);
Code 0-1: Aktualisierte Benutzung von optim bei Scilab 5.5
Term | Bedeutung |
---|---|
x0 | Start-Vektor bei Parametersuche |
x0.*0.001 | Festlegen der unteren erlaubten Grenze |
x0.*1000.0 | Festlegen der oberen erlaubten Grenze |
fopt | Bester erreichter Fehler |
xopt | Bester gefundener Paramatersatz |
gopt | Steigungsvektor beim Erreichen von fopt |
berechneFehler | Fehlerfunktion |
NDcost | Festlegen eines Verfahrens, bei dem Steigungen mit diskreten Schrittweiten bestimmt werden. |
Tabelle 0-1: Bedeutung der auftretenden Terme