def test_probability_distribution_source(self):
        processing_times = selection(self.cols['Event_Name'],
                                     lambda x: x == Constants.NEXT_ARRIVAL,
                                     self.big_matrix)
        processing_times = transformCols(
            [self.cols['Event_Scheduled'], self.cols['Event-Time']],
            self.cols['Current_Time'], lambda x, y: y - x, processing_times)
        processing_times = groupBy([self.cols['Shift']], [
            self.cols['Current_Time'], self.cols['Current_Time'],
            self.cols['Current_Time'], self.cols['Current_Time']
        ], [countA, sumA, minA, maxA], processing_times, True)
        processing_times = transformCols([1, 2], 1, lambda x, y: y / x,
                                         processing_times)  # average
        processing_times = projection([0, 1, 3, 4], processing_times)

        self.assertEquals(len(processing_times), 1,
                          "There should not be any shifts")

        shift3 = processing_times[0]
        self.assertGreater(shift3[2], 0, "The time should be greater or equal")

        random = Random()
        self.assertTrue(
            abs(shift3[2] - random.LAMBDA) < 50,
            "The lambda should be almost equal")
示例#2
0
 def scheduleEndService(self):
     operationType = self.hostedEntity.getOperationType()
     rand = Random()
     serviceIncrement = rand.processorIncrement(operationType)
     endServiceEvent = Event(
         self,  # eventCreator
         Constants.END_SERVICE,  # eventName
         self.core.currentTime,  # eventScheduled
         self.core.currentTime + serviceIncrement  # eventTime
     )
     return endServiceEvent
示例#3
0
 def scheduleNextArrival(self):
     shift = self.core.getCurrentShift()
     rand = Random()
     arrivalIncrement = rand.sourceIncrement(shift)
     arrivalEvent = Event(
         self,  # eventCreator
         Constants.NEXT_ARRIVAL,  # eventName
         self.core.currentTime,  # eventSheduled
         self.core.currentTime + arrivalIncrement  # eventTime
     )
     return arrivalEvent
示例#4
0
    def __init__(self, parameters=None):
        if parameters is None:
            self.parameters = Parameters()
        else:
            self.parameters = parameters
        num_sources = Constants.DEFAULT_SOURCES
        num_processors = self.parameters.num_processors
        # Attributes initialization
        self.processors = []
        self.sources = []
        self.eventsList = PriorityQueue(0)  # maxsize = 0 (infinite)
        self.previousTime = Constants.SIMULATION_INITIAL_TIME
        self.currentTime = Constants.SIMULATION_INITIAL_TIME
        self.idleProcessors = 0
        self.serviceProcessors = 0
        self.entitiesSystem = 0
        self.service_per_shift = []
        self.service_per_total = []
        self.shift_durations = self.parameters.getParameters()[1]
        self.shift_next_time = self.shift_durations[0]
        self.shift_next_index = 1

        # Instance creation
        self.queue = Queue(Constants.SLOTS_BUFFER)
        self.parking = Queue(Constants.SLOTS_QUEUE)
        self.random = Random()
        for _ in range(0, num_processors):
            self.processors.append(Processor(self))
        for _ in range(0, num_sources):
            self.sources.append(Source(self))
        # Dependency injection
        for source in self.sources:
            source.addOutput(self.queue)  # source -> queue
        self.queue.addOutput(self.parking)  # queue -> parking
        self.parking.addInput(self.queue)  # parking <- queue
        for processor in self.processors:
            self.parking.addOutput(processor)  # parking -> processor
            processor.addInput(self.parking)  # processor <- parking
        self.output_file = None
        self.numberOfIdleProcessors = num_processors
示例#5
0
 def setUp(self):
     self.parametersObj = Parameters()
     self.parametersObj.WITH_SHIFTS = True
     rand = Random()
     rand.initialization()
示例#6
0
 def setWithShifts(self, value):
     param = Parameters()
     param.WITH_SHIFTS = value
     self.randObj = Random()
     self.randObj.initialization()
示例#7
0
 def test_ensure_there_s_one_instance(self):
     rand = Random()
     assert rand is self.randObj
 def setUp(self):
     param = Parameters()
     param.WITH_SHIFTS = True
     self.randObj = Random()
     self.randObj.initialization()
     self.coreObj = Core()
 def setWithShifts(cls, value):
     param = Parameters()
     param.WITH_SHIFTS = value
     cls.randObj = Random()
     cls.randObj.initialization()