Definition und Zielsetzung
Der Verein deutscher Ingenieure (VDI) definiert Simulation
allgemein als die
„Nachbildung eines Systems mit seinen dynamischen Prozessen
in einem experimentierfähigen Modell, um zu Erkenntnissen zu gelangen, die auf
die Wirklichkeit übertragbar sind” ( [VDI 1993]).
Der Einsatz von Simulation empfiehlt sich immer dann, wenn
Experimente und Messungen in der Realität zu langsam
(Bevölkerungsentwicklungen), schnell (Explosionsverhalten), gefährlich
(Crashtests), unmöglich (Urknall) oder teuer (Fabrikplanung) wären, da bei
komplexen Realsystemen die Grenzen analytischer Methoden und Beschreibungen
schnell erreicht sind. Simulation dagegen kann, eine geeignete Modellierung
vorausgesetzt, auch sehr umfangreiche Systeme handhaben und dem Anwender die
Zusammenhänge der einzelnen Systemvariablen deutlich machen (vgl. [Kuhn et al.
1993], S. 1ff.). Mit Simulationsexperimenten wird das zeitliche
Ablaufverhalten von Systemen abgebildet; zusätzlich kann es protokolliert, reproduziert,
analysiert und interpretiert werden. Ebenfalls werden Sensitivitätsanalysen
möglich.
Mit Simulation können bestehende Systeme iterativ optimiert
werden, bspw. durch effizienteren Einsatz von Ressourcen oder die Verbesserung
von Steuerungsstrategien zur Laufzeit. Zudem kann die Planung noch nicht
existenter Systeme unterstützt werden: Allein die schlichte
Systemvisualisierung erleichtert die Analyse komplexer Zusammenhänge ungemein
und erlaubt den Einsatz von Simulationsmodellen als Schulungsinstrument. Alles
in allem bringt der geschickte Einsatz von Simulation in praxi oftmals
erhebliche Kostenvorteile mit sich, bzw. deckt Kostenrisiken erst auf oder
verschafft eine höhere Investitionssicherheit.
Andererseits ist die zur Gewinnung valider Erkenntnisse über
das Realsystem notwendige Isomorphie zwischen dem System und dem zu bildenden
Modell schwer zu gewährleisten. Außerdem kann eine schlechte Datenbasis die
Ergebnisse dramatisch verfälschen, was allerdings kein simulationsspezifischer
Nachteil ist. Es ist zu bedenken, dass Simulationsstudien an sich aufwendig und
damit teuer sind, ein Erfolg aber nicht garantiert werden kann. Zudem sind
echte Simulationsexperten nicht einfach zu finden.
Simulation wird oft als Allheilmittel zur Systemverbesserung
oder gar zur Optimierung missverstanden. In Wahrheit liefert Simulation jedoch
im besten Fall ein Optimum unter den getroffenen Annahmen. Sind diese falsch,
kann ein Modell schnell scheitern.
Es ist absehbar, dass sich der Einsatz von Simulationstechniken
in Zukunft mit der Verfügbarkeit schnellerer Rechner und immer leichter
bedienbarer Werkzeuge weiter verstärken wird. Eine Grenze der Möglichkeiten der
Simulation ist prinzipiell nicht in Sicht.
Aspekte der Modellierung realer Systeme
Fast jedes Realsystem ist in irgendeiner Form problembehaftet
(vgl. [Liebl 1995, S. 113ff.]), so dass die Modellierung der
problemrelevanten Bestandteile und Eigenschaften zu wünschenswerten
Verbesserungen führen könnte. Ein Modell besitzt im Gegensatz zum Realsystem
lediglich eine definierte Menge an Variablen, die das prinzipielle Verhalten
eines Systems abbilden (vgl. [Smith 1968, S. 1]). Dabei werden nur die
relevanten Parameter und Einflussgrößen berücksichtigt. Ein Modell soll das
reale System abstrahieren und auf die Fragestellung schnell eine
aussagekräftige Antwort geben. Bei der Modellerstellung darf nie das Ziel der
Untersuchung aus den Augen gelassen werden; ein Modell allein besitzt keine
Existenzberechtigung. Zusätzlich unterliegt die Modellierung eines Systems verschiedenen
Einflüssen, die u. U. zu einer verzerrten Darstellung führen.
Modelle lassen sich wie folgt klassifizieren:
- Deterministisch/stochastisch:
Wenn der Eintritt einer Zustandsänderung mit
einer gewissen Wahrscheinlichkeit behaftet ist, heißt ein Modell stochastisch.
Dabei werden verschiedene Wahrscheinlichkeitsverteilungen empirischer oder
theoretischer Art verwendet, um das reale Verhalten möglichst gut nachzuahmen.
- Diskret/kontinuierlich:
Ändern sich Systemvariablen und -zustände
diskret, heißt ein Modell diskret, ansonsten kontinuierlich (vgl. [Liebl 1995,
S. 9]). In diskreten Modellen besitzen die Systemvariablen fest definierte
Zustände, zwischen denen sie wechseln können, z.B.: Frei, In Arbeit, Blockiert,
Wartend und Unterbrochen. Neben der strikten Trennung von diskreter und
kontinuierlicher Simulation existiert auch die Möglichkeit, beide Typen zu
kombinieren.
- Fixe oder
variable Zeitinkremente: Die Zeitsteuerung
während einer Simulation kann mittels fixer oder variabler Zeitintervalle
geschehen. Für die diskrete Simulation von Systemen hat sich i.d.R. die
variable Zeiteinteilung als vorteilhaft herausgestellt. Dabei wird die
Simulationszeit mit den Eintrittszeitpunkten aufgetretener Ereignisse
inkrementiert. Die Alternative besteht darin, jeweils um ein festes
Zeitintervall zu inkrementieren und dann alle eingetretenen Zustandsänderungen
und deren Abhängigkeiten zu bestimmen. Letzteres ist leichter zu
implementieren, es besteht aber die Notwendigkeit der Sequenzierung und
Synchronisation, was den Rechenaufwand ebenso erhöht wie Zeitinkremente ohne
Ereignisse.
- Stationär/nicht
stationär: Stationäre Modelle werden i. Allg.
nach einer Einschwingphase in einen gleichgewichtigen Zustand eintreten. In
diesem sind die Outputvariablen nicht mehr trendbehaftet, wobei sie jedoch
durchaus eine hohe Varianz aufweisen können. Die Einschwingphase kann die
Outputgrößen positiv oder negativ verzerren, so dass sie ggf. entfernt werden
muss. Stationäre Modelle haben prinzipiell einen unendlichen Zeithorizont, im
Gegensatz zu den nicht stationären. Diese weisen oftmals Strukturbrüche während
ihres Ablaufs auf (z.B. variierende Ankunftsraten) oder haben ein natürliches
Ende, welches den Eintritt des stationären Zustands verhindert. Ob ein Modell
als stationär oder nicht stationär simuliert wird, hängt stark vom jeweiligen
Untersuchungszweck ab.
Parallele
und verteilte Simulation
Wie viele andere
rechenintensive Aufgaben auch, können große Simulationsmodelle durch eine
geeignete Parallelisierung bzw. Verteilung auf verschiedene Prozessoren in
ihrer Laufzeit verkürzt werden; außerdem steht auf diese Weise mehr
Hauptspeicher zur Verfügung.
Die „parallele und
verteilte Simulation“ (vgl. [Fujimoto 2000]) kann dabei auf verschiedene Arten
genutzt werden, um einen Simulationslauf zu beschleunigen:
Eine bloße Verteilung
häufig benötigter Routinen (Generierung von Pseudozufallszahlen, statistische
Berechnungen, usw.) auf andere Prozessoren (vgl. [Mehl 1994, S. 7]) kann
bereits sequenzielle Simulationsmodelle ohne Auswirkungen auf die Modellierung
beschleunigen. Weitere Geschwindigkeitssteigerungen sind darüber hinaus nur zu
erzielen, wenn das Modell selbst verteilt wird, also verschiedene Ereignisse
desselben Laufs auf unterschiedlichen Prozessoren berechnet werden. Die so
entstehenden Submodelle werden jeweils von einem eigenen ereignisgesteuerten
Simulator ausgeführt und als logische Prozesse (LP) bezeichnet.
Damit die Simulation
tatsächlich beschleunigt wird, ist eine geeignete Verteilung des Modells zu
finden. Dies erweist sich als nicht trivial (vgl. [Mehl 1994, S. 9ff.]).
Softwaresysteme zur Simulation
Simulationswerkzeuge dienen in erster Linie der Unterstützung
der Durchführung von Simulationsstudien. Prinzipiell kann zwischen allgemeinen
und speziellen Werkzeugen unterschieden werden.
Zu allgemeinen Werkzeugen ist jede Programmiersprache
(z. B. Fortran, C, C++, C#, Pascal, Delphi, JAVA etc.) zu zählen. Je nach
Komplexität des Systems und spezieller Anforderungen an z. B.
Geschwindigkeit oder Speichereffizienz kann es notwendig werden, ein
Simulationsmodell direkt in einer dieser Sprachen zu erstellen. Für die meisten
Programmiersprachen liegen mittlerweile leistungsstarke Funktions- bzw.
Klassenbibliotheken vor.
Zusätzlich existieren spezielle Werkzeuge zur Erstellung von
Simulationsprogrammen. Dies sind zum einen für die besonderen Anforderungen der
Simulation konzipierte Simulationssprachen, z.B. Simscript, GPSS, Simula oder
MODSIM. Daneben gibt es visuelle Systeme, die mit grafischen Elementen die
Erzeugung von Simulationsprogrammen unterstützen (z.B. Simprocess, Plant
Simulation [ehemals eM-Plant], Arena, ProModel etc.).
Die Abgrenzungen zwischen den einzelnen Kategorien verschwimmen
mehr und mehr.
Jede Simulationsumgebung sollte bestimmte Grundfunktionalitäten
zur Verfügung stellen. Zu diesen zählen Generierung von Zufallszahlen
unterschiedlichster Verteilungen, Management der Simulationszeit
(diskret/kontinuierlich), Ereignishandling, Warteschlangenmanagement,
Datensammlung, Datenanalyse und Reportgenerierung. Weitere Qualitätsaspekte,
die einen entscheidenden Einfluss auf die Handhabbarkeit haben, sind
Portierbarkeit sowie Art und Qualität der Dokumentation.
Im Allgemeinen gilt ein in einer Programmiersprache direkt
umgesetztes Modell aufgrund der niedrigeren Abstraktion als viel zeit- und
ressourcenaufwendiger in der Entwicklung, aber auch weitaus performanter als ein
(visuelles) Simulationstool.
Vorgehensmodelle für Simulationsstudien
Eine Simulationsstudie kann durchaus wie ein „normales“ Projekt
behandelt werden. Die Anwendung eines strukturierten Vorgehens ist folglich
ebenso wichtig wie in jedem anderen Projekt. Von Anfang an müssen dabei Fehler
im Projektablauf vermieden und gemeinsam mit dem Auftraggeber abgestimmte
Zielsetzungen konsequent verfolgt werden.
Law und Kelton haben ein Modell zur Durchführung einer
Simulationsstudie vorgeschlagen, dass sie „Steps of a sound simulation study”
nennen (vgl. [Law/Kelton 2000]).
- Vorstudie:
Zunächst muss eine genaue Problemdefinition durch und mit dem Auftraggeber
erfolgen.
- Konzeptuelle
Modellierung und Datensammlung: Informationen über die Systemstruktur und
-abläufe müssen unter Zuhilfenahme diverser Erhebungstechniken gesammelt
werden. Ebenfalls sehr früh sollten repräsentative Input-Daten erhoben werden,
weil mit deren Vorhandensein die Studie steht und fällt.
- Validierung:
In dieser Phase wird die Frage nach der Gültigkeit des konzeptuellen Modells
gestellt. Dies kann bspw. mittels strukturierter Modellüberprüfungen, welche
von den beteiligten Experten gemeinsam durchgeführt wird, erfolgen. Ist das
Modell nicht valide, wird zu Schritt 2 zurückgesprungen.
- Implementierung:
Das Modell wird in der gewählten Entwicklungsumgebung umgesetzt. Das
entstehende Programm muss anschließend verifiziert werden, um zu garantieren,
dass das Simulationsprogramm (technisch) korrekt läuft.
- Testläufe:
Das Simulationssystem wird mit echten Daten getestet, die bspw. aus existenten,
vergleichbaren Systemen stammen oder plausibel generiert wurden.
- Validierung
des implementierten Modells: Anwendungs- und Simulationsexperten sollen
nochmals die Korrektheit feststellen. Es gibt nach Law und Kelton zum einen
keinen „richtigen Weg“, ein noch nicht existentes System zu validieren, zum
anderen gebe es nur sehr wenige „echte“ Validierungstechniken. Sinnvoll seien
in jedem Fall Expertengespräche und eine gute Dokumentation. Kein
nichttriviales Modell kann jemals total validiert werden. Durch gezieltes
Verändern der Inputdaten kann außerdem eine Sensitivitätsanalyse durchgeführt
werden, um die wirklich relevanten Inputfaktoren zu determinieren und damit die
nachfolgende Experimentation zu verkürzen. Auch nach der erneuten Validierung
ist ein Rücksprung vorgesehen, falls das Modell nicht standhält.
- Experimentationsdesign:
Für jede zu untersuchende Systemkonfiguration werden die Länge des
Simulationslaufes und der Anlaufphase sowie die Anzahl der unabhängigen
Laufwiederholungen (Replikationen) spezifiziert. Dabei kann die Zahl der
Replikationen durch die Kombinatorik bei vielen zu untersuchenden
Einflussgrößen leicht prohibitiv groß werden, um in der geplanten Zeit zu den
gewünschten Ergebnissen zu gelangen. Ein gutes Design ist also für den Erfolg
der Studie von zentraler Bedeutung.
- Produktionsläufe
durchführen: Die Produktionsläufe sollten sorgfältig protokolliert werden,
um anschließend die gewünschten Analysen durchführen zu können.
- Outputanalyse:
Hauptziele sind oft die Bestimmung absoluter Leistungskennzahlen von Systemen,
der Vergleich verschiedener Konfigurationen oder die Optimierung des Vektors
der Inputfaktoren. Letzteres ist das weitaus schwierigste Ziel, wird aber
mittlerweile durch einige Softwarepakete unterstützt, welche mittels
Optimierungsalgorithmen die Inputfaktoren derart variieren, dass die
Outputzielgröße iterativ verbessert wird.
- Dokumentation, Ergebnispräsentation: Die Dokumentation sollte
eigentlich studienbegleitend durchgeführt werden. Alle Annahmen, das
entwickelte Simulationssystem sowie die Ergebnisse müssen sehr gut dokumentiert
und dem Auftraggeber präsentiert werden. Die Ergebnisse müssen dabei sowohl
valide als auch glaubwürdig sein.
Anschließend gilt es, die gewonnenen Erkenntnisse auf das
Realsystem zu übertragen. Neben der Dokumentation muss es selbstverständlich
weitere übergreifende Tätigkeiten geben, die jedoch nicht im Ursprungsmodell
genannt sind, bspw. ein Projektmanagement.
Literatur
VDI-Richtlinie 3633: Simulation von Logistik-,
Materialfluss- und Produktionssystemen - Grundlagen. Düsseldorf : VDI Verlag,
1993.
Kuhn, A.; Reinhardt, A.; Wiendahl, H.-P.: Handbuch
Simulationsanwendungen in Produktion und Logistik. Braunschweig : Vieweg 1993.
Law, A. M.:
Simulation Modeling and Analysis. Boston : McGraw Hill, 4th edition 2007.
Fujimoto, R. M.: Parallel
and distributed Simulation Systems. New Xork : Wiley
2000.
Mehl, H.: Methoden
verteilter Simulation. Braunschweig : Vieweg 1994.
Smith, J.: Computer Simulation Models. London : Griffin 1968.
Liebl, F.: Simulation. München : Oldenbourg, 1995.