Modellierung - Grundlagen der Informatik für ...
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Überblick 1 Grundlegende Begriffe und Anwendung 2 Entwicklung von Informationssystemen 3 Objektorientierte Modellierung 4 Objekt-Orientierung in MATLAB 5 Simulation 6 Simulation mit MATLAB/SimuLink
Modellierung Definition (Modellierung) Unter Modellierung versteht man in der Informatik die Abbildung eines Realweltausschnitts auf eine für die Lösung des Problems/der Aufgabe mit dem Computer geeignete Darstellungsform. Modellbildung abstrahiert auf für die Aufgabe wesentliche Eigenschaften des Realweltausschnitts durch Weglassen, Verdichten und Abstraktion Grundlegende Aufgaben: Beschreibung, Entwicklung, Verifizierung und Analyse von Systemen
Anwendungen von Modellen in der Informatik /1 Entwicklung von Informationssystemen: Beschreibung/Spezifikation des zu unterstützenden Realweltausschnitts (konzeptuelle/semantische Modellierung) und Strukturen der Anwendung oder Datenbank (logische Modellierung, Datenmodellierung) Simulations- und Mathematische Modelle: Abbildung eines (evtl. zukünftigen/geplanten) Systems mit einem berechenbaren Verhalten zur Analyse, Beschreibung oder für Prognosen ...
Anwendungen von Modellen in der Informatik /2 ... Referenzmodelle: beschreibende Modelle für Standards und empfohlene Lösungen (Architekturen, Protokolle, Patterns, etc.) Geometrische Modelle: Abbildung geometrischer Sachverhalte als Eingabe für die Computergrafik Prozess- und Organisationsmodelle: Beschreibung von Abläufen und Strukturen innerhalb von Organisationen für deren Analyse und Verbesserung, z.B. in der Wirtschaftsinformatik Zahlreiche weitere sowie anwendungsspezifische Modelle
Modellierungsmodelle und -Sprachen Je nach Anwendung verschiedenartige Konstrukte/Ausdrucksmittel Grafische (Diagramme, z.B. Programmablaufplan, Struktogramme, UML) oder textuelle (z.B. Pseudocode) Darstellungen Formale, semi-formale oder informelle Ausdrucksmittel, je nach festgelegter Definition ihrer Bedeutung Semantisch reiche oder semantisch arme Sprachen je nach Umfang der Modellierungskonstrukte (für hohe Ausdrucksfähigkeite oder einfachere Anwendung) Abstrakte oder Implementierungs(-nahe)- Modelle, z.B. für konzeptuelle oder logischen Entwurf Beschreibende oder ausführbare Modellierungsmethoden ...
Im Folgenden ... Entwicklung von Anwendungsprogrammen durch objektorientierte Modellierung und Programmierung in MATLAB Bildung von Simulationsmodellen in MATLAB
Entwicklung von Informationssystemen Zwei wichtige Aufgaben 1 Systematische Entwicklung komplexer Anwendungssysteme durch das Software Engineering (hier behandelt) 2 Beschreibung der Strukturen der langfristigen Datenpeicherung durch den Datenbankentwurf (nicht Teil dieser Vorlesung)
Software Engineering Definition (Software Engineering) Das Software Engineering ist die systematische Anwendung von Prinzipien, Methoden und Werkzeugen zur Entwicklung, zum Betrieb und zur Wartung von Software. Entspricht Übertragung von Konzepten aus dem Ingenieurwesen Angelehnt an technische Entwicklung gegenständlicher Produkte Berücksichtigung spezifischer Aspekte von Software Prinzip der Best Practices (Erfolgsmethoden): Systematisierung der aus Erfolgen und Misserfolgen gewonnenen Erfahrungen Zu erreichende Ziele: Software als Produkt erfüllt bestimmte Qualitätskriterien Deren Entwicklung als Prozess erfüllt wirtschaftliche Kriterien
Softwareentwicklungsprozess Strukturierung des Vorgehens bei der Softwareentwicklung zur Verbesserung der Handhabbarkeit Seit Anfang der 1970er zahlreiche Vorgehensmodelle (Prozessmodelle) entwickelt Beschreibender Charakter: abgeleitet aus Erfahrungen erfolgreicher Projekte (Best Practice) Empfehlender Charakter: Leitpfaden für Durchführung eigener Entwicklungsprojekte Kein Modell mit Anspruch auf Allgemeingültigkeit Einsatz erfordert immer kritisches Hinterfragen im Kontext des aktuellen Projektes Grundprinzipien: Unterteilung in Phasen, Arbeitsschritte, Teilaufgaben Festlegung von möglichen zeitlichen Abläufen bzw. geeigneten Organisationsstrukturen Teil des Softwarelebenszyklus, der nach der Entwicklung auch Nutzung und Weiterentwicklung berücksichtigt
Konventionelles Phasenmodell Anforderungs- analyse Spezifikation Entwurf Implementierung Test Nutzung und Wartung
Konventionelles Phasenmodell /2 Auch bezeichnet als Wasserfallmodell, da streng sequentieller Prozessfortschritt ohne Rückkopplung Sehr Früher Ansatz, der so in der Praxis kaum zur Anwendung kommt Bedeutung aber vor allem in Aufteilung auf Phasen → so oder ähnlich in zahlreichen Vorgehensmodellen zu finden
Phasen der Softwareentwicklung /1 Anforderungsanalyse: Ermitteln und informales Festhalten der Zielstellung der Softwareentwicklung Basiert auf Informationen von Auftraggebern, zukünftigen Anwendern über Anwendungsbreich, existierende Systeme, etc. Abwägen von Anforderungen bzgl. Aufwand zur Umsetzung Verwandte Bezeichnungen: Problemdefinition, Planungsphase Spezifikation: Formale Beschreibung des umzusetzenden System und und Festlegung der Funktionen Entwurf: Konzeptuelle, formale Beschreibung der Umsetzung durch geeignete (noch relativ) implementierungsunabhängige Ausdrucksmittel Systemstrukturen, z.B. Architektur, Klassen, etc. Verhalten, z.B. Funktionen, Abläufe, etc. Entwurf oft in weitere Phasen unterteilt
Phasen der Softwareentwicklung /2 Implementierung: Programmierung der lauffähigen Software unter Verwendung einer (oder mehrerer) Programmiersprachen und -werkzeuge Test: Systematische Erprobung und Korrektur bzgl. Robustheit, Flexibilität, Effizienz und weiterer Qualitätseigenschaften Nutzung und Wartung: Einsatz der Software in einem oder vielen konkreten Anwendungsszenarien Von der Auslieferung über die Installation bis zur Weiterentwicklung der Software (Re-Engineering →)
Begleitende Aufgaben Bei jeder Softwareentwicklung und in allen Phasen (unabhängig von Vorgehensmodell): Dokumentation: Festhalten und Erklären von erzielten Ergebnissen gewährleistet Nachvollziehbarkeit der Entscheidungen im Entwicklungsprozess Einfache Weiterentwicklung Qualitätsmanagement: Bewertung und Sicherstellung von Qualitätskriterien für den Entwicklungsprozess und das zu entwickelnde Softwareprodukt Projektmanagement: Planung und Zuteilung von für die Softwareentwicklung notwendigen Ressourcen zur Sicherstellung wirtschaftlicher Kriterien
Kritik am konventionellen Phasenmodell Rein sequentieller Phasenverlauf kaum praktikabel Strikte Sequenz berücksichtigt nicht: Häufig Rückschritt zu vorhergehenden Phasen notwendig Beliebige Sprünge (vorwärts/rückwärts) zwischen Phasen oft sinnvoll (z.B. „frühe“ Prototypen als Proof of Concept) Iterative Natur der Softwareentwicklung: Wiederholung von Abfolgen (z.B. ... → Implementierung → Test → Änderung des Entwurfs → Implementierung → Test ...) Weiteres Vorgehen nach „Abschluss“ der Entwicklung und Einsatz der Software → Softwarelebenszyklus
Aktuelle Ansätze des Software Engineering Keine Fokussierung auf festen Vorgaben für Abläufe Iterative Modelle (mehrmaliges durchlaufen von Phasenzyklen) Flexible Kopplung bestimmer Phasen Oft Fokus auf: Zuständigkeiten, (Selbt-)Organisation von Individuen in Teams und Kommunikationsstrukturen Ziel: hohes Maß an Adaptivität und Flexibilität im Entwicklungsprozess
Objektorientierte Modellierung Definition (Objektorientierung) Objektorientierung ist ein Ansatz aus der Softwareentwicklung, der die Zusammenfassung von Daten und den dazugehörigen Funktionen in Klassen von Realweltobjekten unterstützt. Grundlegender Gedanke: weiteres Mittel zu Strukturierung des Programmtextes für komplexe Anwendungen Bisher: Funktionen fassen zusammenhängende Befehlsfolgen für Lösung eines Teilproblems zusammen Jetzt: Strukturierung der Daten (Variablen etc.) und der dazugehörigen Funktionen
Ziele der Objektorientierung Wiederverwendbarkeit → verminderter Programmieraufwand Nutzung vordefinierter Klassen aus Bibliotheken Definition eigener Klassen zur Verwendung in vielen Programmteilen Spezialisierung von Klassen: Erweiterung vordefinierter Klassen um neue Attribute und Funktionen Bessere Verständlichkeit und Wartbarkeit des Codes
OO Grundkonzepte: Klassen und Instanzen Klassen fassen Objekte mit gleichen Eigenschaften (Attributen) und gleichen auf sie anwendbaren Funktionen (Methoden) zusammen Gesamtheit von Attributen und Methoden entspricht dem Typ → Klassen beinhalten somit eine anwendungsspezifische und vom Programmierer entwickelte Typdefinition Objekte werden auch als Instanzen (Ausprägung, Einheit) der Klasse gespeichert Entstehen durch Erzeugung von Objekten des Klassentyps → Instantiierung Tragen die Werte für die in der Klasse definierten Attribute Grundlage für Aufruf der in der Klasse definierten Methoden
OO Grundkonzepte: Instanzen und Klassen Instanzen der Klasse Mitarbeiter Schmidt Claudia Klasse Mitarbeiter 70000 Finanzen Eigenschaften Name Vorname Schulz Gehalt Peter Abteilung 50000 Entwicklung Funktionen Einstellen Gehalt Erhöhen Meier Abteilung Wechseln Gustav Entlassen 80000 Marketing
OO Grundkonzepte: Kapselung Kapselung als Programmierkonzept unterscheidet die nach außen sichtbaren Attribute und Methoden (Schnittstelle der Klasse) von internen Eigenschaften und Methoden, die vor dem Nutzer der Klasse verborgen bleiben sollen (Implementierung der Klasse) Beispiel: Dateizugriff über fstream-Klassen Öffentlich zugänglich: Dateiname, Zugriffsmodus sowie Methoden zum Öffnen, Schließen, Lesen, Schreiben etc. Gekapselt: Methoden und Daten zum Zugriff auf Dateipuffer etc.
OO Grundkonzepte: Vererbung Vererbung oder auch (allgemeiner) Spezialisierung ist eine Beziehung zwischen Klassen und Typen, welche dadurch in einer Vererbungshierarchie stehen Ist eine Klasse eine Unterklasse einer Oberklasse, dann „Erbt“ sie die Attribute und Methoden der Oberklasse, d.h. diese sind ohne weiteren Programmieraufwand auch hier definiert Kann jedes Objekt der Unterklasse auch als Objekt der Oberklasse behandelt werden (→ Polymorphie) Beispiel: Objekte der Unterklasse Studenten und der Oberklasse Personen Jeder Student ist eine Person Jeder Student hat auch die Eigenschaften und Methoden einer Person im Allgemeinen Alles, was eine Person machen kann, kann auch ein Student machen
Anwendung der Objektorientierung Anwendung in vielen Bereichen der Informatik Objektorientierter Entwurf von Software mit Hilfe formaler Modelle oder grafischer Notationen (zum Beispiel UML) Zahlreiche objektorientierte Programmiersprachen Objektorientierte Datenbanken Objektorientierte Nutzerschnittstellen ... Im Folgenden: Objektorientierte Modellierung mit der UML Objektorientierung in MATLAB
Die Unified Modeling Language (UML) Entwickelt seit Mitte der 1990er Vereinigt zahlreiche Ansätze der objektorientierten Modellierung Umfaßt verschiedene Spracheinheiten/Diagrammtypen Struktur Klassendiagramme Komponentendiagramme Verteilungsdiagramme ... Verhalten Anwendungsfälle Aktionsdiagramme Sequenzdiagramme Zustandsdiagramme ... Heute von den meisten Werkzeugen der Softwareentwicklung unterstützt
UML-Beispiel: Klassendiagramm Bearbeiter -nachname Zeichnung -vorname -titel -status +erstellen() +prüfen() -bearbeitet von +bearbeiten() Konstrukteur +freigeben() Prüfer * * -fachgebiet +zurückweisen() * -geprüft von 1
UML Klassendiagramme Objektorientierte Modellierung statischer Aspekte von Datenstrukturen Wichtige (hier verwendete) Modellierungskonstrukte Rechtecke repräsentieren Klassen (Klassenname im oberen Bereich) von Objekten mit gleichen Eigenschaften (mittlerer Bereich) und Funktionen (unterer Bereich) Vererbung zwischen Klassen durch Pfeile/Dreiecksnotation Assoziationen (Beziehungen) zwischen Klassen durch Linien
Weitere UML-Beispiele: Zustandsdiagramm / erstellen() / prüfen() in Bearbeitung / zurückweisen() in Prüfung / freigeben() / bearbeiten() in Produktion
Weitere UML-Beispiele: Sequenzdiagramm Meier:Konstrukteur Schulze:Prüfer Zeichnung zur Prüfung Zurückgewiesen Zeichnung zur Prüfung Freigabe
UML-Werzeugunterstützung in NetBeans
Objekt-Orientierung in MATLAB MATLAB unterstützt Objektorientierung umfassend Erlaubt Klassendefinition mit Eigenschaften (Properties) und Methoden classdef Klassenname properties (Eigenschaftsattribute ...) eigenschaft1 eigenschaft2 ... end methods function funktion1(...) ... end ... end end
Beispiel: Klassen und Vererbung (UML) Messwert wert einheit Messwert() ausgabe() LokalerMesswert ZeitreihenMesswert koordinaten zeitpunkt LokalerMesswert() ZeitreihenMesswert() ausgabe() ausgabe()
Beispiel: Klassen und Vererbung /1 classdef Messwert properties wert einheit end methods function obj = Messwert(w,e) obj.wert = w; obj.einheit = e; end function ausgabe(obj) fprintf(’%g %s \n’,obj.wert, obj.einheit); end end end
Beispiel: Klassen und Vererbung /2 classdef LokalerMesswert < Messwert properties koordinaten end methods function obj = LokalerMesswert(w,e,k) obj@Messwert(w,e); obj.koordinaten = k; end function ausgabe(obj) fprintf(...); end end end
Beispiel: Klassen und Vererbung /3 function messungen m1 = Messwert(1.45, ’cm’); m2 = LokalerMesswert(32, ’mm’, [46.7 54.2]); m3 = ZeitreihenMesswert(25.6, ’Grad C’, ’11:45’); m1.ausgabe(); m2.ausgabe(); m3.ausgabe(); end
Zugriff auf Methoden und Attribute Über Punktnotation objekt.attribut bzw. objekt.methode(...) Zum Beispiel m = Messwert(1.45, ’cm’); m.wert = 2.07; m.ausgabe(); Bei Aufruf von Methoden ist Objekt, auf das Methode angewandt wird, immer erstes Parameter
Konstruktoren Spezielle Methoden zum Erzeugen von Objekten einer Klasse Haben gleichen Namen wie Klasse function obj = Messwert(w,e) obj.wert = w; obj.einheit = e; end end Mehrere Konstruktoren mit unterschiedlichen Parametern möglich Auch Klassen ohne Konstruktor möglich Aufruf zum Erzeugen von Objekten m1 = Messwert(1.45, ’cm’);
Vererbung Spezialisierung von Klassen bei deren Definition classdef LokalerMesswert < Messwert ... Effekte Neu definierte Unterklasse übernimmt alle Eigenschaften und Methoden der Oberklasse In der Unterklasse können zusätzliche Eigenschaften und Methoden definiert werden Menge der Objekte der Unterklasse sind Untermenge der Objekte der Oberklasse und können auch so verwendet werden Auch Mehrfachvererbung (erben von mehr als einer Klasse) möglich
Beispiel: Kapselung (UML) Mitarbeiter + name + vorname - gehalt
Beispiel: Kapselung classdef Mitarbeiter properties (Access=public) name vorname end properties (Access=private) gehalt end end
Kapselung Einschränkung des Zugriffs auf Eigenschaften und Methoden aus dem Programmtext oder während der interaktiven Arbeit public: Zugriff von überall erlaubt private: Zugriff nur von Methoden dieser Klasse protected: Zugriff von Methoden dieser Klasse und abgeleiteter Klassen Attribute mit unterschiedlichem Zugriff Auch unterschiedliche Kapselung für Setzen bzw. nur Lesen (setAccess, getAccess) möglich
Assoziationen und Handle-Klassen Assoziationen repräsentieren Beziehungen zwischen Objekten In MATLAB mit Hilfe von Handles implementiert handle spezieller Datentyp Erlaubt Zugriff auf Daten über unterschiedliche Namen Vergleichbar Referenzen oder Zeigern in anderen Programmiersprachen Ermöglicht Übergabe von Verweis auf Daten an Funktionen (Pass by Reference) Sollen Objekte in Beziehung gesetzt/vernetzt werden, müssen entsprechende Klassen von handle erben
Beispiel: Assoziationen (UML) Student 0 ..* Vorlesung matrnr titel name vorlesungen lehrer Student() Vorlesung() vorlesungHinzufuegen()
Beispiel: Assoziationen /1 classdef Student < handle properties matrnr name end properties (Access=private) vorlesungen = Vorlesung.empty end ...
Beispiel: Assoziationen /2 ... methods function obj = Student(m,n) if nargin == 2 obj.matrnr = m; obj.name = n; else error(’Studentenkonstruktor erfordert ...’); end end function vorlesungHinzufuegen(obj, v) if nargin == 2 && isa(v,’Vorlesung’) obj.vorlesungen = [obj.vorlesungen v]; else error(’Vorlesung falsch zugewiesen!’); end end end end
Beispiel: Assoziationen /3 classdef Vorlesung < handle ...
Beispiel: Assoziationen /4 function stundenplan v1 = Vorlesung(’GIF’,’Moe’); v2 = Vorlesung(’ME’,’Curly’); v3 = Vorlesung(’TD’,’Larry’); s1 = Student(’123456’,’Harry Klein’); s2 = Student(’987654’,’Eva Gross’); s1.vorlesungHinzufuegen(v1); s1.vorlesungHinzufuegen(v2); s2.vorlesungHinzufuegen(v1); s2.vorlesungHinzufuegen(v2); s2.vorlesungHinzufuegen(v3); disp(s1); disp(s2); end
Simulation Definition (Simulation) Unter Simulation versteht man die Analyse eines existierenden oder geplanten Systems auf der Basis eines Modells. Bei der Computersimulation ist das Modell digital abgebildet und kann ggf. vom Computer ausgeführt werden. Modellbildung erfordert Beschreibung relevanter Eigenschaften Hier betrachtet: dynamische Simulation, d.h. System/Modell ist veränderlich in der Zeit Stochastische Modelle beinhalten zufällige Größen und erfordern für Analyse ggf. statistische Methoden
Anwendungen der Simulation (Beispiele) Produktentwicklung: Analyse geplanter Produkteigenschaften Fertigung und Logistik: Analyse geplanter oder existierender Prozesse Wissenschaft: beschreibende, erklärende oder vorhersagende Modelle Ausbildung: Lernen auf Basis interaktiver Simulation Spiele und Unterhaltung: Interaktion mit simulierten Spielwelten ...
Arten der Dynamischen Simulation Kontinuierliche Simulation : Untersuchung stetiger Prozesse mit veränderlichen Größen als Funktionen in der Zeit Modellierung der Veränderung von (gegenseitig abhängigen) Größen durch Differentialgleichungen Numerische Lösungsverfahren (gut durch Computer berechenbar) Diskrete Simulation (auch Ablaufsimulation): Untersuchung von konkreten Systemzuständen und Ereignissen, die zu Übergängen führen Ereignisse werden häufig stochastisch modelliert Modellierungsmittel: Petri-Netze, Markow-Ketten, etc.
MATLAB/Simulink Zusatzsoftware für MATLAB (erfordert separate Lizenz) Erlaubt Modellbildung durch grafische Modellierung aus Blockschaltbildern Unterstützt sowohl Kontinuierliche als auch Diskrete Simulation Ausführbare Kontinuierliche Modelle durch Angabe eines Simulationsintervalls Ausgabe kann interaktiv angesehen (Scope) oder an Matlab (TimeSeries) übertragen werden Da Modell Signalfluss beschreibt, kann daraus auch Code generiert werden
MATLAB/Simulink: Kontinuierliche Simulation Signale: zu beobachtende Größe(n) mit Werten zu jedem Zeitpunkt im Intervall repräsentiert durch Pfeile Quellen: Erzeugung von Signalen (Konstanten, Funktionen, Code, etc.) durch Blockschaltbilder ohne Eingang Senken: Ausgabe oder Speicherung von Signalen durch Blockschaltbilder ohne Ausgang Operatoren: Modifikation und Verknüpfungen von Signalen durch Blockschaltbilder mit einem oder mehreren Ein-/Ausgängen
Einfaches Signalbeispiel Eine Quelle: Sine Wave1 erzeugt Signal mit Sinuswelle Eine Senke: Scope1 erlaubt Analyse des Signals
Signalbeispiel (Scope Ausgabe) Simulationsintervall 0 bis 10 als Parameter der Simulation festgelegt
To Workspace: Speichern als Variable Aufsplittung des Signalflusses an zwei Senken To Workspace Senke speichert Signal als nutzerdefinierte Variable x von der Klasse timeseries
Die Klasse timeseries Speichert Ergebnis einer To Workspace-Senke Hat als Properties u.a. Zeitwerte als Vektor x.time Dazugehörige Datenwerte als Vektor x.data Weitere Metadaten zur Beschreibung des Signals Kann für weitere Berechnungen oder Visualisierungen verwendet werden, z.B. » plot(x) » plot(x.data)
Bus Creator Bus Creator kombiniert mehrere Signale für eine einheitliche Übertragung, Bearbeitung oder Visualisierung Bus ist vergleichbar „Kabelbündel“
Bus Creator (Scope)
Gain (Konstanter Faktor) Gain beschreibt einfachen Operator zur Multiplikation mit konstantem Faktor
Gain (Scope)
Mathematische Operatoren Zahlreiche arithmetische Operatoren mit mehreren Eingängen Im Beispiel: Addition und Multiplikation zweier Signale
Mathematische Operatoren (Scope)
Gewöhnliche Differentialgleichungen Komplexere dynamische Systeme lassen sich oft einfacher über Veränderung der Größen beschreiben Beschreibung als gewöhnliche Differentialgleichung dx = f (x, t) dt Beispiele: dx dt = c (Konstantes Wachstum c) dx dt = c ∗ x (Wachstum ist proportional zur Größe selbst) Änderungen können auch von Zeit oder anderen simulierten Größen (mit möglichen Wechselwirkungen) abhängig sein Gesucht ist: x(t) für bestimmtes x0 Bei komplexen Systemen mit Wechselwirkungen lösbar über numerische Verfahren (verschiedene implementiert in Simulink)
Einfacher Integrator Integrator hat als Eingabe den in jedem Schritt aktuellen Wachstumswert (1. Ableitung der gesuchten Funktion) Startwert kann als Eigenschaft des Integrators oder externer Eingang (hier Konstante) gesetzt werden
Einfacher Integrator (Scope)
Integrator mit Rückkopplung Rückkopplung erlaubt Wachstum abhängig vom aktuellen Zustand/Wert des Signals (hier mit Dämpfungsfaktor)
Integrator mit Rückkopplung (Scope)
Von Hasen und Füchsen ... /1 Einfaches Modell zur Analyse der Population von Hasen h und Füchsen f Wenn es keine Füchse gibt, vermehren sich Hasen proportional zu ihrer Anzahl unendlich (keine sonstige Ressourcenbeschränkung) dh =a∗h dt Wenn es keine Hasen gibt, sterben Füchse proportional zu ihrer Anzahl df = −b ∗ f dt ...
Von Hasen und Füchsen ... /2 ... Die Anzahl der Hasen, die gefressen werden ist proportional zum Produkt aus der Anzahl der Hasen und Füchse (wie oft treffen sich beide) c∗h∗f Die Anzahl der Füchse wächst ebenfalls proportional zu diesem Produkt d∗h∗f Modellierung auch bekannt als Predator Prey- oder Lottke-Volterra-Gleichungen
Hasen und Füchse: Mathematisches Modell Damit ergibt sich folgendes Gesamtmodell dh =a∗h−c∗h∗f dt df = −b ∗ f + d ∗ h ∗ f dt (Danke an Prof. Dr. Graham Horton und Dr. Claudia Krull für Problembeschreibung und Parametrisierung)
Hasen und Füchse in Simulink (Parameter) Betrachtungsintervall: 0 bis 150 Startwerte hasen: 400 fuechse: 37 Deren Veränderung wird beobachtet und an Workspace ausgegeben Geburtenfaktor der Hasen a = 0.175 Sterbefaktor der Füchse b = 0.125 Fressfaktoren c = d = 0.001 Gesucht: Anzahl der Hasen und Füchse zu jedem Zeitpunkt im Intervall
Hasen und Füchse in Simulink
Hasen und Füchse in Simulink (Scope)
Hasen und Füchse in Simulink (Phasenraum) » plot(hasen.data,fuechse.data) Phasenraum: beschreibt Menge der möglichen Zustände als Wertkombinationen der analysierten Größen
Mögliches Verhalten von Modellen Explosion: eine oder mehrere der Größen wächst unendlich Periodisch: Größen durchlaufen immer wieder den gleichen Zyklus Statisch: Größen bleiben dauerhaft gleich Chaos: Verhalten im Unendlichen ist nicht explosiv, aber auch weder zyklisch noch statisch
MATLAB/Simulink: Diskrete Simulation Ereignisbasierte Simulation, engl. Discrete Event Simulation (DES) Erfordert spezielle Simulink-Bibliothek SimEvents Alternative: Simulation diskreter Zeitschritte als Spezialfall der kontinuierlichen Simulation konfigurierbar (feste Schrittgröße, diskreter Solver)
MATLAB/Simulink: Entities und Events Entities repräsentieren verallgemeinert Objekte, d.h. Gegenstände, Personen oder Informationen „Fließen“ durch das Simulationsmodell (spezielle Notation mit Doppelpfeil) Können definierte Attribute haben Events entstehen für die Erzeugung oder das Vernichten einer Entity das Eintreffen oder das Verlassen einer Entity in einem Block bestimmtes Verhalten kontinuierlicher Signale, z.B. das Überschreiten eines Schnellwertes (gemischte Simulationsformen)
SimEvents: Quellen und Senken Entity Generators erzeugen Entitäten Zeitgesteuert: Entitäten werden nach konfigurierbar (gleich, normal, exponentiell, etc.) verteilten Zeitintervallen (im Beispiel oben als interne Eigenschaft, auch als externes Eingabesignal) Ereignisgesteuert: Entitäten werden bei bestimmten Ereignissen erzeugt Entity Sinks repräsentieren das Verlassen des Systems oder das Löschen der Entitäten
SimEvents: Konfiguration von Blöcken
SimEvents: Queues und Server Server: Simulation der Bearbeitung mit konfigurierbarer Bearbeitungszeit und Kapazität (Single Server = nur eine Entität kann zu einem Zeitpunkt bearbeitet werden) Queues: Zwischenspeicherung der zu bearbeitenden Entities im Fall von blockierenden Folgeschritten FIFO (First In, First Out): wer am längsten wartet, kommt als nächster dran (typische Warteschlange) LIFO (Last In, First Out): aktuellste Entity wird immer als nächste bearbeitet (Stack, Stapelspeicher) Blockierendes Verhalten: sind die Kapazitäten zur Berarbeitung in Bearbeitung oder ist die Schlange voll, kann keine weitere Entity „eintreten“
SimEvents: Routing Erlaubt Wegverzweigung (Switch) oder Replikation (Erstellen von Kopien für jeden Weg) für Entitäten Konfigurierbar bzgl. der Wahl des Weges (z.B. zufällig, „Round Robin“, nach Attributen) und Verhalten bei blockierten Wegen
SimEvents: Auswertung mit Scopes /1 Fast alle SimEvents-Blockschaltbilder erlauben Ausgabe verschiedener statistischer Werte als beobachtbare Größen Z.B. gesamt/aktuelle/durchschnittliche Entitätenanzahlen, Bearbeitungszeiten, Wartezeiten, etc.
SimEvents: Konfiguration von Statistiken
SimEvents: Auswertung mit Scopes /2
SimEvents: Auswertung mit Scopes /3
SimEvents: Auswertung mit Scopes /4
SimEvents: Auswertung mit Timern /1 Timer erlauben für Entitäten Zeitmessungen über Operationen hinweg
SimEvents: Auswertung mit Timern /2
SimEvents: Ein Beispiel
Zusammenfassung: Modellierung Modellierung zur Abbildung von Systemen Zahlreichen Anwendungen in der Informatik, hier betrachtet: Modellierung für die Entwicklung von Software Objektorientierte Modellierung Objektorientierte Programmierung (in MATLAB) Modellbildung zur Simulation von Systemen Kontinuierliche Simulation (gegenseitig abhängiger) Funktionen Diskrete Simulation von Ereignissen und Wahrscheinlichkeiten
Sie können auch lesen