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.
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í –
Esto es genial también http://statemachines.umple.org –