automation - Petri网绘图和代码生成

标签 automation code-generation metaprogramming petri-net

是否有用于绘制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_petriy_nelson DSL代码来描述Petri网。我不提供到XML的转换,因为我认为它不优于源DSL。可以编写这样的导出例程,但是我建议您改用DSL。

关于automation - Petri网绘图和代码生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4946213/

相关文章:

java - 从非java文件编译java类

c# - 生成 IL 以减少 for 循环中的计数器

ruby - 通过元编程生成的 Ruby 代码存储在哪里,是否可以查看/打印?

ruby - 是否有迭代编写新程序的程序?

PHP:如何创建对象变量?

automation - 如何将现有插件添加到 Vividus 项目

performance - 为什么文字值在放入堆之前先从只读内存复制到堆栈?

automation - 使用分支逻辑在本地自动化工作流程

automation - 如何在 Coq 中自动证明实数的简单不等式?

arrays - 手动展开 3 个嵌套循环 (Julia)