Python теория массового обслуживания

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Python модель для эмулирования систем массового обслуживания

naqswell/QueuingSystem

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Читайте также:  Webupd8team java ppa repository

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Программа на python для эмулирования СМО.

Emulation modeling — модель системы на основе аппаратного аналога, имитирующая поведение во времени при поступлении сигналов окружения, обеспечивающая наблюдение за изменением состояний. Разработка производилась с использованием языка программирования python в среде PyCharm с использованием графической библиотеки PyQt5.

alt text

alt text

alt text

Параметрами моделируемой ВС являются:

  1. источники (количество и тип);
  2. закон генерации заявок источниками (детерминированный или случайный);
  3. приборы (количество);
  4. закон обслуживания заявок приборами (детерминированный или случайный);
  5. емкость и тип буферной памяти (БП);

Источники имеют равномерный закон распределения; delta = random.uniform(self.bottom, self.top)

Приборы имеют экспоненциальный закон распределения; delta = random.expovariate(self.__lambd)

Дисциплины буферизации: на свободное место;

Дисциплины отказа: самая старая в буфере;

Дисциплины постановки на обслуживание: приоритет по номеру прибора;

Дисциплины выбора заявок на обслуживание. — приоритет по номеру прибора; — LIFO (последним пришел — первым обслужен).

Приложение содержит следующие модули:

  1. Request–содержит описание заявки. Реализует методы для получения этих описаний;
  2. Producer–реализует методы создания заявки и генерации времени заявки;
  3. Buffer–реализует методы проверки свободного места в буфере, добавления заявки в буфер, выбора заявки из буфера;
  4. Consumer–реализует методы проверки свободных приборов, загрузки заявки на прибор, удаления заявки из прибора;
  5. FunModule–реализует основной цикл работы системы;
  6. Main–реализует UI.

About

Python модель для эмулирования систем массового обслуживания

Источник

Методы имитационного моделирования вероятностных распределений на языке программирования Python

В данной статье рассмотрим методы имитационного моделирования на основе теории систем массового обслуживания, в которых широко используются элементы математической статистики и теории вероятностей. Целью данной статьи является разработка методов, которые можно использовать для создания моделей, в основе которых фигурируют вероятностные распределения и элементы массового обслуживая.

Прежде, чем приступить к разработке методов, определим ключевые подходы, которые мы будем использовать в процессе: генерация случайных величин, вероятностные распределения, а также некоторые элементы теории вероятностей и математической статистики. В результатах опытов увидим экспериментальную демонстрацию поведения вероятностных распределений и имитации случайных процессов. Всё это и даст нам инструментальную основу для создания различных имитационных моделей, в которых фигурируют вероятностные распределения.

Все методы моделирования данного исследования представлены на программном языке Python. Этот язык является распространённым инструментов в сфере научных исследований и сфере обучения.

В дальнейших этапах исследования, которые будут представлены в будущих статьях, перейдём к более сложным экспериментам: рассмотрим вероятностные распределения, которые не вошли рамки данной статьи, рассмотрим имитационное моделирования систем и сетей массового обслуживания, и также продемонстрируем программирование подобных моделей с использованием параллельных вычислений.

Методы моделирование случайных величин и генераторы случайных чисел python

Рассмотрим простые модели подбрасывания одного или нескольких игральных кубиков. Моделирование начнём с генерации случайных чисел. Задача генерации чисел и вопросы об истинной и квази-случайности в наши исследования не входят, но Вы можете найти данные обсуждения в других источниках. В наших моделях используется генератор псевдо-случайных величин Python. На начальном этапе, для наглядности изучения, можно повышать количество испытаний, наблюдая результат моделирования.

Начнём с генерации случайных величин. Методы их генерирования сводятся к использованию стандартных библиотек Python.

Модуль random из стандартной библиотеки предоставляет возможность получения случайных вещественных чисел в диапазоне от 0 до 1, случайных целых чисел в заданном диапазоне, случайного выбора элементов последовательности и многое другое:
Модуль random может использоваться, например, для перемешивания колоды карт в игре, случайного выбора изображения в программе демонстрации слайдов, в программах статистического моделирования и так далее. За дополнительной информацией обращайтесь к руководству по стандартной библиотеке языка Python.

Расширение NumPy, содержащее реализацию математических вычислений для Python благодаря комбинированию компилированных и оптимизированных библиотек расширения с языком Python NumPy превращает Python в мощный, эффективный и удобный инструмент математических вычислений.

Подробное описание модуля NumPy вы найдёте в официальной документации по этому пакету.

Методы моделирование вероятностных распределений с помощью python

Приступим к моделированию: будем подбрасывать игральный кубик. Ниже представлен листинг программирования модели подбрасывания одного кубика (рис.1). Кубик может принимать одно из шести значений.

import pylab import numpy # Количество испытаний trials = 500 # Массив значений values = numpy.random.randint(1, 7, size=trials) pylab.hist(values, bins=[0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5], edgecolor='white') pylab.xlabel('Значение') pylab.ylabel('Количества раз') pylab.title('Подбрасывание кубика ' + str(trials) + ' раз') pylab.show() 

Рис.1. Листинг программирования модели подбрасывания одного кубика

В представленной программе задаём количество испытаний: сколько раз подбрасывается кубик, и массив: какое значение выпадает в каждом испытании. Результат выводим в виде гистограммы (рис.2).

Рассматривая результат, можно предположить, что распределение имеет равномерный характер. Увеличив число испытаний до 10 000 раз можно увидеть, что гистограмма имеет вид, подобный гистограмме равномерного распределения.

Следующим испытанием рассмотрим модель подбрасывания двух игральных кубиков. Код программы при этом незначительно измениться (рис.3).

Рис.2. Результаты моделирования подбрасывания одного кубика

. # Массив значений values = [] for i in range(trials): values.append(numpy.random.randint(1, 7) + numpy.random.randint(1, 7)) pylab.hist(values, bins=[0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5], facecolor='green', edgecolor='white') . 

Рис.3. Часть изменённого листинга для программирования модели подбрасывания двух кубиков

В представленном листинге значительным изменением является присвоение значения массиву, в который записываем выпавшие значения уже двух кубиков. Вторым изменением, менее значительным, является представления гистограммы соответствующих вариантов значений. Результат выполнения программы представлен на рис.4.

Получив результат моделирования подбрасывания двух кубиков рассмотрим задачу моделирования нормального (Гаусс) распределения и насколько она коррелирует с задачей моделирования подбрасывания нескольких кубиков. Код программы также меняется незначительно: меняется всего одна строка присваивания значений массиву (рис.5).

Рис.4. Результаты моделирования подбрасывания двух кубиков

. # Массив значений values = [] for i in range(trials): mu = 7 sigma = 2.4 values.append(random.normalvariate(mu, sigma)) . 

Рис.5. Часть изменённого листинга для программирования модели нормального распределения

На представленном листинге используется метод normalvariate библиотеки random, генерирующий величины с нормальным вероятностным распределением со параметрами mu и sigma, которые являются среднем значением и стандартным отклонением распределения соответственно. Результат выполнения программы представлен на рис.6.

Рис.6. Результаты моделирования нормального распределения

Заключительным этапом является моделирование экспоненциального распределения. Экспоненциальное распределение часто используется при моделировании распределения (длительности) интервалов между моментами поступления заявок в системах массового обслуживания разного типа. Листинг также отличается незначительно от остальных листингов программ, представленных в нашем исследовании (рис.7).

Результат моделирования представлен на рис.8.

. lambd = 10 # Массив значений values = [] for i in range(trials): values.append(random.expovariate(lambd)) pylab.hist(values, 20, facecolor='lightgreen', edgecolor='white') . 

Рис.7. Часть изменённого листинга для программирования модели экспоненциального распределения

Рис.8. Результаты моделирования экспоненциального распределения

Заключение

В этой статье были рассмотрены несколько программных реализаций моделей вероятностных распределений на языке Python. Эти модели дают основу для проведения собственных экспериментов и исследований.

На данном этапе представлены только некоторые методы и подходы, и в дальнейшем, автор представит дополнительные методы для моделирования с использованием вероятностных распределений, языка программирования Python и теории массового обслуживания.

Источник

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

PySS. Моделирование систем массового обслуживания

License

vpv11110000/pyss

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.rst

PySS. Моделирование систем массового обслуживания

Проект находится в стадии формирования документации и завершения доработки примеров.

Основной функционал системы моделирования позволяет формировать модели.

При разработке использовались:

[1] «Учебное руководство по системе GPSS World»
[2] Б.Я.Советов, Моделирование систем. Практикум: Учеб пособие для вузов/Б.Я. Советов, С.А. Яковлев.- 2-е изд., перераб. и доп.-М.:Высш. шк., 2003.-295 с.: ил.
[3] http://textarchive.ru
[4] http://www.intuit.ru/studies/courses/643/499/lecture/11361?page=1

и многие другие хорошие материалы.

  • docs\ документация (2017-08-31 заготовка)
  • examples\ примеры из источников [1] [2]
  • other\ примеры случайных распределений (2017-08-31 требуется доработка)
  • pyss\ система моделирования
  • tests\ тесты
  1. 1_example_3_4.
  1. 1_example_3_5.
  1. 1_example_3_6.
  1. 1_example_3_7.
  1. 1_example_3_8.
  1. 1_example_3_9.
  1. Пример с использованием Gate (1) 1_example_3_13.
  1. Пример с использованием Gate (2) 1_example_3_14.
  1. Пример с использованием Gate (3) 1_example_3_15.
  1. Пример с использованием Gate (4) 1_example_3_16.
  1. Пример с использованием Gate (5) 1_example_3_17.
  1. manufact.
  1. ordernt.
  1. periodic.
  1. qcontrol.
  1. telephone.
  1. turnstil.
  1. tvrepair.

About

PySS. Моделирование систем массового обслуживания

Источник

Оцените статью