Exemple #1
0
class Simulation:
    def __init__(self):
        with open('simulation.txt', 'r') as file:
            self._data = Queue()
            for line in file.readlines():
                self._data.enqueue(line.strip('\n'))
        self._description = self._data.dequeue()
        self._clock = Clock(int(self._data.dequeue())*60)
        self._number_of_windows = int(self._data.dequeue())
        self._lines = self._data.dequeue()
        self._theater = Theater(self._number_of_windows, self._lines)
        for window in range(self._number_of_windows):
            self._theater.add_window(int(self._data.dequeue()))
        end = False
        while self._clock.check_stop():
            if self._clock._time == 0:
                print('Time {:5} - Simulation started'.format(self._clock._time))
            if self._data.front() == 'END':
                end = True
            if end == False:
                if int(self._data.front().split()[1]) == self._clock._time:
                    for customer in range(int(self._data.dequeue().split()[0])):
                        line_number = self._theater.add_customer(
                            self._clock._time)
                        print('Time {:5} - Customer entered line #{}'.format(
                            self._clock._time, line_number))
            self._theater.move_customer_to_window(self._clock._time)
            self._clock.increment()
    def __init__(self, line_num: int, clock: Clock):
        self._line_num = line_num
        self._clock = clock
        self._queue = Queue()

        # Statistics
        self._max_length = 0
        self._customer_wait_times = []
Exemple #3
0
class TicketWindow:
    def __init__(self, window_number, process_time):
        self._queue = Queue()
        self._window_number = window_number
        self._process_time = process_time
    def __repr__(self):
        return 'Ticket Window {} Customer: {} Process Time: {}'.format(
            self._window_number, repr(self._queue), self._process_time)
    def enqueue(self, customer):
        self._queue.enqueue(customer)
    def check_empty(self):
        return len(self._queue) == 0
Exemple #4
0
 def __init__(self, line_number):
     self._line_number = line_number
     self._queue = Queue()
     self._max_length = 0
     self._current_wait_time = 0
     self._total_wait_time = 0
     self._max_wait_time = 0
class TicketLine:
    def __init__(self, line_num: int, clock: Clock):
        self._line_num = line_num
        self._clock = clock
        self._queue = Queue()

        # Statistics
        self._max_length = 0
        self._customer_wait_times = []

    def __str__(self):
        result = 'Line #{}'.format(self._line_num) + ": "
        result += str(list(self._queue))
        return result

    def __len__(self):
        return len(self._queue)

    def get_statistics(self):
        return TicketLineStatistics(len(self), self._max_length, self._customer_wait_times)

    def is_empty(self):
        return len(self._queue) == 0

    def get_line_num(self):
        return self._line_num

    def enqueue_customer(self, customer: Customer):
        self._queue.enqueue(customer)

        if len(self._queue) > self._max_length:
            self._max_length = len(self._queue)

    def dequeue_customer(self):
        first_in_line = self._queue.front()
        self._customer_wait_times.append(first_in_line.get_time_spent_in_line())
        return self._queue.dequeue()

    def update_waiting_times(self):
        for customer in self._queue:
            customer.increment_wait_time()
Exemple #6
0
class TicketLine:
    def __init__(self, line_number):
        self._line_number = line_number
        self._queue = Queue()
        self._max_length = 0
        self._current_wait_time = 0
        self._total_wait_time = 0
        self._max_wait_time = 0
    def enqueue(self, time):
        self._queue.enqueue((Customer(), time))
    def dequeue(self):
        return self._queue.dequeue()
    def front(self):
        return self._queue.front()
    def customer_in_line(self):
        return len(self._queue) > 0
    def __len__(self):
        return len(self._queue)
    def __gt__(self, line):
        return len(self) > len(line)
    def __repr__(self):
        return 'Ticket Line {}: {}'.format(self._line_number,
                                           repr(self._queue))
Exemple #7
0
 def __init__(self, window_number, process_time):
     self._queue = Queue()
     self._window_number = window_number
     self._process_time = process_time