Her*_*che 8 automation code-generation metaprogramming petri-net
是否有任何用于绘制Petri网并从中生成任何源代码的软件?源代码可以是任何已知的编程语言......
稍微不太理想的选择是输出一个文件,其中只有基于文本的文件中的Petri网图形的描述,采用某种开放格式,如XML或任何其他数据语言.然后我可以自己编写代码生成器,但至少我想避免gui/graph开发部分;))
谢谢
我正在y_petri用 Ruby 进行开发。目前,YPetri 可以处理可视化(YPetri::Net类具有使用Graphviz#visualize绘制网络的方法),但不能处理您似乎想到的 GUI 编辑。仅供参考,首先,Petri 网中的 GUI 编辑并不像看起来那么重要。
使用的数据语言是 Ruby 本身(更准确地说,是用 Ruby 编写的内部 DSL)。
Petri 网的一个主要问题是,它们的种类实在太多了。YPetri试图成为一个通用的 Petri 网框架,具有 1 种位置(任意标记类型)和 4 种基本转换类型(定时/永恒 x 化学计量/非化学计量)。此外,还有第五种转换,即赋值转换,它用其函数的返回值替换目标位置的标记。我相信这可以用来描述任何动态系统,同时尽可能地简洁。
Petri网弧被理解为转换和位置之间的关系(它们属于.中的转换y_petri)。我发现有一种方法可以表达Petri网节点(位置/转换)之间的关系而不仅仅是弧。为此,我使用 Ted Nelson 的 ZZ 结构(ZigZag)基本上作为关系数据库的替代品。
至于模拟(Petri网执行),一般的混合Petri网没有比隐式欧拉方法(我称之为伪欧拉)更快的模拟方法。这是因为 Petri 网可用于实现图灵机,而图灵机不可能实现一般加速。
如果您愿意使用 Ruby 进行操作,您可以用 DSL 代码来描述 Petriy_petri网y_nelson。我不提供到 XML 的转换,因为我不认为它优于源 DSL。可以编写这样的导出例程,但我鼓励您改用 DSL。
查看PetriNetSim,它是用 Java 开发的,您可以绘制和模拟简单/彩色/定时 petrinet。它带有几个例子。您可以在 Java 中扩展弧和节点约束。最后你可以看到生成的petri网的java类
您可以从 github https://github.com/guillem-catala/PetriNetSim获取源代码
| 归档时间: |
|
| 查看次数: |
7194 次 |
| 最近记录: |