Skip to main content

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 содержит определения двух классов, которые используются для организации параметров симуляции и хранения результатов:

  1. SimulationParameters: Этот класс используется для хранения параметров симуляции. Он содержит следующие атрибуты:

    • T (float): Общее время симуляции.
    • num_channels (int): Количество каналов обслуживания (потоков).
    • service_time (float): Время обслуживания одной заявки.
    • num_iterations (int): Количество итераций симуляции.
    • alfa (int): Параметр для расчета интервалов между заявками.
  2. 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

Эта функция принимает два аргумента:

  1. results (list): Список результатов симуляции.
  2. filename (str): Имя файла для сохранения результатов.

Пример вызова функции:

export_to_pdf(results, "simulation_results.pdf")

Примечание

Для корректной работы модуля требуется установка библиотеки ReportLab. Вы можете установить её с помощью следующей команды:

pip install reportlab

Этот модуль обеспечивает удобный способ сохранения результатов симуляции в формате PDF.

Функция export_to_excel

Эта функция принимает два аргумента:

  1. results (list): Список результатов симуляций, где каждый элемент содержит данные о заявках.
  2. filename (str): Имя файла для сохранения Excel-документа.

Пример вызова функции:

export_to_excel(results, "simulation_results.xlsx")

Описание

Функция создает новую рабочую книгу Excel и записывает в нее результаты симуляций. Каждая симуляция начинается с заголовка, содержащего номер симуляции, затем следуют заголовки столбцов и данные о заявках. По завершении каждой симуляции записываются итоговые значения, а также в конце добавляется среднее количество обслуженных заявок по всем симуляциям.

Примечание

Для корректной работы модуля необходима установка библиотеки openpyxl. Вы можете установить ее с помощью следующей команды:

pip install openpyxl

Этот модуль предоставляет удобный способ сохранения результатов симуляции в формате Excel.

processing.py

Модуль processing.py предоставляет функцию process_iteration, которая выполняет одну итерацию симуляции обслуживания заявок в системе массового обслуживания (СМО) с отказами.

Функция process_iteration

Эта функция принимает два аргумента:

  1. params (SimulationParameters): Параметры симуляции.
  2. 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 равно нулю.

Описание: Функция выполняет следующие действия:

  1. Проверяет корректность входных параметров и выбрасывает соответствующее исключение в случае некорректных значений.
  2. Создает объект SimulationParameters с заданными параметрами.
  3. Запускает цикл по количеству итераций, на каждой итерации вызывая функцию process_iteration и сохраняя ее результат.
  4. Возвращает список объектов 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smo_rejection-0.5.4.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smo_rejection-0.5.4-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file smo_rejection-0.5.4.tar.gz.

File metadata

  • Download URL: smo_rejection-0.5.4.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.2 Windows/10

File hashes

Hashes for smo_rejection-0.5.4.tar.gz
Algorithm Hash digest
SHA256 3aee6f689e4c2bddd9d6e71c97c32b72d860688353ce1ce34f81b0fa0533b6f1
MD5 932d81aa4f43ea14cc9a1d13a977e838
BLAKE2b-256 41f12419d957dc29c9187265e4895de1ed8755235a6530d99be2131b3e2dbf80

See more details on using hashes here.

File details

Details for the file smo_rejection-0.5.4-py3-none-any.whl.

File metadata

  • Download URL: smo_rejection-0.5.4-py3-none-any.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.2 Windows/10

File hashes

Hashes for smo_rejection-0.5.4-py3-none-any.whl
Algorithm Hash digest
SHA256 66ae7174cc5ea4bb02e9090c5fed6386501db682ab06a46ff06c4951238a3703
MD5 a7624aecbfb140ee4183073f1ec3c2be
BLAKE2b-256 f080eed77f8674df73087b9f20a086893b9b56e4168efb06cd91b2c7f7ee5d7b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page