From 5633bf17a9b6461f3c608223c489247f47bba9c3 Mon Sep 17 00:00:00 2001 From: Joeri Exelmans Date: Tue, 3 Dec 2024 17:58:49 +0100 Subject: [PATCH] i seem to have made some changes to the petrinet formalism --- examples/petrinet/metamodels/mm_design.od | 2 +- examples/petrinet/models/m_example_mutex.od | 24 +++++++++---------- examples/petrinet/models/m_example_simple.od | 8 +++---- .../r_fire_transition_nac.od | 2 +- .../r_fire_transition_rhs.od | 4 ++-- examples/petrinet/renderer.py | 2 +- examples/petrinet/runner.py | 10 ++++---- 7 files changed, 26 insertions(+), 26 deletions(-) diff --git a/examples/petrinet/metamodels/mm_design.od b/examples/petrinet/metamodels/mm_design.od index ffe4864..a5889b3 100644 --- a/examples/petrinet/metamodels/mm_design.od +++ b/examples/petrinet/metamodels/mm_design.od @@ -2,7 +2,7 @@ PNConnectable:Class { abstract = True; } -pn_arc:Association (PNConnectable -> PNConnectable) +arc:Association (PNConnectable -> PNConnectable) PNPlace:Class PNTransition:Class diff --git a/examples/petrinet/models/m_example_mutex.od b/examples/petrinet/models/m_example_mutex.od index 91c9600..810488e 100644 --- a/examples/petrinet/models/m_example_mutex.od +++ b/examples/petrinet/models/m_example_mutex.od @@ -13,18 +13,18 @@ leaveCritical_1:PNTransition enterCritical_2:PNTransition leaveCritical_2:PNTransition -:pn_arc (general_1 -> enterCritical_1) -:pn_arc (semaphore -> enterCritical_1) -:pn_arc (enterCritical_1 -> critical_1) +:arc (general_1 -> enterCritical_1) +:arc (semaphore -> enterCritical_1) +:arc (enterCritical_1 -> critical_1) -:pn_arc (critical_1 -> leaveCritical_1) -:pn_arc (leaveCritical_1 -> semaphore) -:pn_arc (leaveCritical_1 -> general_1) +:arc (critical_1 -> leaveCritical_1) +:arc (leaveCritical_1 -> semaphore) +:arc (leaveCritical_1 -> general_1) -:pn_arc (semaphore -> enterCritical_2) -:pn_arc (general_2 -> enterCritical_2) -:pn_arc (enterCritical_2 -> critical_2) +:arc (semaphore -> enterCritical_2) +:arc (general_2 -> enterCritical_2) +:arc (enterCritical_2 -> critical_2) -:pn_arc (leaveCritical_2 -> semaphore) -:pn_arc (leaveCritical_2 -> general_2) -:pn_arc (critical_2 -> leaveCritical_2) \ No newline at end of file +:arc (leaveCritical_2 -> semaphore) +:arc (leaveCritical_2 -> general_2) +:arc (critical_2 -> leaveCritical_2) \ No newline at end of file diff --git a/examples/petrinet/models/m_example_simple.od b/examples/petrinet/models/m_example_simple.od index 347ab75..a3eee8d 100644 --- a/examples/petrinet/models/m_example_simple.od +++ b/examples/petrinet/models/m_example_simple.od @@ -2,9 +2,9 @@ p0:PNPlace p1:PNPlace t0:PNTransition -:pn_arc (p0 -> t0) -:pn_arc (t0 -> p1) +:arc (p0 -> t0) +:arc (t0 -> p1) t1:PNTransition -:pn_arc (p1 -> t1) -:pn_arc (t1 -> p0) \ No newline at end of file +:arc (p1 -> t1) +:arc (t1 -> p0) \ No newline at end of file diff --git a/examples/petrinet/operational_semantics/r_fire_transition_nac.od b/examples/petrinet/operational_semantics/r_fire_transition_nac.od index 3c49f28..9207ce2 100644 --- a/examples/petrinet/operational_semantics/r_fire_transition_nac.od +++ b/examples/petrinet/operational_semantics/r_fire_transition_nac.od @@ -10,4 +10,4 @@ ps:RAM_PNPlaceState { t:RAM_PNTransition -:RAM_pn_arc (p -> t) +:RAM_arc (p -> t) diff --git a/examples/petrinet/operational_semantics/r_fire_transition_rhs.od b/examples/petrinet/operational_semantics/r_fire_transition_rhs.od index 50b1b19..46bb6b1 100644 --- a/examples/petrinet/operational_semantics/r_fire_transition_rhs.od +++ b/examples/petrinet/operational_semantics/r_fire_transition_rhs.od @@ -1,7 +1,7 @@ t:RAM_PNTransition { condition = ``` # remove 1 token from every place connected with incoming arc - for incoming in get_incoming(this, "pn_arc"): + for incoming in get_incoming(this, "arc"): in_place = get_source(incoming) in_place_state = get_source(get_incoming(in_place, "pn_of")[0]) in_num_tokens = get_slot_value(in_place_state, "numTokens") @@ -9,7 +9,7 @@ t:RAM_PNTransition { print("PNPlace", get_name(in_place_state), "now has", in_num_tokens-1, "tokens") # add 1 token to every place connected with outgoing arc - for outgoing in get_outgoing(this, "pn_arc"): + for outgoing in get_outgoing(this, "arc"): out_place = get_target(outgoing) out_place_state = get_source(get_incoming(out_place, "pn_of")[0]) out_num_tokens = get_slot_value(out_place_state, "numTokens") diff --git a/examples/petrinet/renderer.py b/examples/petrinet/renderer.py index 3cd0d64..835432e 100644 --- a/examples/petrinet/renderer.py +++ b/examples/petrinet/renderer.py @@ -35,7 +35,7 @@ def render_petri_net(od: ODAPI): for transition_name, _ in od.get_all_instances("PNTransition"): dot += f" {transition_name} [label=\"{transition_name}\\n\\n\\n­\"];\n" dot += "}\n" - for _, arc in od.get_all_instances("pn_arc"): + for _, arc in od.get_all_instances("arc"): src_name = od.get_name(od.get_source(arc)) tgt_name = od.get_name(od.get_target(arc)) dot += f"{src_name} -> {tgt_name};" diff --git a/examples/petrinet/runner.py b/examples/petrinet/runner.py index 121f577..bda607d 100644 --- a/examples/petrinet/runner.py +++ b/examples/petrinet/runner.py @@ -25,10 +25,10 @@ if __name__ == "__main__": # Read models from their files mm_cs = read_file('metamodels/mm_design.od') mm_rt_cs = mm_cs + read_file('metamodels/mm_runtime.od') - m_cs = read_file('models/m_example_simple.od') - m_rt_initial_cs = m_cs + read_file('models/m_example_simple_rt_initial.od') - # m_cs = read_file('models/m_example_mutex.od') - # m_rt_initial_cs = m_cs + read_file('models/m_example_mutex_rt_initial.od') + # m_cs = read_file('models/m_example_simple.od') + # m_rt_initial_cs = m_cs + read_file('models/m_example_simple_rt_initial.od') + m_cs = read_file('models/m_example_mutex.od') + m_rt_initial_cs = m_cs + read_file('models/m_example_mutex_rt_initial.od') # Parse them mm = loader.parse_and_check(state, mm_cs, scd_mmm, "Petri-Net Design meta-model") @@ -36,7 +36,6 @@ if __name__ == "__main__": m = loader.parse_and_check(state, m_cs, mm, "Example model") m_rt_initial = loader.parse_and_check(state, m_rt_initial_cs, mm_rt, "Example model initial state") - mm_rt_ramified = ramify(state, mm_rt) rules = loader.load_rules(state, @@ -52,6 +51,7 @@ if __name__ == "__main__": decision_maker=simulator.InteractiveDecisionMaker(auto_proceed=False), # decision_maker=simulator.RandomDecisionMaker(seed=0), renderer=lambda od: render_petri_net(od) + render_od(state, od.m, od.mm), + # renderer=lambda od: render_od(state, od.m, od.mm), ) sim.run(ODAPI(state, m_rt_initial, mm_rt))