Optimierung mit Hilfe der Scilab-Funktion optim und mit C++
- In der Vorlesung vom 11.01.2010 wird erneut die Übung 3 betrachtet (Tilger-System).
- Im Verlauf der Entwicklung mehrerer aufeinander aufbauender Scilab-Skripte, wird schließlich ein Programm zur Parameteroptimierung entwickelt und getestet.
- Abschließend wird versucht, ein ähnliches Programm mit Hilfe von C++ zu entwickeln.
|
vorlesung_sim_11_januar_2010.zip - Der Vorlesung zugrunde liegende Quellcodes.
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
- Analysieren Sie die Quelltexte und testen Sie sie.
- Versuchen Sie eine Optimierung für folgendes System zu realisiren:
- Gegeben sei wieder der Schwinger aus Übung3 mit und m1,C1 unter Verwendung der gleichen Anfangsbedingungen und Simulationsdauer, wie in der hier zuvor vorgenommenen Optimierung.
- Anstatt einer Tilgermasse wirkt nun eine Kraft F=q*sin(t+p), mit q=10N, der Zeit t und der Phase p.
- Wählen Sie die Phase p so, dass am Ende der Simulation möglichst viel Energie aus dem Schwinger genommen wurde.
|