МИПиС

mod-lab08-shop

GitHub pull requests GitHub closed pull requests

Срок выполнения работы: до 14 мая Relative date

Lab 08. Моделирование СМО: "магазин"

Язык программирования

С++11 - С++17

Задание

Написать программу, которая моделирует обслуживание покупателей в супермаркете. Идея задачи состоит в том, что покупатели подходят к кассам в случайные моменты времени и с тележками, содержащими случайное количество продуктов (std::vector).

В модели магазина существует несколько касс (потоков обслуживания) и поток покупателей с продуктовыми тележками. Покупатели появляются в случайные моменты времени и направляются к свободным кассам. Если свободной кассы нет, то они встают в общую очередь. Длина очереди конечна и после заполнения покупатели уходят, ничего не купив.

Входные параметры модели:

  • количество касс (каналов обслуживания)
  • интенсивность потока покупателей (заявки на обслуживание)
  • скорость обработки товара на кассе
  • среднее количество товаров в тележке покупателя
  • максимальная длина очереди

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

Программа должна накапливать статистику:

  • обслуженные/необслуженные покупатели
  • средняя длина очереди
  • среднее время нахождение покупателя в очереди + на кассе
  • среднее время работы кассы
  • среднее время простоя кассы

На основании накопленной статистики подсчитать:

  • вероятность отказа
  • относительную пропускную способность магазина
  • абсолютную пропускную способность

Сравнить рассчитанные на основе накопленных данных значения с теоретическими

Теоретический материал по данной работе представлен в лекции №6 курса МИПиС.

Тестирование

Написать несколько модульных тестов для проверки работоспособности классов/функций проекта. Необходимо обеспечить тестовое покрытие основного функционала.

Состав проекта

  • include/task.h - заголовочный файл модели магазина
  • src/task.cpp - исходный файл с реализацией модели магазина
  • src/main.cpp - запуск процесса моделирования
  • test/tests.cpp - модульные тесты