Modellierung und Simulation: Simulation

4. Simulation

4.1 Implementierung

Hat man ein Modell aufgestellt, so möchte man als nächstes mit Hilfe des Modells Aussagen über das modellierte System bekommen. In wenigen Fällen kann man analytisch, also durch mathematische Umformungen Eigenschaften des Modells herleiten. Die Simulation stellt ein wichtiges Werkzeug dar, um Erkenntnisse über das modellierte System zu erhalten.

Ein mathematische Modell besteht aus einer Reihe von mathematischen Beziehungen. Häufig sind dies Gleichungen, eventuell auch Ungleichungen. Die Gleichungen beschreiben zum Beispiel den Zustand des Systems zu einem Zeitpunkt als Funktion der Zustände des Systems zu früheren Zeitpunkten. In vielen Fällen handelt es sich dabei um Differentialgleichungen oder Integralgleichungen. Dies gilt dann, wenn man eine kontinuierliche Folge von Zuständen betrachtet, die Zeit also als kontinuierliche Variable betrachtet wird. Auch wenn dies auf den ersten Blick als natürlich erscheinen mag, gibt es Systeme, bei denen es sich anbietet, die Zeit diskret zu behandeln. Wir sind darauf schon im Abschnitt Dynamik eingegangen. Wenn man ein Modell in einem Computerprogramm simulieren will, muß man immer eine diskrete Zeit wählen. Ein Computer ist nicht in der Lage, mit kontinuierlichen Variablen zu arbeiten (abgesehen von Programmpaketen, die algebraische Umformungen durchführen können; solche Programmpakete sind für Simulationen aber ungeeignet). Die Implementierung des Modells kann grob in folgenden Schritten durchgeführt werden:

  1. Ausgehend von den mathematischen Gleichungen, die das Modell beschreiben, ist als erster Schritt ein Algorithmus zu finden, der diese Gleichungen löst. Zu einem solchen Algorithmus gehört auch, bei kontinuierlichen Modellen eine geeignete Diskretisierunng der kontinuierlichen Variablen zu finden.
  2. Als nächstes ist eine Programmiersprache oder ein geeignetes Programmpaket festzulegen, in dem die Implementierung vorgenommen werden soll. Neben gängigen Programmiersprachen wie C, C++, Java, Fortran gibt es auch Programmpakete, die auf einer höheren Ebene eine Implementierung ermöglichen. Die Auswahl richtet sich dabei zum einen nach den Kenntnissen der Mitarbeiter, aber insbesondere auch danach, welche Vorarbeiten schon geleistet wurden. Für viele Algorithmen zur Lösung unterschiedlicher Probleme gibt es fertige Routinen. Diese Routinen sind häufig ausgiebig getestet und sehr stabil. Wenn es möglich ist, solche Routinen zu nutzen, sollte man das tun, um Zeit zu sparen und mögliche Fehlerquellen bei der Programmierung zu eliminieren.
  3. In einem nächsten Schritt wird das Modell programmiert. Dabei ist von Beginn an auf eine ausführliche Dokumentation (siehe Abschnitt Dokumentation) und auf eine strukturierte Programmierung zu achten. Andernfalls ist die Fehlersuche und die Einarbeitung neuer Mitarbeiter unmöglich.
  4. Nach der Programmierung muß das erstellte Programmpaket ausführlich getestet werden. Dabei geht es nicht nur um die selbstverständliche Elimination von Programmierfehlern. Ein wesentliches Problem ist, das Computer nicht beliebig genau rechnen. Die Rechengenauigkeit ist zwar sehr hoch, trotzdem können anfängliche kleine Rundungsfehler bei einem nichtlinearen Problem zu sehr großen Fehlern im Endresultat führen. Fertige Routinen sind in der Regel, aber nicht immer, in dieser Hinsicht getestet und optimiert. Es gibt unterschiedliche Techniken, mit denen Rundungsfehler und speziell deren Fortpflanzung kontrolliert und minimiert werden können.
  5. Abhängig davon, wer das Programm schließlich bedienen soll, kann man eine Benutzeroberfläche vorsehen. Unerläßlich ist neben der Dokumentation eine Bedienungsanleitung. Außerdem muß festgelegt werden, wie die erzeugten Daten weiterzuverarbeiten oder zu analysieren sind.

4.2 Durchführung der Simulation

Die Durchführung der Simulaton richtet sich nach der ursprünglichen Fragestellung. Sie gibt vor, welche Daten am Ende benötigt werden. Die Simulation selbst sollte außerdem vorher gut geplant werden. Da Simulationen speziell bei komplizierteren Modellen unter Umständen sehr lange Laufzeiten haben, verursacht eine schlecht geplante Simulation, die später in modifizierter Form wiederholt werden muß, vermeidbare zusätzliche Kosten.

Häufig werden die Daten, die das Simulationsprogramm liefert, zunächst abgespeichert und erst später weiterverarbeitet. In manchen Fällen ergeben sich auch aus der Analyse der Daten neue Fragen, die eine spätere Verarbeitung der Daten notwendig machen. Daher ist es notwendig, für alle berechneten Daten genau zu dokumentieren, mit welchen Parametern und welchen Einstellungen sie vorgenommen wurden. Nur so lassen sich die Daten später eindeutig zuordnen. Nicht ausreichend dokumentierte Daten sind für spätere Auswertungen wertlos.

4.3 Visualisierung

Für viele Zwecke kann eine Visualisierung der Daten nützlich sein. Es gibt je nach Fragestellung sehr unterschiedliche Möglichkeiten zur Visualisierung. Neben gängigen Diagrammen kann man auch eine dynamische Visualisierung, etwa in Form eines Films in Betracht ziehen. Hierfür gibt es spezielle Programmpakete, die zum Teil sehr komfortabel sind. Es ist sinnvoll, die Möglichkeit einer Visualisierung schon bei der Planung zu berücksichtigen. In vielen Fällen werden für die Visualisierung zusätzliche Daten benötigt, die von dem Simulationsprogramm zur Verfügung gestellt werden müssen.

4.4 Optimierung

Schon während der Implementierung, aber auch während der Simulation können Optimierungen vorgenommen werden. Sie betreffen zum Beispiel die Rechengeschwindigkeit, den Speicherbedarf, aber auch die Rechengenauigkeit oder Benutzerfreundlichkeit. Rechengeschwindigkeit und Speicherbedarf sind wesentliche Aspekte für entstehende Kosten. Die Rechengenauigkeit kann, wenn nötig, durch geeignete Maßnahmen erhöht werden. In manchen Fällen kann es aber auch sinnvoll sein, sie zu Gunsten von Rechengeschwindigkeit oder Speicherbedarf zu senken. Alle genannten Aspekte können nicht gleichzeitig optimiert werden. Man kann zum Beispiel die Rechengenauigkeit auf Kosten des Speicherbedarfs erhöhen. Die Optimierung richtet sich daher nach den Bedürfnissen des jeweiligen Projekts.

Oft wird eine Optimierung der Rechenzeit mit dem Hinweis auf die schnellen Prozessoren als unnötig abgetan. In der Tat fällt eine Reduktion der Kosten für die reine Rechenzeit kaum ins Gewicht. Man muß sich aber klar machen, daß eine längere Rechenzeit auch eine längere Arbeitszeit und damit höhere Personalkosten verursachen kann.



Mit ICRA gekennzeichnet. Valid HTML 4.0! Valid CSS!

Copyright (c) Andreas Mielke 1999-2010. Letzte Änderung: 04.03.2011. info@andreas-mielke.de