Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 06.02.2022
Сообщений: 28

Подсчет доли простоя каналов обслуживания СМО

05.05.2024, 14:53. Показов 653. Ответов 0

Студворк — интернет-сервис помощи студентам
Как правильно подсчитать долю простоя каналов обслуживания?
При увеличении времени работы мы получаем довольно высокую погрешность:

Схема СМО:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import random
import matplotlib.pyplot as plt
 
# Параметры системы
simulation_time = 30 * 60  # время симуляции в секундах (30 минут)
lambda_ = 3  # среднее количество требований в минуту
arrival_probability = lambda_ / 60  # вероятность прибытия требования за каждую секунду
mu_A = 1  # средняя скорость обслуживания на канале A (требований за минуту)
mu_B = 3  # средняя скорость обслуживания на канале B (требований за минуту)
max_queue_length = 2  # максимальная длина очереди
 
# Вероятность обслуживания за каждую секунду
service_probability_A = mu_A / 60
service_probability_B = mu_B / 60
 
# Состояние системы
queue = 0  # текущее количество требований в очереди
failures = 0  # количество отказов
 
# Состояние каналов
busy_A = False  # канал A занят или нет
busy_B = False  # канал B занят или нет
 
# Счетчики времени простоя
idle_time_A = 0
idle_time_B = 0
 
sum_received_claims = 0  # сумма пришедших требований
 
# Отслеживание данных по времени
queue_over_time = []
failures_per_minute = []
 
# Имитация в течение заданного времени
for t in range(simulation_time):
    print("---Секунда:\t", t+1, "---")
    # Прибытие требований
    if random.random() < arrival_probability:
        print("Пришел клиент")
        if queue < max_queue_length:
            queue += 1
            print("Текущая очередь: ", queue)
            sum_received_claims += 1
        else:
            print("человек отклонен")
            failures += 1
 
    # Проверка возможности начать обслуживание на каналах
    if not busy_A and queue > 0:
        print("Начато обслуживание в А")
        queue -= 1
        print("Текущая очередь: ", queue)
        busy_A = True
    elif not busy_B and queue > 0:
        print("Начато обслуживание в B")
        queue -= 1
        print("Текущая очередь: ", queue)
        busy_B = True
 
    # Время простоя каналов
    if not busy_A and queue == 0:
        idle_time_A += 1
    if not busy_B and queue == 0:
        idle_time_B += 1
 
    # Проверка освобождения каналов
    if busy_A and random.random() < service_probability_A:
        print("Завершено обслуживание в А")
        busy_A = False
        if queue > 0:
            print("Начало обслуживания в A")
            busy_A = True
            queue -= 1
    if busy_B and random.random() < service_probability_B:
        print("Завершено обслуживание в B")
        busy_B = False
        if queue > 0:
            print("Начало обслуживания в B")
            busy_B = True
            queue -= 1
 
    # Сбор данных каждую минуту
    if t == 0:
        queue_over_time.append(queue)
        failures_per_minute.append(failures)
    elif (t+1) % 60 == 0:
        queue_over_time.append(queue)
        failures_per_minute.append(failures)
 
# Среднее время простоя канала A и B
average_idle_A = idle_time_A / simulation_time
average_idle_B = idle_time_B / simulation_time
 
print("Общее количество пришедших требований: ", sum_received_claims)
print("Количество обслуженных требований", sum_received_claims-failures)
print("Доля обслуженных требований:", (sum_received_claims - failures) / sum_received_claims)
print("Количество отказов:", failures)
print("Доля отказов:", failures / sum_received_claims)
print("Средняя доля времени простоя канала A:", average_idle_A)
print("Средняя доля времени простоя канала B:", average_idle_B)
print("Средняя доля времени простоя обоих каналов обслуживания:", (average_idle_A + average_idle_B) / 2)
 
# Графики
plt.figure(figsize=(16, 9))
# Добавляем точки на график очереди во времени
plt.plot(list(range(0, simulation_time+1, 60)), queue_over_time, marker='o', linestyle='-', markersize=6)
plt.grid(True)
plt.xlabel("Время (в минутах)")
plt.ylabel("Количество требований в очереди")
plt.title("Состояние очереди по минутам")
plt.show()
 
plt.figure(figsize=(16, 9))
# Добавляем точки на график отказов за каждую минуту
plt.plot(list(range(0, simulation_time+1, 60)), failures_per_minute, marker='o', linestyle='-', markersize=6, color='red')
plt.grid(True)
plt.xlabel("Время (в минутах)")
plt.ylabel("Количество отказов")
plt.title("Отказы за каждую минуту")
plt.show()
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.05.2024, 14:53
Ответы с готовыми решениями:

Теория массового обслуживания (СМО)
Здравствуйте, у меня есть задача по СМО: Фирма принимает заказы на некоторые услуги по телефону в течение одного часа. В стационарном...

Система массового обслуживания(СМО)
Нужно решить задачку В мастерской бытового обслуживания работают три мастера. Если клиент заходит в мастерскую, когда все мастера...

Двухканальная СМО. Среднее время обслуживания
Задание: есть двухканальная СМО с отказами. На ее вход поступает поток заявок с интенсивностью 4 заявки в час. Среднее время обслуживание...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2024, 14:53
Помогаю со студенческими работами здесь

Модели систем массового обслуживания (СМО)
Во всех задачах предполагается, что поток требований является простейшим (пуассоновским), а продолжительность обслуживания распределена по...

Решение СМО (Система массового обслуживания)
Доброго времени суток!!! Как называется такая СМО и как примерно эту задачу решать? Заранее спасибо!!!

Моделирование процесса обслуживания смо с отказами
Здравствуйте, подскажите пожалуйста что не правильно в работе с массивом Т (массив принятых и не принятых заявок), что он выводится не...

Моделирование СМО с внешним переключением режимов обслуживания
Проверьте, пожалуйста, правильно ли переключаются режимы и помогите определить суммарную длительность каждого режима. На вход СМО...

СМО цикличного обслуживания с внешним управлением режимами
СМО цикличного обслуживания с внешним управлением режимами На вход СМО поступает поток заявок 3-х типов; c остаточной вероятностью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru