Рисование сетей Петри и генерация кода - PullRequest
8 голосов
/ 09 февраля 2011

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

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

Спасибо

Ответы [ 3 ]

3 голосов
/ 21 июля 2011

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

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

2 голосов
/ 25 мая 2013

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

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

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

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

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

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

2 голосов
/ 21 июля 2011

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

...