Моделирование с использованием очереди - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь смоделировать следующий простой сценарий, используя очередь:

«Студенты приходят в кабинет профессора, чтобы получать помощь по домашнему заданию каждые 10 минут в экспоненциальной форме. Время помощи студенту распределяется по экспоненте со средним значением 7 минут. Каково ожидаемое количество студентов, ожидающих помощи? и среднее время ожидания перед оказанием помощи? В течение какого процента времени ожидается, что в кабинете профессора будет более двух студентов? "

Я начал с создания следующей очереди, но я изо всех сил пытаюсь создать глобальное время и интегрировать учащихся, покидающих очередь.

import random as rd

class Queue(object):
    def __init__(self):
        self.officeHasStudent = False
        self.totalTime = 0
        self.numStudentsInLine = 0
    def studentArrives(self, time):
        self.totalTime += time
        if self.officeHasStudent == False:
            self.officeHasStudent = True
        else:
            self.numStudentsInLine += 1
    def __str__(self):
        temp = ''
        temp += 'Time Elapsed: ' + str(self.totalTime) + ' min\n'
        temp += 'number of students in line: ' + str(self.numStudentsInLine)
        return temp

Q = Queue()

for i in range(5):
    Q.studentArrives(rd.expovariate(1/10.0))

print(Q)

1 Ответ

0 голосов
/ 28 августа 2018

Полагаю, Queue также должен знать, когда последний студент вошел в кабинет и когда он должен уйти, помимо количества студентов в ряду и когда придет следующий. Кроме того, я бы не думал о «глобальном времени» как о первичной величине, вместо этого мой алгоритм был бы примерно таким:

Вы всегда должны рассчитать, что будет дальше:

  1. Новый ученик до конца очереди? Затем подсчитайте, когда следующий студент (после него) прибудет в очередь.
  2. Студент выбрасывается из офиса? Затем проверьте: есть ли еще студент, ожидающий в очереди?
    • если да: подсчитайте, когда он покинет офис.
    • если нет: подсчитайте, когда следующий студент прибудет, когда он автоматически будет принят в офис, поэтому рассчитайте также, когда он покидает офис и когда придет следующий студент.
  3. Вернитесь, чтобы увидеть, что будет дальше.

И, как я уже сказал, «глобальное время» - это просто производная величина, которую всегда легко рассчитать (обновить) для каждого действия.

...