Optimierung Offline Simulation: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(14 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= Problem =
= Problem =
Das Ausführen der Simulation benötigt zu viel Zeit. Dadurch kann keine Echtzeitfähigkeit simuliert werden. Ebenfalls dauert das Durchlaufen einer Simulation zu lange.
Wünschenswert ist eine Verkürzung der Simulationszeit auf ein Echteztiähnliches Verhalten.
= Ansatz =
= Ansatz =
#Der Ansatz sieht vor, dass in einem ersten Schritt die benötigte Simulationszeit pro Modul berechnet wird, um die "Zeitkiller" zu detektieren.
#Nun können die "Zeitkiller" detailliert betrachtet und analysiert werden.
#Nach der Implementierung der Optimierung sollte Schritt 1 und 2 erneut durchlaufen werden, bis das gewünschte Ergebnis erreicht ist.
#Auch nach Abschluss der Optimierung sollte in regelmäßigen Abständen eine Zeitanalyse durchgeführt werden.
= Lösung =
= Lösung =
:''1. Ermittlung der Simulationszeit''
Zur Ermittlung der Simulationszeit kann man sich von Simulink einen ''Profiler Report'' erstellen lassen. Dieser Bericht enthält dann alle wesentlichen Zeitwerte für die einzelnen Funktionen und Blöcke. Während der Profiler läuft dauert die Simulation ca. doppelt so lang wie üblich, da jeder Rechenschritt mitgeschrieben und analysiert wird. Am Ende des Durchlaufes erhält man einen Bericht in Form einer .html-Seite. Die aktuelle Ausgabe des Profile Reports lässt sich als [[Profile_Report.zip]] herunterladen. Gestartet wird der Report über die Datei main.html.
Wenn man sich den Bericht anguckt, dann kann man direkt alle Teile überspringen, welche nicht mit ''CCF_Online'' anfangen, da diese nicht veränderlich sind, sondern durch Simulink selbst gesetzt werden.
Die jetzt noch übrigen Auswertungen haben immer den gleichen Aufbau. Zuerst kommt der Name, dann die Zeit im Totalen und die Prozentzahl an der Gesamtlaufzeit der Simulation. Anschließend erfolgt eine Statistik über die Aufrufe des Blockes und die Durchschnittliche Zeit pro Aufruf. Der letzte Wert gibt an, wie viel Zeit Simulink zur Ausführung der Funktion ohne ihre Abhängigkeiten benötigt hat und wie viel Zeit dies von der eigentlichen Laufzeit des jeweiligen Modules ist.
<br/>
<br/>
:''2.Ermittlung der Zeitkiller''
Nach Auswertung des Reports stellt sich heraus, dass 4.8% der Zeit für die Darstellung im Plot benötigt wird. Ebenfalls sehr zeitraubend ist die Simulierung der Sensoren für die Abstandsregelung. Dies liegt daran, dass diese Funktion sich einer MatLab-Function bedienen. Der Aufruf der MatLab-Function aus Simulink heraus ist sehr aufwendig.
<br/>
<br/>
:''3.Lösung''
Eine mögliche Lösung ist die SFunction und MatLab-Funktion durch Logiken nachzubilden und damit die Laufzeit zu optimieren. Jedoch ist hierbei darauf zu achten, ob eine Logik durch ihre Komplexität die Laufzeit tatsächlich verringert und nicht erhöht.
= TODO =
#Ermittlung der Zeitkiller
#Eleminierung der Zeitkiller


_______________________________________________<br/>
_______________________________________________<br/>
[[Praktikum_SDE|zurück]]
[[Praktikum_SDE|zurück]]

Aktuelle Version vom 25. Juni 2014, 12:22 Uhr

Problem

Das Ausführen der Simulation benötigt zu viel Zeit. Dadurch kann keine Echtzeitfähigkeit simuliert werden. Ebenfalls dauert das Durchlaufen einer Simulation zu lange. Wünschenswert ist eine Verkürzung der Simulationszeit auf ein Echteztiähnliches Verhalten.

Ansatz

  1. Der Ansatz sieht vor, dass in einem ersten Schritt die benötigte Simulationszeit pro Modul berechnet wird, um die "Zeitkiller" zu detektieren.
  2. Nun können die "Zeitkiller" detailliert betrachtet und analysiert werden.
  3. Nach der Implementierung der Optimierung sollte Schritt 1 und 2 erneut durchlaufen werden, bis das gewünschte Ergebnis erreicht ist.
  4. Auch nach Abschluss der Optimierung sollte in regelmäßigen Abständen eine Zeitanalyse durchgeführt werden.

Lösung

1. Ermittlung der Simulationszeit

Zur Ermittlung der Simulationszeit kann man sich von Simulink einen Profiler Report erstellen lassen. Dieser Bericht enthält dann alle wesentlichen Zeitwerte für die einzelnen Funktionen und Blöcke. Während der Profiler läuft dauert die Simulation ca. doppelt so lang wie üblich, da jeder Rechenschritt mitgeschrieben und analysiert wird. Am Ende des Durchlaufes erhält man einen Bericht in Form einer .html-Seite. Die aktuelle Ausgabe des Profile Reports lässt sich als Profile_Report.zip herunterladen. Gestartet wird der Report über die Datei main.html. Wenn man sich den Bericht anguckt, dann kann man direkt alle Teile überspringen, welche nicht mit CCF_Online anfangen, da diese nicht veränderlich sind, sondern durch Simulink selbst gesetzt werden. Die jetzt noch übrigen Auswertungen haben immer den gleichen Aufbau. Zuerst kommt der Name, dann die Zeit im Totalen und die Prozentzahl an der Gesamtlaufzeit der Simulation. Anschließend erfolgt eine Statistik über die Aufrufe des Blockes und die Durchschnittliche Zeit pro Aufruf. Der letzte Wert gibt an, wie viel Zeit Simulink zur Ausführung der Funktion ohne ihre Abhängigkeiten benötigt hat und wie viel Zeit dies von der eigentlichen Laufzeit des jeweiligen Modules ist.

2.Ermittlung der Zeitkiller

Nach Auswertung des Reports stellt sich heraus, dass 4.8% der Zeit für die Darstellung im Plot benötigt wird. Ebenfalls sehr zeitraubend ist die Simulierung der Sensoren für die Abstandsregelung. Dies liegt daran, dass diese Funktion sich einer MatLab-Function bedienen. Der Aufruf der MatLab-Function aus Simulink heraus ist sehr aufwendig.

3.Lösung

Eine mögliche Lösung ist die SFunction und MatLab-Funktion durch Logiken nachzubilden und damit die Laufzeit zu optimieren. Jedoch ist hierbei darauf zu achten, ob eine Logik durch ihre Komplexität die Laufzeit tatsächlich verringert und nicht erhöht.

TODO

  1. Ermittlung der Zeitkiller
  2. Eleminierung der Zeitkiller



_______________________________________________
zurück