Entwicklung von Simulationsmodellen WS 2007/08 Dr. Falk-Juri Knauft Mittwoch 9.15 Uhr – 10.00 Uhr S25 Praktikum zur Entwicklung von Simulationsmodellen: Mittwoch 14.00 Uhr – 17.00 Uhr GEO CIP-Pool Modul: 22a http://www.bayceer.uni-bayreuth.de/mod/html/ws0708/geooekologie/simulationsmodelle Entwicklung von Simulationsmodellen WS 2007/2008 – Überblick I 17.10.2007 Einführung, Ziele, Definition System, Model 24.10.2007 Systemanalyse vs. –simulation, Zustandsbeschreibung 31.10.2007 Diskretisierung, Auswertung der Excel-Simulation 07.11.2007 Programmierparadigmen 14.11.2007 21.11.2007 28.11.2007 05.12.2007 12.12.2007 19.12.2007 http://www.bitoek.uni-bayreuth.de/mod/html/ws0708/geooekologie/simulationsmodelle http://www.bayceer.uni-bayreuth.de/mod/html/ws0708/geooekologie/simulationsmodelle Paradigmen der Programmierung • Motivation • Definition Algorithmus • Prozedurale Programmierung • Deklarative Programmierung • - Funktionale Programmierung - Logische Programmierung Objektorientierte Programmierung Unter einem Paradigma versteht man eine forschungsleitende Perspektive oder Sichtweise, die für eine bestimmte Zeit und bestimmte Gruppe von Wissenschaftlern konsensbildend ist. (nach Thomas S. KUHN, 1976) Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Motivation: Diese Vorlesung soll es Ihnen ermöglichen,... durch Kenntnis der wesentlichen Programmier-Paradigmen ... dasjenige auszuwählen,... welches Ihnen am besten erlaubt ... Ihr spezifisches Simulationsproblem zu lösen. Problem 1 Objektorient. Programm. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Problem: Wie kommt der Nagel in den Balken? Hilfsmittel: • Schraubenzieher • Bohrmaschine • Säge • Hammer Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Motivation: Diese Vorlesung soll es Ihnen ermöglichen,... durch Kenntnis der wesentlichen Programmier-Paradigmen ... dasjenige auszuwählen,... welches Ihnen am besten erlaubt ... Ihr spezifisches Simulationsproblem zu lösen. Problem 1 Problem 2 Objektorient. Programm. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Problem: Modellierung des waagerechten Wurfes Höhe m Höhe m Zeit s Weg m Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Motivation: Diese Vorlesung soll es Ihnen ermöglichen,... durch Kenntnis der wesentlichen Programmier-Paradigmen ... dasjenige auszuwählen,... welches Ihnen am besten erlaubt ... Ihr spezifisches Simulationsproblem zu lösen. Problem 1 Problem 2 Problem 3 Objektorient. Programm. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Problem: Zuordnung räumlich bezogener Informationen Projekt ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 ewexpo2000 Abteilung Par. A Par. B Par. C Par. D Baumart Höhe Par. E Projekt BHD Alter 3060100 1 1 1 6 112 34 0 ewexpo2000 23,4 116 3060100 1 1 1 5 211 30 0 ewexpo2000 25,7 116 3060100 1 2 1 5 211 5 0 ewexpo2000 6 42 3060200 1 0 1 5 211 9 0 ewexpo2000 12,6 38 3060200 1 0 1 1 511 12 0 ewexpo2000 14,1 28 3060200 1 0 1 3 811 15 0 ewexpo2000 15,7 28 3070100 1 1 1 6 112 39 0 ewexpo2000 24,7 131 3070100 1 1 1 5 211 23 0 ewexpo2000 23,7 86 3070100 1 3 1 5 211 5 0 ewexpo2000 6 42 3070100 1 2 1 5 211 15 0 ewexpo2000 15,8 86 3070201 1 2 1 5 211 9 0 ewexpo2000 12,6 38 3070201 1 2 1 1 511 11 0 ewexpo2000 12,8 28 3070201 1 1 1 3 811 15 0 ewexpo2000 15,7 28 3070202 1 1 1 5 211 42 0 ewexpo2000 28,6 151 3070202 1 3 1 5 211 4 0 ewexpo2000 0 8 3070202 1 3 1 1 511 4 0 ewexpo2000 0 8 3100101 1 5 1 6 112 52 0 ewexpo2000 28,8 157 3100101 1 1 1 5 211 32 0 ewexpo2000 27,9 111 3100101 1 1 1 5 211 4 0 ewexpo2000 4,1 37 3100102 1 1 1 6 112 53 0 ewexpo2000 25,1 191 3100102 1 1 1 5 211 32 0 27,9 111 ewexpo2000 3100102 1 2 1 5 211 23 0 19,3 111 ewexpo2000 3100102 1 3 1 5 211 4 0 4,1 37 ewexpo2000 3100200 1 2 1 5 211 9 0 12,6 38 ewexpo2000 3100200 1 2 1 1 511 11 0 12,8 28 ewexpo2000 3100200 1 1 1 3 811 16 0 16,8 28 ewexpo2000 3780100 1 1 1 1 511 34 0 30,9 99 ewexpo2000 3780100 1 1 1 3 811 35 0 28,9 99 ewexpo2000 3780100 1 2 1 3 811 21 0 21,2 46 ewexpo2000 3780100 1 2 1 1 511 16 0 18,8 46 ewexpo2000 3780201 1 1 1 6 112 50 0 24,9 178 ewexpo2000 3780201 1 1 1 5 211 35 0 27,1 131 ewexpo2000 ewexpo2000 BA Par. F Per Par. G Abteilung 23,37 0 3060100 10,5 1,52 0 3060100 10,5 4,5 0 3060100 10,5 14,691 3060100 0 10,5 4,092 0 3060100 10,5 1,155 0 3060100 10,5 19,98 0 3060100 10,5 2,55 0 3060100 10,5 1,05 0 3060100 10,5 0,78 0 3060100 10,5 15,045 3060100 0 10,5 3,2 0 3060100 10,5 1,155 0 3060100 10,5 19,3 0 3060100 10,5 0,1 0 3060100 10,5 0,1 0 3060100 10,5 21,945 3060100 0 10,5 1,38 0 3060100 10,5 2,6 0 3060100 10,5 18,87 0 3060100 10,5 4,14 0 3060100 10,5 2,24 0 0,5 3060100 1 0,26 0 0,5 3060100 1 14,16 0 0,5 3060100 1 4,8 0 0,5 3060100 1 1,205 0 0,5 3060100 1 35,64 0 0,5 3060100 1 2,66 0 0,5 3060100 1 10,68 0 0,5 3060100 1 10 0 0,5 3060100 1 14,76 0 0,5 3060100 1 12,52 0 0,5 3060100 1 3060100 1 Nr 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 Art 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 BHD 29.7 38.6 32.9 38.4 35.3 40.9 27.7 19.8 30.2 23.2 19.9 27.0 34.8 41.6 24.3 32.3 41.3 20.2 27.5 32.6 41.0 29.7 35.1 27.9 42.0 36.9 37.0 30.2 29.9 29.7 38.3 45.6 16.8 h 21.9 23.6 23.7 23.6 24.1 24.2 22.5 20.4 22.5 21.5 20.9 21.5 23.8 24.6 21.1 23.0 24.8 19.8 22.6 23.1 24.9 22.5 24.0 22.8 25.8 24.5 23.8 23.6 22.4 22.2 23.2 25.0 19.1 kra 14.2 14.9 15.3 14.9 15.4 15.2 14.8 13.9 14.6 14.4 14.3 14.1 15.3 15.4 14.1 14.8 15.6 13.4 14.9 14.9 15.6 14.7 15.3 15.0 16.2 15.6 15.1 15.4 14.6 14.4 14.6 15.5 13.2 kd 5.4 6.9 5.8 6.9 6.2 7.3 4.9 3.6 5.4 4.1 3.6 4.9 6.2 7.4 4.4 5.8 7.3 3.7 4.9 5.8 7.2 5.3 6.2 4.9 7.4 6.5 6.6 5.3 5.3 5.3 6.9 8.1 3.1 x 53.9 36.5 92.3 34.0 83.4 39.3 81.9 39.9 65.6 55.5 21.3 61.8 98.0 80.6 49.3 11.1 14.0 46.5 38.2 72.9 79.1 8.6 84.8 36.3 58.5 77.8 20.1 27.0 88.9 52.3 54.9 41.9 11.1 y 89.9 5.7 63.5 47.6 4.4 70.6 74.7 29.5 62.2 67.7 25.1 39.4 41.7 54.2 53.8 9.7 46.8 40.5 86.4 56.4 62.9 23.7 25.1 39.3 76.7 86.2 10.9 36.3 84.4 18.0 28.7 11.7 85.1 kenn mortjn 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Motivation: Diese Vorlesung soll es Ihnen ermöglichen,... durch Kenntnis der wesentlichen Programmier-Paradigmen ... dasjenige auszuwählen,... welches Ihnen am besten erlaubt ... Ihr spezifisches Simulationsproblem zu lösen. Problem 1 Problem 2 Problem 3 Problem 4 Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Problem: Hecht im Forellenteich Objektorient. Programm. Motivation Def. Algorithmus Prozedurale Programm. Definition Algorithmus Deklarative Programm. Objektorient. Programm. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Prozedurale Programmierung Modellierung der Information • Information als Datentyp (integer, bool, real) in Variablen oder VariablenKonstrukten (Arrays, Records) gespeichert • Referenzen/Zeiger verweisen auf Variablen Modellierung der Verarbeitung • Folge globaler Zustandsänderungen (globaler Zustand als Gesamtheit der Variablen-Zustände) • Je Z.ä. wird Inhalt einer oder weniger Variablen geändert ... • ... oder es werden Variablen erzeugt oder entfernt • Z.ä. durch elementare Anweisung beschrieben (Zuweisung, Allokation, Deallokation, Lese- oder Schreiboperation) • Folgen von Z.ä. als zusammengesetzte Anweisung, evt. auch als unendliche Folge Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Prozedurale Programmierung Prozeduren • Benannte parametrisierte Anweisungen, meist zur Erledigung von Aufgaben/ Teilaufgaben • Funktionsprozeduren liefern Ergebnisse • P. können andere P. aufrufen • P.aufrufe müssen eindeutig zugeordnet sein Prozedur B: Prozedur A: if i=1 then set c=blau set i = i+1 Zustand 1: Zustand 2: Variable int i=0 Variable color c=grau i=1 c=grau Zustand 3: i=1 c=blau Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Deklarative Programmierung Erschließung mathematischer Beschreibungsmittel für die Programmierung • Erleichterung des Umgangs mit komplexen Daten • Verzicht auf Variablen Nicht Verarbeitungsvorschrift, sondern Spezifikation der Programm-Ergebnisse mit speziellen mathematischen Beschreibungsmitteln. Modellierung von Informationen, sowie deren Beziehungen und Eigenschaften Verarbeitung der Informationen zumeist implizit Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programmierung Funktionale Programmierung • Programm als partielle Funktion von Eingabe- und Ausgabedaten • Ausführung durch Anwendung der Funktion auf die Eingabe • Deklaration von Datentypen und Funktionen, evt. auch geschachtelt • Ermöglicht die Nutzung komplexer Datenstrukturen ohne Zeiger und Variablen • Bsp. Deklarative Programm. Objektorient. Programm. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Deklarative Programmierung Funktionale Programmierung Ein in waagerechter Richtung abgeworfener Körper führt zwei unabhängige Bewegungen zu gleicher Zeit aus: eine Bewegung mit konstanter Geschwindigkeit v0 in horizontaler Richtung x v t 0 (1) eine beschleunigte Bewegung in vertikaler Richtung y 1 g t2 2 (2) Die durch Gleichsetzen von Gleichung (1) und (2) nach der Zeit t entstehende resultierende Bewegung entspricht einer Kurve, der Wurfparabel (3): x2 g y 2 2 v0 bzw . ha = Fallhöhe, s = Wurfweite, g = Erdbeschleunigung. s2 g ha 2 2 v0 (3) Objektorient. Programm. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programmierung Funktionale Programmierung Das Beispiel als Haskell-Code sq::Int sq y=y*y fallhoehe :: Int -> Real -> Int fallhoehe sgv = sq s * g / 2 * sq v e1 :: Real e1 = fallhoehe 5 9.81 10 Deklarative Programm. Objektorient. Programm. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Deklarative Programmierung Funktionale Programmierung Logische Programmierung • Programm als partielle Funktion von • Programm als Sammlung von Fakten • Ausführung durch Anwendung der Funktion auf die Eingabe • Ausführung sucht Antworten auf solche Fragen • Deklaration von Datentypen und Funktionen, evt. auch geschachtelt • Nutzt formale Logik, um Fakten und Zusammenhänge zu beschreiben Eingabe- und Ausgabedaten • Ermöglicht die Nutzung komplexer Datenstrukturen ohne Zeiger und Variablen • Bsp. und Folgerungs-beziehungen, an die Fragen gestellt werden können • Bsp. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programmierung Logische Programmierung Ein Beispiel im Prolog-Code istBlume( Rose ). blüht(x) :- istBlume(x). blüht( Rose )? ja blüht( Salat )? nein Deklarative Programm. Objektorient. Programm. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Deklarative Programmierung Funktionale Programmierung Logische Programmierung • Programm als partielle Funktion von • Programm als Sammlung von Fakten • Ausführung durch Anwendung der Funktion auf die Eingabe • Ausführung sucht Antworten auf solche Fragen • Deklaration von Datentypen und Funktionen, evt. auch geschachtelt • Nutzt formale Logik, um Fakten und Zusammenhänge zu beschreiben Eingabe- und Ausgabedaten • Ermöglicht die Nutzung komplexer Datenstrukturen ohne Zeiger und Variablen • Bsp. und Folgerungs-beziehungen, an die Fragen gestellt werden können • Bsp. Weitere Form Deklarativer Programmierung: • relationale Datenbank-Programmierung Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Objektorientierte Programmierung Vorgänge werden durch handelnde Individuen (Instanzen oder„Objekte“) modelliert, die Aufträge erledigen und vergeben können. Nachricht => Auftragserteilung. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorientierte Programmierung Nachricht => Auftragserteilung. Hunger! Objektorient. Programm. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Objektorientierte Programmierung Vorgänge werden durch handelnde Individuen (Instanzen oder„Objekte“) modelliert, die Aufträge erledigen und vergeben können. Nachricht => Auftragserteilung. Methode => Auftragsdurchführung. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorientierte Programmierung Methode => Auftragsdurchführung. Hunger! Objektorient. Programm. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Objektorientierte Programmierung Vorgänge werden durch handelnde Individuen (Instanzen oder„Objekte“) modelliert, die Aufträge erledigen und vergeben können. Nachricht => Auftragserteilung. Methode => Auftragsdurchführung. Klassifikation => hierarchische Zusammenfassung von Objekten gleicher Eigenschaften. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Objektorientierte Programmierung Klassifikation => hierarchische Zusammenfassung von Objekten gleicher Eigenschaften. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Objektorientierte Programmierung Vorgänge werden durch handelnde Individuen (Instanzen oder„Objekte“) modelliert, die Aufträge erledigen und vergeben können. Nachricht => Auftragserteilung. Methode => Auftragsdurchführung. Klassifikation => hierarchische Zusammenfassung von Objekten gleicher Eigenschaften. Vererbung => Eigenschaften übergeordneter Hierarchie-Ebenen werden auch nachgeordneten zugeordnet. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Objektorientierte Programmierung Vererbung => Eigenschaften übergeordneter Hierarchie-Ebenen werden auch nachgeordneten zugeordnet. Motivation Def. Algorithmus Prozedurale Programm. Deklarative Programm. Objektorient. Programm. Objektorientierte Programmierung Lösungsansatz: Hecht im Forellenteich Klassen Methoden Eigenschaften •Teich •GetTemperatur(private) •Größe, Temperatur,... •Fisch •Fressen (public), •Hunger, Geruch, Wo? •Forelle •Hecht •Fressen von Wasserflöhen •Menge in g •Fressen von Kleinfischen •Anzahl •Fressen von Forellen •Gewicht in g •Fressen von Entenküken •Gewicht in g Entwicklung von Simulationsmodellen Paradigmen der Programmierung • Prozedurale Programmierung • Deklarative Programmierung • - Funktionale Programmierung - Logische Programmierung Objektorientierte Programmierung