woods_runner.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from state.devstate import DevState
  2. from bootstrap.scd import bootstrap_scd
  3. from framework.conformance import Conformance, render_conformance_check_result
  4. from concrete_syntax.textual_od import parser, renderer
  5. from concrete_syntax.plantuml import renderer as plantuml
  6. from api.od import ODAPI
  7. from examples.semantics.operational.simulator import Simulator, RandomDecisionMaker, InteractiveDecisionMaker
  8. from examples.woods import models, opsem_python, opsem_rulebased
  9. from examples.woods.common import termination_condition, render_woods
  10. from util import loader
  11. state = DevState()
  12. scd_mmm = bootstrap_scd(state) # Load meta-meta-model
  13. ### Load (meta-)models ###
  14. woods_mm = loader.parse_and_check(state, models.woods_mm_cs, scd_mmm, "MM")
  15. woods_rt_mm = loader.parse_and_check(state, models.woods_rt_mm_cs, scd_mmm, "RT-MM")
  16. woods_m = loader.parse_and_check(state, models.woods_m_cs, woods_mm, "M")
  17. woods_rt_m = loader.parse_and_check(state, models.woods_rt_initial_m_cs, woods_rt_mm, "RT-M")
  18. print()
  19. rulebased_action_generator = opsem_rulebased.get_action_generator(state, woods_rt_mm)
  20. sim = Simulator(
  21. # action_generator=opsem_python.get_valid_actions,
  22. # action_generator=opsem_python.get_all_actions,
  23. action_generator=rulebased_action_generator,
  24. # decision_maker=RandomDecisionMaker(seed=3),
  25. decision_maker=InteractiveDecisionMaker(),
  26. termination_condition=termination_condition,
  27. check_conformance=True,
  28. verbose=True,
  29. renderer=render_woods,
  30. )
  31. od = ODAPI(state, woods_rt_m, woods_rt_mm)
  32. sim.run(od)