2011-02-09 17 views
8

¿Existe algún software para dibujar una red de Petri y generar cualquier código fuente desde allí? El código fuente podría estar en cualquier lenguaje de programación conocido ...Dibujo de red de Petri y generación de código

Opción menos deseable sería generar un archivo con solo la descripción de los gráficos netos de Petri en un archivo de texto en algún formato abierto, como XML o cualquier otro lenguaje de datos. entonces yo podría escribir el generador de código de mí mismo, pero al menos me gustaría evitar parte de desarrollo GUI/gráfico;))

Gracias

+1

He encontrado una larga lista de software relacionado en http://www.informatik.uni-hamburg.de/TGI/PetriNets/tools/quick.html Voy a comentar si encuentro algunos útiles allí –

+0

Esto es genial también http://statemachines.umple.org –

Respuesta

3

Comprobar PetriNetSim que está desarrollado en Java, se puede dibujar y simular sencilla/Coloreado/tiempo petrinets. Viene con algunos ejemplos. Puede extender restricciones de arco y nodos en Java. Y, finalmente, se puede ver las clases de Java de la red de Petri generada

Puede obtener el código fuente de github https://github.com/zamzam/PetriNetSim

2

me vería en la CPN Tools. Proporcionan todo tipo de construcción, análisis, simulación de redes de Petri coloreadas y capacidades de generación de códigos de reclamo.

2

Estoy desarrollando y_petri en Ruby. Al ser momento, YPetri puede manejar la visualización (YPetri::Net clase tiene #visualize método utilizando Graphviz para dibujar la red), pero no la interfaz gráfica de edición que parecen tener en mente. Para su información, en primer lugar, la edición de GUI en redes de Petri es menos importante de lo que parece.

El lenguaje de datos en uso es en sí Rubí (más precisamente, y el DSL interno escrito en Ruby).

Un problema importante con las redes de Petri es decir, que no es del todo demasiado muchos tipos de ellos en existencia. YPetri intenta ser un marco de red universal de Petri, con 1 tipo de lugares (de tipo de marcado arbitrario) y 4 tipos básicos de transiciones (temporizado/intemporal x estequiométrico/no estequiométrico). Además, hay un quinto tipo de transición de transición de asignación que reemplaza la marca de los lugares de destino con el valor de retorno de su función. Creo que esto se puede usar para describir cualquier sistema dinámico, siendo lo más parsimonioso que pude.

Los arcos netos de Petri se entienden como las relaciones entre transiciones y lugares (pertenecen a las transiciones en y_petri. Encontré que es útil tener una forma de expresar también las relaciones entre nodos de red de Petri (lugares/transiciones) que solo arcos. Con este fin, I use Ted Nelson's ZZ structure (ZigZag) basically as a replacement for a relational database.

En cuanto a la simulación (ejecución de red de Petri), las redes de Petri híbridas generales no tienen un método de simulación más rápido que el método implícito de Euler (que llamo pseudo Euler). utilizado para implementar una máquina de Turing, para los cuales no es posible aceleración en general.

Si usted está dispuesto a operar en Ruby, por lo tanto, puede describir una red de Petri en y_petri o y_nelson código DSL. No proporciono la conversión a XML, ya que no lo considero superior a la fuente DSL. Sería posible escribir dicha rutina de exportación, pero lo invito a usar la DSL en su lugar.