trafficlight_system.py 860 B

123456789101112131415161718192021222324252627282930313233
  1. ### Model
  2. from pypdevs.DEVS import *
  3. from trafficlight import TrafficLight
  4. from policeman import Policeman
  5. def convert_police2light(evt):
  6. if evt == "take_break":
  7. return "toAuto"
  8. elif evt == "go_to_work":
  9. return "toManual"
  10. class TrafficLightSystem(CoupledDEVS):
  11. def __init__(self):
  12. CoupledDEVS.__init__(self, "system")
  13. self.light = self.addSubModel(TrafficLight())
  14. self.police = self.addSubModel(Policeman())
  15. self.connectPorts(self.police.out, self.light.interrupt, convert_police2light)
  16. def select(self, imm):
  17. if self.police in imm:
  18. return self.police
  19. else:
  20. return self.light
  21. ### Experiment
  22. from pypdevs.simulator import Simulator
  23. sim = Simulator(TrafficLightSystem())
  24. sim.setVerbose()
  25. sim.setTerminationTime(1000)
  26. sim.setClassicDEVS()
  27. sim.simulate()