1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import random
- import sys
- sys.path.append("../../../src/")
- sys.path.append("../../src/")
- from DEVS import AtomicDEVS, CoupledDEVS
- class Node(AtomicDEVS):
- def __init__(self, nr, load):
- AtomicDEVS.__init__(self, "Node" + str(nr))
- self.state = None
- self.load = load
- def intTransition(self):
- for _ in xrange(self.load):
- pass
- return self.state
- def extTransition(self, inputs):
- return self.state
- def timeAdvance(self):
- return 1.0
- def outputFnc(self):
- return {}
- class ExchangeModel(AtomicDEVS):
- def __init__(self):
- AtomicDEVS.__init__(self, "Exchange")
- self.state = None
- self.inport = self.addInPort("in")
- self.outport = self.addOutPort("out")
- def intTransition(self):
- return self.state
- def extTransition(self, inputs):
- return self.state
- def timeAdvance(self):
- return 1.0
- def outputFnc(self):
- return {self.outport: [None]}
- class NodeGrid(CoupledDEVS):
- def __init__(self, load):
- CoupledDEVS.__init__(self, "Grid")
- for i in range(800):
- self.addSubModel(Node(i, load))
- class DualGrid(CoupledDEVS):
- def __init__(self, load):
- CoupledDEVS.__init__(self, "Root")
- grid1 = self.addSubModel(NodeGrid(load), 0)
- grid2 = self.addSubModel(NodeGrid(load), 1)
- grid1_node = self.addSubModel(ExchangeModel(), 0)
- grid2_node = self.addSubModel(ExchangeModel(), 1)
- self.connectPorts(grid1_node.outport, grid2_node.inport)
- self.connectPorts(grid2_node.outport, grid1_node.inport)
- if __name__ == "__main__":
- random.seed(1)
- from simulator import Simulator
- model = DualGrid(int(sys.argv[1]))
- sim = Simulator(model)
- sim.setTerminationTime(100)
- #sim.setVerbose(True)
- sim.setMessageCopy('none')
- sim.setStateSaving('assign')
- sim.setGVTInterval(5)
- memo = True if sys.argv[2] == "True" else False
- sim.setMemoization(memo)
- sim.setSchedulerSortedList()
- sim.simulate()
|