9

是否有任何软件可以绘制 Petri 网并从那里生成任何源代码?源代码可以是任何已知的编程语言......

稍微不太理想的选项是以某种开放格式(如 XML 或任何其他数据语言)在基于文本的文件中输出仅包含 Petri 网图描述的文件。然后我可以自己编写代码生成器,但至少我想避免 gui/graph 开发部分;))

谢谢

4

3 回答 3

4

我正在y_petri用 Ruby 开发。目前,YPetri 可以处理可视化(YPetri::Net类有#visualize使用Graphviz绘制网络的方法),但不是您似乎想到的 GUI 编辑。仅供参考,首先,Petri 网中的 GUI 编辑并不像看起来那么重要。

使用的数据语言是 Ruby 本身(更准确地说,是用 Ruby 编写的内部 DSL)。

Petri 网的一个主要问题是,它们的种类实在太多了。YPetri试图成为一个通用的 Petri 网框架,具有 1 种位置(任意标记类型)和 4 种基本类型的转换(定时/永恒 x 化学计量/非化学计量)。此外,还有第五种转换,赋值转换,它用函数的返回值替换目标位置的标记。我相信这可以用来描述任何动态系统,同时尽可能简约。

Petri 网弧被理解为转换和位置之间的关系(它们属于y_petri.基本上使用 Ted Nelson 的 ZZ 结构 (ZigZag) 作为关系数据库的替代品

至于模拟(Petri网执行),一般的混合Petri网没有比隐式欧拉法(我称之为伪欧拉法)更快的模拟方法。这是因为 Petri 网可用于实现图灵机,而一般的加速是不可能的。

如果您愿意使用 Ruby 进行操作,那么您可以使用 DSL 代码来描述 Petriy_petriy_nelson。我不提供到 XML 的转换,因为我不认为它优于源 DSL。可以编写这样的导出例程,但我鼓励您改用 DSL。

于 2013-05-25T11:21:58.213 回答
3

我会看看CPN 工具。它们提供了彩色 Petri 网的各种构建、分析、模拟以及索赔代码生成功能。

于 2011-07-21T18:40:22.983 回答
3

检查PetriNetSim它是用 Java 开发的,您可以绘制和模拟简单/彩色/定时的 petrinet。它带有几个例子。您可以在 Java 中扩展弧和节点约束。最后你可以看到生成的 petri 网的 java 类

您可以从 github https://github.com/guillem-catala/PetriNetSim获取源代码

于 2011-07-21T18:00:03.133 回答