Срок выполнения работы: по 12 мая
С++11 - С++17
Написать программу, которая моделирует обслуживание покупателей в супермаркете. Идея задачи состоит в том, что покупатели подходят к кассам в случайные моменты времени и с тележками, содержащими случайное количество продуктов (std::vector).
В модели магазина существует несколько касс (потоков обслуживания) и поток покупателей с продуктовыми тележками. Покупатели появляются в случайные моменты времени и направляются к свободным кассам. Если свободной кассы нет, то они встают в общую очередь. Длина очереди конечна и после заполнения покупатели уходят, ничего не купив.
Входные параметры модели:
- количество касс (каналов обслуживания)
- интенсивность потока покупателей (заявки на обслуживание)
- скорость обработки товара на кассе
- среднее количество товаров в тележке покупателя
- максимальная длина очереди
Каждая касса обслуживает покупателя в отдельном потоке, что дает возможность моделировать обслуживание сразу нескольких покупателей в один момент времени. Время обслуживания покупателя зависит от количества товаров, находящихся в его тележке (случайный параметр).
Программа должна накапливать статистику:
- обслуженные/необслуженные покупатели
- средняя длина очереди
- среднее время нахождение покупателя в очереди + на кассе
- среднее время работы кассы
- среднее время простоя кассы
На основании накопленной статистики подсчитать:
- вероятность отказа
- относительную пропускную способность магазина
- абсолютную пропускную способность
Сравнить рассчитанные на основе накопленных данных значения с теоретическими
Теоретический материал по данной работе представлен в лекции №6 курса МИПиС.
Написать несколько модульных тестов для проверки работоспособности классов/функций проекта. Необходимо обеспечить тестовое покрытие основного функционала.
- include/task.h - заголовочный файл модели магазина
- src/task.cpp - исходный файл с реализацией модели магазина
- src/main.cpp - запуск процесса моделирования
- test/tests.cpp - модульные тесты