No project description provided
Project description
smo_rejection
smo_rejection - это Python-библиотека для симуляции системы массового обслуживания (СМО) с отказами. Библиотека позволяет задавать различные параметры, такие как количество каналов обслуживания, время обслуживания заявок, интенсивность поступления заявок и общее время симуляции. После запуска симуляции библиотека предоставляет результаты, включая количество обслуженных и отклоненных заявок, а также подробную информацию о каждой заявке.
Установка
Для установки библиотеки smo_rejection через pip, выполните следующую команду:
pip install smo_rejection
Использование
Для использования библиотеки smo_rejection необходимо импортировать функцию run_simulation из модуля simulation и предоставить необходимые параметры. Вот пример использования: ```python from smo_rejection.simulation import run_simulation
### Параметры симуляции
T = 100.0 # Общее время симуляции
num_channels = 3 # Количество каналов обслуживания
service_time = 2.0 # Время обслуживания одной заявки
num_iterations = 10 # Количество итераций симуляции
alfa = 5 # Параметр для расчета интервалов между заявками
### Запуск симуляции
results = run_simulation(T, num_channels, service_time, num_iterations, alfa)
### Обработка результатов
for result in results:
print(f"Итерация {result.iteration}")
print(f"Обслуженных заявок: {result.served_requests}")
print(f"Отклоненных заявок: {result.rejected_requests}")
# Другие операции с результатами```
Модули и методы
exception.py
Модуль exception.py содержит определения пользовательских исключений, которые используются в вашей библиотеке для обработки ошибок различных сценариев. Вот краткое описание каждого из них:
-
InvalidInputError: Исключение, которое выбрасывается при обнаружении недопустимых входных значений. -
SimulationError: Исключение, которое возникает в случае ошибок во время симуляции. -
NumIterationsNegative: Исключение, выбрасываемое, если количество итераций отрицательно. -
NumIterationsIsZero: Исключение, выбрасываемое, если количество итераций равно нулю. -
NumChannelsNegative: Исключение, выбрасываемое, если количество каналов отрицательно. -
NumChannelsIsZero: Исключение, выбрасываемое, если количество каналов равно нулю. -
AlphaIsZero: Исключение, выбрасываемое, если параметр alpha равен нулю. -
AlphaNegative: Исключение, выбрасываемое, если параметр alpha отрицательный. -
ServiceTimeNegative: Исключение, выбрасываемое, если время обслуживания отрицательное. -
MaxTimeNegative: Исключение, выбрасываемое, если максимальное время симуляции отрицательное.
models.py
Модуль models.py содержит определения двух классов, которые используются для организации параметров симуляции и хранения результатов:
-
SimulationParameters: Этот класс используется для хранения параметров симуляции. Он содержит следующие атрибуты:T (float): Общее время симуляции.num_channels (int): Количество каналов обслуживания (потоков).service_time (float): Время обслуживания одной заявки.num_iterations (int): Количество итераций симуляции.alfa (int): Параметр для расчета интервалов между заявками.
-
SimulationResult: Этот класс используется для хранения результатов симуляции. Он содержит следующие атрибуты:iteration (int): Номер итерации симуляции.served_requests (int): Количество обслуженных заявок.rejected_requests (int): Количество отклоненных заявок.request_times (list): Список, содержащий информацию о каждой заявке, включая время поступления, случайное значение, интервал между заявками, занятость серверов и статус обслуживания.
pdf_export.py
Модуль pdf_export.py предоставляет функцию export_to_pdf, которая позволяет экспортировать результаты симуляции в PDF-файл. Для использования этой функции вам необходимо импортировать её из этого модуля.
from pdf_export import export_to_pdf
Функция export_to_pdf
Эта функция принимает два аргумента:
results (list): Список результатов симуляции.filename (str): Имя файла для сохранения результатов.
Пример вызова функции:
export_to_pdf(results, "simulation_results.pdf")
Примечание
Для корректной работы модуля требуется установка библиотеки ReportLab. Вы можете установить её с помощью следующей команды:
pip install reportlab
Этот модуль обеспечивает удобный способ сохранения результатов симуляции в формате PDF.
Функция export_to_excel
Эта функция принимает два аргумента:
results (list): Список результатов симуляций, где каждый элемент содержит данные о заявках.filename (str): Имя файла для сохранения Excel-документа.
Пример вызова функции:
export_to_excel(results, "simulation_results.xlsx")
Описание
Функция создает новую рабочую книгу Excel и записывает в нее результаты симуляций. Каждая симуляция начинается с заголовка, содержащего номер симуляции, затем следуют заголовки столбцов и данные о заявках. По завершении каждой симуляции записываются итоговые значения, а также в конце добавляется среднее количество обслуженных заявок по всем симуляциям.
Примечание
Для корректной работы модуля необходима установка библиотеки openpyxl. Вы можете установить ее с помощью следующей команды:
pip install openpyxl
Этот модуль предоставляет удобный способ сохранения результатов симуляции в формате Excel.
processing.py
Модуль processing.py предоставляет функцию process_iteration, которая выполняет одну итерацию симуляции обслуживания заявок в системе массового обслуживания (СМО) с отказами.
Функция process_iteration
Эта функция принимает два аргумента:
params (SimulationParameters): Параметры симуляции.iteration (int): Номер текущей итерации.
Возвращает:
SimulationResult: Объект, содержащий результаты текущей итерации симуляции.
Описание:
Функция моделирует процесс поступления и обслуживания заявок в системе с несколькими каналами обслуживания (потоками). На каждом шаге времени генерируется случайное значение, на основе которого рассчитывается интервал времени до следующей заявки. Если в момент поступления заявки есть свободный канал обслуживания, заявка обслуживается, иначе она отклоняется. Функция отслеживает время занятости каждого канала обслуживания и статистику обслуженных и отклоненных заявок. Результаты итерации сохраняются в объекте SimulationResult, который возвращается функцией.
Для использования этой функции в вашем проекте, вы можете импортировать ее следующим образом:
from .processing import process_iteration
Этот модуль обеспечивает моделирование работы СМО с отказами, что позволяет анализировать и оценивать эффективность таких систем.
simulation.py
Модуль simulation.py предоставляет функцию run_simulation, которая запускает симуляцию обслуживания заявок с заданными параметрами.
Функция run_simulation
Эта функция принимает следующие параметры:
T (float): Общее время симуляции.num_channels (int): Количество каналов обслуживания (потоков).service_time (float): Время обслуживания одной заявки.num_iterations (int): Количество итераций симуляции.alfa (int): Параметр для расчета интервалов между заявками.
Возвращает:
list[SimulationResult]: Список объектов SimulationResult, содержащих результаты каждой итерации симуляции.
Исключения:
MaxTimeNegative: ЕслиTменьше или равно нулю.NumChannelsNegative: Еслиnum_channelsменьше или равно нулю.NumChannelsIsZero: Еслиnum_channelsравно нулю.ServiceTimeNegative: Еслиservice_timeменьше или равно нулю.NumIterationsNegative: Еслиnum_iterationsменьше нуля.NumIterationsIsZero: Еслиnum_iterationsравно нулю.AlphaNegative: Еслиalfaменьше нуля.AlphaIsZero: Еслиalfaравно нулю.
Описание: Функция выполняет следующие действия:
- Проверяет корректность входных параметров и выбрасывает соответствующее исключение в случае некорректных значений.
- Создает объект
SimulationParametersс заданными параметрами. - Запускает цикл по количеству итераций, на каждой итерации вызывая функцию
process_iterationи сохраняя ее результат. - Возвращает список объектов
SimulationResult, содержащих результаты каждой итерации симуляции.
Для использования этой функции в вашем проекте, вы можете импортировать ее следующим образом:
from .simulation import run_simulation
Этот модуль предоставляет удобный способ запуска симуляции обслуживания заявок с заданными параметрами.
utils.py
Модуль utils.py содержит несколько вспомогательных функций, используемых в процессе симуляции.
Функция round_value
Эта функция округляет заданное число до 4 знаков после запятой.
Параметры:
number (float): Число, которое нужно округлить.
Возвращаемое значение:
float: Округленное число с 4 знаками после запятой.
Функция generate_random_number
Эта функция генерирует случайное число в диапазоне (0, 1] с округлением до 4 знаков после запятой.
Возвращаемое значение:
float: Случайное число в диапазоне (0, 1] с 4 знаками после запятой.
Функция calculate_time
Эта функция возвращает время между двумя последовательными заявками.
Параметры:
alfa (int): Параметр для расчета интервалов между заявками.number (float): Случайное число, использованное для расчета интервала.
Возвращаемое значение:
float: Время между двумя последовательными заявками с 4 знаками после запятой.
Функция calculate_mean_served_requests
Эта функция вычисляет среднее количество обслуженных заявок по результатам симуляции.
Параметры:
results (list[SimulationResult]): Список объектовSimulationResult, содержащих результаты каждой итерации симуляции.
Возвращаемое значение:
float: Среднее количество обслуженных заявок с 4 знаками после запятой.
Эти функции обеспечивают необходимые вычисления и операции для успешного проведения симуляции.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file smo_rejection-0.5.6.tar.gz.
File metadata
- Download URL: smo_rejection-0.5.6.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.2 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee32e17b3b74f4a1e001e12d2b1dac2f9a903c500cd67ba4fabe6b45271e374f
|
|
| MD5 |
7ab31315fc91f55a496cd149ec8726d6
|
|
| BLAKE2b-256 |
bc0ed44cf0ed092866edae540aadbabf713bdb71f9c4b2e0fb51a1f2b3d30707
|
File details
Details for the file smo_rejection-0.5.6-py3-none-any.whl.
File metadata
- Download URL: smo_rejection-0.5.6-py3-none-any.whl
- Upload date:
- Size: 13.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.2 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
59a60ca340c4d9dc3313169d68a956f0b15ef3a7ee5533a05870d98f17a0aede
|
|
| MD5 |
49b52aa5bd634a2ddc866378e4b01604
|
|
| BLAKE2b-256 |
0f27d48c456c1d14d7834e13ffa9587ed5679f3e74f0fb1e79084c4e3501e3e5
|