Petrinetzzeichnung und Codegenerierung

8

Gibt es Software zum Zeichnen eines Petrinetzes und zum Generieren von Quellcode von dort? Der Quellcode könnte in einer bereits bekannten Programmiersprache sein ...

Eine etwas weniger wünschenswerte Option wäre die Ausgabe einer Datei mit nur der Beschreibung der Petrinetz-Graphen in einer textbasierten Datei in einem offenen Format, wie XML oder einer anderen Datensprache. Ich könnte dann den Code-Generator selbst schreiben, aber zumindest möchte ich den GUI-Entwicklungsteil vermeiden;))

Danke

    
Hernán Eche 09.02.2011, 14:32
quelle

3 Antworten

3

Überprüfen Sie PetriNetSim es ist in Java entwickelt, Sie können einfache / farbige / zeitgesteuerte Petrinets zeichnen und simulieren. Es kommt mit wenigen Beispielen. Sie können die Einschränkungen für Bogen und Knoten in Java erweitern. Und schließlich können Sie Java-Klassen des generierten Petrinetzes sehen

Sie können den Quellcode von github Ссылка

abrufen     
webtu 21.07.2011 18:00
quelle
2

Ich würde mir die CPN-Tools ansehen. Sie bieten alle Arten von Konstruktion, Analyse, Simulation von Farb-Petri-Netzen und Funktionen zur Generierung von Code.

    
Ira Baxter 21.07.2011 18:40
quelle
2

Ich entwickle y_petri in Ruby. Im Moment kann YPetri mit der Visualisierung umgehen ( YPetri::Net class hat #visualize methode mit Graphviz um das Netz zu zeichnen), aber nicht die GUI-Bearbeitung, die Sie im Sinn haben. Zunächst einmal ist GUI-Bearbeitung in Petrinetzen weniger wichtig als es scheint.

Die verwendete Datensprache ist Ruby selbst (genauer gesagt, und interne DSL in Ruby geschrieben).

Ein Hauptproblem bei Petri-Netzen ist, dass es zu viele Arten von ihnen gibt. YPetri versucht ein universelles Petrinetz-Framework zu sein, mit 1 Art von Plätzen (beliebiger Markierungstyp) und 4 Grundtypen von Übergängen (zeitgesteuert / zeitlos x stöchiometrisch / nicht-stöchiometrisch). Darüber hinaus gibt es eine fünfte Art von Übergang, den Zuweisungsübergang, der die Markierung der Zielorte durch den Rückgabewert ihrer Funktion ersetzt. Ich glaube, dass dies verwendet werden kann, um irgendein dynamisches System zu beschreiben, während es so sparsam ist, wie ich es schaffen konnte.

Petrinetzbögen werden als Beziehungen zwischen Übergängen und Orten verstanden (sie gehören zu Übergängen in y_petri . Ich fand, dass es nützlich ist, auch Beziehungen zwischen Petrinetzknoten (Orte / Übergänge) als nur Bögen auszudrücken Zu diesem Zweck benutze ich Ted Nelsons ZZ-Struktur (ZigZag) im Grunde als Ersatz für eine relationale Datenbank .

>

Wie für die Simulation (Petrinetz-Ausführung) haben allgemeine Hybrid-Petrinetze keine schnellere Simulationsmethode als die implizite Euler-Methode (die ich Pseudo-Euler nenne). Denn mit einem Petrinetz lässt sich eine Turingmaschine realisieren, für die keine generelle Beschleunigung möglich ist.

Wenn Sie bereit sind, in Ruby zu arbeiten, können Sie ein Petri-Netz in y_petri oder y_nelson DSL-Code beschreiben. Ich biete keine Konvertierung zu XML an, da ich es der Quell-DSL nicht überlegen sehe. Es wäre möglich, eine solche Exportroutine zu schreiben, aber ich ermutige Sie stattdessen, das DSL zu verwenden.

    
Boris Stitnicky 25.05.2013 11:21
quelle