Modellierung - Grundlagen der Informatik für ...

Die Seite wird erstellt Kira Langer
 
WEITER LESEN
Modellierung - Grundlagen der Informatik für ...
Teil III

Modellierung
Ü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