26.04.2015 Aufrufe

Entwicklung und Implementierung von Heuristiken zur optimierten ...

Entwicklung und Implementierung von Heuristiken zur optimierten ...

Entwicklung und Implementierung von Heuristiken zur optimierten ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Vielmehr soll das Augenmerk auf die Verwirklichung der Heuristik aus Kapitel<br />

5.3 gesetzt werden. Um den Abstand eines Zustands q zum Zielzustand d zu ermitteln,<br />

wurde zunächst eine Adjazenzmatrix A des Graphen, der den zugehörigen<br />

PLC-Automaten darstellt, errechnet. Mit den Potenzen dieser Matrix ließ sich die<br />

Distanzmatrix berechnen, aus der letztlich der heuristische Wert berechnet werden<br />

kann.<br />

Listing 1 zeigt beispielhaft, wie die Berechnung des heuristischen Werts heur in<br />

UPPAAL CORA funktioniert. Die innerhalb des after update-Blockes angegebenen<br />

Berechnungen werden vom Modelchecker nach Schalten einer Transition durchgeführt.<br />

Das Beispiel zeigt, wie heur als Produkt aufgr<strong>und</strong> der Heuristik Abstand ”<br />

zum Fehlerzustand“ für zwei Werkstücke (vgl. Abbildung 12) berechnet wird, wobei<br />

err tb jeweils der Zielzustand ist. Mittels des UPPAAL-Service <strong>von</strong> Moby/PLC<br />

wird automatisch zu jedem Automaten eine Variable (im Beispiel: blank0 states<br />

<strong>und</strong> blank1 states) erstellt, die den aktuellen Zustand des Automaten speichert.<br />

Außerdem werden Konstanten <strong>zur</strong> Verfügung gestellt, um die Zustandsvariable abfragen<br />

zu können (z. B. ENUM blank0 states start).<br />

Listing 1: Beispiel einer after update-Definition<br />

after update {<br />

heur = 0<br />

+ (1<br />

+ ( blank0 states==ENUM blank0 states start ? 3 : 0 )<br />

+ ( blank0 states==ENUM blank0 states start fb ? 2 : 0 )<br />

+ ( blank0 states==ENUM blank0 states end fb ? 1 : 0 )<br />

+ ( blank0 states==ENUM blank0 states err tb ? 0 : 0 )<br />

)<br />

∗ (1<br />

+ ( blank1 states==ENUM blank1 states start ? 3 : 0 )<br />

+ ( blank1 states==ENUM blank1 states start fb ? 2 : 0 )<br />

+ ( blank1 states==ENUM blank1 states end fb ? 1 : 0 )<br />

+ ( blank1 states==ENUM blank1 states err tb ? 0 : 0 )<br />

)<br />

}<br />

40

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!