Рисование сети Петри и генерация кода

Есть ли какое-либо программное обеспечение для рисования сети Петри и генерации оттуда исходного кода? Исходный код может быть на любом уже известном языке программирования...

Чуть менее желательным вариантом будет вывод файла только с описанием графов сети Петри в текстовом файле в каком-либо открытом формате, таком как XML или любой другой язык данных. Тогда я мог бы сам написать генератор кода, но, по крайней мере, я хотел бы избежать части разработки gui/graph ;))

Спасибо


person Hernán Eche    schedule 09.02.2011    source источник
comment
Я нашел длинный список связанного программного обеспечения на informatik.uni. -hamburg.de/TGI/PetriNets/tools/quick.html Я прокомментирую, если найду там что-то полезное   -  person Hernán Eche    schedule 09.02.2011
comment
Это также отлично подходит для statemachines.umple.org.   -  person Hernán Eche    schedule 20.06.2014


Ответы (3)


Я разрабатываю y_petri на Ruby. На данный момент YPetri может обрабатывать визуализацию (класс YPetri::Net имеет метод #visualize, использующий Graphviz для рисования сети), но не редактирование графического интерфейса, которое вы, похоже, имеете в виду. К вашему сведению, во-первых, редактирование графического интерфейса в сетях Петри менее важно, чем кажется.

Используемый язык данных — это сам Ruby (точнее, внутренний DSL, написанный на Ruby).

Основная проблема с сетями Петри заключается в том, что существует слишком много их видов. YPetri пытается быть универсальной структурой сети Петри с 1 типом мест (с произвольным типом маркировки) и 4 основными типами переходов (временные / вневременные x стехиометрические / нестехиометрические). Кроме того, существует пятый тип перехода, переход присваивания, который заменяет маркировку целевых мест возвращаемым значением его функции. Я полагаю, что это может быть использовано для описания любой динамической системы, будучи настолько экономным, насколько я был в состоянии это сделать.

Под дугами сети Петри понимаются отношения между переходами и местами (они относятся к переходам в y_petri. Я обнаружил, что полезно иметь способ выражать также отношения между узлами сети Петри (места/переходы), а не только дуги. Для этой цели Я использую ZZ-структуру Теда Нельсона (ZigZag) в основном как замену реляционной базе данных.

Что касается симуляции (исполнение сети Петри), общие гибридные сети Петри не имеют более быстрого метода симуляции, чем неявный метод Эйлера (который я называю псевдоэйлеровым). Это связано с тем, что сеть Петри может использоваться для реализации машины Тьюринга, для которой невозможно общее ускорение.

Если вы хотите работать на Ruby, вы можете таким образом описать сеть Петри в коде y_petri или y_nelson DSL. Я не предоставляю преобразование в XML, так как не считаю его превосходящим исходный DSL. Можно было бы написать такую ​​процедуру экспорта, но я рекомендую вместо этого использовать DSL.

person Boris Stitnicky    schedule 25.05.2013

Я бы посмотрел на Инструменты CPN. Они обеспечивают все виды построения, анализа, симуляции цветных сетей Петри и возможности генерации кода заявлений.

person Ira Baxter    schedule 21.07.2011

Проверьте PetriNetSim, он разработан на Java, вы можете рисовать и моделировать простые/цветные/временные петринцы. Он поставляется с несколькими примерами. Вы можете расширить ограничения дуг и узлов в Java. И, наконец, вы можете увидеть java-классы сгенерированной сети Петри.

Вы можете получить исходный код с github https://github.com/guillem-catala/PetriNetSim

person webtu    schedule 21.07.2011