是否有用于绘制Petri网并从中生成任何源代码的软件?源代码可以是任何已知的编程语言。
稍微不太理想的选择是在一个基于文本的文件中以某种开放格式(例如XML或任何其他数据语言)输出仅包含Petri网图描述的文件。然后,我可以自己编写代码生成器,但至少我想避免使用gui/graph开发部分;))
谢谢
最佳答案
我正在用Ruby开发 y_petri
。目前,YPetri可以处理可视化(YPetri::Net
类具有使用Graphviz绘制网络的#visualize
方法),但是您似乎没有想到的GUI编辑。仅供引用,首先,Petri网中的GUI编辑没有看起来那么重要。
使用的数据语言是Ruby本身(更确切地说,是用Ruby编写的内部DSL)。
Petri网的一个主要问题是,它们存在的种类太多了。 YPetri
试图成为一个通用的Petri网框架,具有1种位置(任意标记类型)和4种基本类型的转换(定时/无时限x化学计量/非化学计量)。此外,还有第五种过渡,即分配过渡,用其功能的返回值代替目标位置的标记。我相信这可以用来描述任何动态系统,尽管它与我所能做到的一样简约。
Petri网弧被理解为过渡和位置之间的关系(它们属于y_petri
中的过渡。我发现,有一种方法也可以表达Petri网节点(位置/过渡)之间的关系,而不仅仅是弧。为此, I use Ted Nelson's ZZ structure (ZigZag) basically as a replacement for a relational database。
至于仿真(Petri网执行),一般的混合Petri网没有比隐式Euler方法(我称其为伪Euler)更快的仿真方法。这是因为可以使用Petri网实现图灵机,因此无法实现一般的加速。
如果您愿意使用Ruby进行操作,则可以使用y_petri
或y_nelson
DSL代码来描述Petri网。我不提供到XML的转换,因为我认为它不优于源DSL。可以编写这样的导出例程,但是我建议您改用DSL。
关于automation - Petri网绘图和代码生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4946213/