2011-02-09 57 views
8

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

稍不太合适的选项是输出一个只带有Petri网图形的文件,以一些基于文本的文件的形式显示,例如XML或任何其他数据语言。然后我可以编写代码生成器自己,但至少我想避免GUI /图发展的一部分;))

感谢

+1

我在http://www.informatik.uni-hamburg.de/TGI/PetriNets/tools/quick.html找到了一个长长的相关软件列表如果我在那里找到一些有用的东西,我会发表评论 – 2011-02-09 15:37:56

回答

3

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

您可以从GitHub https://github.com/zamzam/PetriNetSim

2

我看CPN Tools抢的源代码的Java类。他们提供各种有色Petri网的构造,分析,模拟和声明代码生成功能。

2

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

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

Petri网的一个主要问题是,它们存在的种类太多了。 YPetri尝试是通用Petri网框架,1种地方(任意标记类型的)和4种基本类型的转变(定时/永恒X化学计量/非化学计量的)。此外,还有第五种过渡,分配转换,用其功能的返回值替换目标位置的标记。我相信这可以用来描述任何动态系统,尽管我能够做到这一点很简单。 Petri网弧被理解为过渡和地点之间的关系(它们属于y_petri中的过渡,我发现有一种方法可以表达Petri网节点(地点/过渡)之间的关系,而不仅仅是弧。对于模拟(Petri网执行),一般的混合Petri网没有比隐式Euler方法更好的模拟方法(我称之为伪Euler方法),这是因为Petri网可以是用于实现一个图灵机,其中没有一般加速是可能的

如果你愿意在Ruby中操作,您可以在y_petriy_nelson DSL代码中描述一个Petri网。我不提供对XML的转换,因为我认为它不优于源DSL。编写这种导出例程是可能的,但我鼓励你使用DSL。