123456789101112131415161718192021222324252627282930313233 |
- ### Model
- from pypdevs.DEVS import *
- from trafficlight import TrafficLight
- from policeman import Policeman
- def convert_police2light(evt):
- if evt == "take_break":
- return "toAuto"
- elif evt == "go_to_work":
- return "toManual"
- class TrafficLightSystem(CoupledDEVS):
- def __init__(self):
- CoupledDEVS.__init__(self, "system")
- self.light = self.addSubModel(TrafficLight())
- self.police = self.addSubModel(Policeman())
- self.connectPorts(self.police.out, self.light.interrupt, convert_police2light)
- def select(self, imm):
- if self.police in imm:
- return self.police
- else:
- return self.light
- ### Experiment
- from pypdevs.simulator import Simulator
- sim = Simulator(TrafficLightSystem())
- sim.setVerbose()
- sim.setTerminationTime(1000)
- sim.setClassicDEVS()
- sim.simulate()
|