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.4.2.tar.gz (10.6 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.4.2-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: smo_rejection-0.4.2.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.9 Windows/10

File hashes

Hashes for smo_rejection-0.4.2.tar.gz
Algorithm Hash digest
SHA256 b276e7fbc623cca5af4cac09a9cee0593c23345e0f213ff77bb6a88328e92d00
MD5 382a50ee91ebba69509b07932ce4d2bb
BLAKE2b-256 5fe089aa7666298d653987e6efa501e7a71464abcca4db5a29b82cd495152342

See more details on using hashes here.

File details

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

File metadata

  • Download URL: smo_rejection-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.9 Windows/10

File hashes

Hashes for smo_rejection-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e358501cd185d7357dc5af3b76c5107a4156dd7b5500be00dce48ea03c1aad39
MD5 e88ea9c27e5453d7ea2d699c763bb49f
BLAKE2b-256 45e014e74faec430485866147e646055c848829dfbbf90b96216b69a974f2c01

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