Add queueing example model

This commit is contained in:
Yentl Van Tendeloo 2017-04-06 12:02:58 +02:00
parent 2ca0c68e31
commit d4aa028d4f
9 changed files with 825 additions and 0 deletions

View file

@ -0,0 +1,33 @@
from pypdevs.DEVS import CoupledDEVS
# Import all models to couple
from generator import Generator
from queue import Queue
from processor import Processor
from collector import Collector
class QueueSystem(CoupledDEVS):
def __init__(self, mu, size, num, procs):
CoupledDEVS.__init__(self, "QueueSystem")
# Define all atomic submodels of which there are only one
generator = self.addSubModel(Generator(mu, size, num))
queue = self.addSubModel(Queue(len(procs)))
collector = self.addSubModel(Collector())
self.connectPorts(generator.out_event, queue.in_event)
# Instantiate desired number of processors and connect
processors = []
for i, param in enumerate(procs):
processors.append(self.addSubModel(
Processor(i, param)))
self.connectPorts(queue.out_proc[i],
processors[i].in_proc)
self.connectPorts(processors[i].out_finished,
queue.in_finish)
self.connectPorts(processors[i].out_proc,
collector.in_event)
# Make it accessible outside of our own scope
self.collector = collector