2011-02-09 23 views
8

Petri ağı çizmek ve buradan herhangi bir kaynak kodu oluşturmak için herhangi bir yazılım var mı? Kaynak kodu zaten bilinen herhangi bir programlama dilinde olabilir ...Petri net çizim ve kod üretimi

Biraz daha az istenen bir seçenek, bir dosya XML tabanlı gibi açık bir biçimde metin tabanlı bir dosyada sadece Petri net grafiklerin açıklaması ile çıktı veya diğer herhangi bir veri dili. Sonra kod üreteci kendim yazabilirim, ama en azından gui/grafik geliştirme kısmını önlemek istiyoruz;))

Teşekkür

+1

ben orada –

+0

bazı yararlı Bu edilir bulursam açıklayacağım http://www.informatik.uni-hamburg.de/TGI/PetriNets/tools/quick.html de ilgili yazılımın uzun bir liste buldum harika ayrıca http://statemachines.umple.org –

cevap

2

Ben CPN Tools bakardık kaynak kodunu kapmak

net oluşturulan Petri java sınıfları görebilirsiniz. Her türlü inşaat, analiz, Renkli Petri ağlarının simülasyonunu ve kod üretme kabiliyetlerini sağlarlar.

2

Ruby'de y_petri geliştiriyorum. Şu anda, YPetri görselleştirme işleyebilir (YPetri::Net sınıf Graphviz kullanarak net çizmek için #visualize10 yöntemi vardır), ancak akılda tuttuğunuz GUI düzenleme değil. FYI, ilk olarak, Petri ağlarında GUI düzenlemesi göründüğünden daha az önemli.

Kullanılan veri dili, Ruby'nin kendisidir (daha doğrusu ve Ruby'de dahili DSL yazılmıştır). Petri ağları ile ilgili önemli bir konu, var olan çok fazla çeşidin varlığıdır. YPetri, 1 tür yer (keyfi markalama tipi) ve 4 temel geçiş türü (zamanlanmış/zamansız x stokiyometrik/stoikiometrik olmayan) ile evrensel bir Petri ağ çerçevesi olmaya çalışır. Ek olarak, hedef yerlerin işaretlemesinin işlevinin geri dönüş değeriyle değiştirildiği beşinci bir geçiş, atama geçişi vardır. Bunun herhangi bir dinamik sistemi tanımlamak için kullanılabileceğine inanıyorum ki, bunu yapabildiğim kadar harikulade.

Petri ağları, geçişler ile yerler arasındaki ilişkiler olarak anlaşılırlar (bunlar, y_petri'daki geçişlere aittir. Petri ağ düğümleri (yerler/geçişler) arasındaki ilişkileri sadece yaylardan daha iyi ifade etmenin bir yolunun yararlı olduğunu buldum. Bu amaçla, simülasyon (Petri net yürütme) ile ilgili olarak, genel hibrid Petri ağları, örtülü Euler yönteminden (sözde Euler olarak adlandırıyorum) daha hızlı bir simülasyon yöntemine sahip değildir. Genel hızlandırmanın mümkün olmadığı bir Turing makinesini uygulamak için kullanılır ..

Ruby'de çalışmaya istekli iseniz, Böylece bir Petri ağını y_petri veya y_nelson DSL kodunda tanımlayabilirsiniz. Kaynak DSL'ye üstün gelmediği için XML'e dönüştürme sağlamadım. Böyle bir ihracat rutinini yazmak mümkün olabilir, ancak bunun yerine DSL'yi kullanmanızı tavsiye ederim.