Предыстория: мой вопрос должен быть относительно простым, однако я не могу понять его. Я написал функцию, касающуюся теории очередей, и она будет использоваться для планирования службы скорой помощи. Например, сколько звонков для обслуживания я могу ожидать в данный период времени. Функция принимает два параметра;начальное значение количества машин скорой помощи в моей системе, начиная с 0 и заканчивая 100 машинами скорой помощи. Это покажет вероятность отсутствия вызовов для обслуживания, одного вызова для обслуживания, трех вызовов для обслуживания ... до 100 вызовов для обслуживания. Второй параметр - это число прибытий, которое является историческим прошлым прибытием в моей системе. Функция запускается и выводит результат на мой экран. Я проверил математику, и она кажется правильной.
Это Python 3.7 с дистрибутивом Anaconda.
У меня такой вопрос: я хотел бы обработать эти данные еще дальше, но я не знаю, как их собрать и сделать больше математики. Например, я хотел бы взять этот список и накапливать значения вероятности. При пятикратном количестве поступлений существует кумулятивная вероятность 61,56% как минимум из пяти обращений за обслуживанием и т. Д.
Второй пример того, как я хотел бы обработать эти данные, - это отформатировать их в процентах изапишите текстовый файл
Третий пример - обработка кумулятивных вероятностей и исключение любых значений, превышающих кумулятивное значение 99% (потому что они исчезают в чрезвычайно малых числах).
Четвертым примером было бы создание гистограммы, показывающей вероятность n обращений за обслуживанием.
Это некоторые из вещей, которые я хочу сделать с вычислениями теории очередей. И еще много всего. Я планирую написать приложение большего размера. Но я застрял в этой точке. Функция записывает вывод в мою консоль Python 3.7. Как «захватить» этот вывод как объект или что-то еще и выполнить другую обработку данных?
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import math
import csv
def probability_x(start_value = 0, arrival_rate = 0):
probability_arrivals = []
while start_value <= 100:
probability_arrivals = [start_value, math.pow(arrival_rate, start_value) * math.pow(math.e, -arrival_rate) / math.factorial(start_value)]
print(probability_arrivals)
start_value = start_value + 1
return probability_arrivals
#probability_x(arrival_rate = 5, x = 5)
#The code written above prints to the console, but my goal is to take the returned values and make other calculations.
#How do I 'capture' this data for further processing is where I need help (for example, bar plots, cumulative frequency, etc )
#failure. TypeError: writerows() argument must be iterable.
with open('ExpectedProbability.csv', 'w') as writeFile:
writer = csv.writer(writeFile)
for value in probability_x(arrival_rate = 5):
writer.writerows(value)
writeFile.close()
#Failure. Why does it return 2. Yes there are two columns but I was expecting 101 as the length because that is the end of my loop.
print(len(probability_x(arrival_rate = 5)))