В рамках курсового проекта предлагается создать модель обслуживания потока заявок на разгрузку, поступающих от грузовых судов, прибывающих в морской порт. Модель должна состоять из трёх сервисов, реализация которых выполняется в 2 этапа, которые сдаются последовательно.
Реализовать генератор расписания прибытия судов. Расписание включает:
- день и время прибытия
- название судна
- вид груза (сыпучий, жидкий, контейнер) и его вес в тоннах или штуках (для контейнеров)
- планируемый срок стоянки в порту для разгрузки - вычисляется на основе веса груза и производительности крана
Получает данные из сервиса 1 и сервиса 3 и сохраняет их в json-файл. Предусмотреть возможность ручного добавления записей через консоль.
Грузовые суда прибывают в порт согласно расписанию (порт работает круглосуточно), но возможны опоздания и досрочные прибытия.
Для разгрузки судов в порту используются три вида разгрузочных кранов, соответствующих трем видам грузов: сыпучим и жидким грузам, контейнерам. Число разгрузочных кранов каждого вида ограничено (изначально всех кранов по 1), так что поступающие заявки на разгрузку одного вида груза образуют очередь. Длительность разгрузки судна зависит от вида и веса его груза. Каждый кран работает в отдельном потоке, одно судно могут разгружать не более двух кранов одновременно.
Любой дополнительный (сверх запланированного срока) час стояния судна в порту (из-за ожидания разгрузки в очереди или из-за задержки самой разгрузки) влечет за собой выплату штрафа 100 у. е. за каждый час простоя судна.
При моделировании прибытия судов отклонение их от расписания рассматривается как случайная величина в интервале от -7 до 7 дней. Еще одной случайной величиной, изменяющейся в диапазоне от 0 до 1440 минут, является время задержки окончания разгрузки судна по сравнению с обычным (зависящим только от вида груза и его веса).
Цель моделирования работы морского порта – определение для заданного расписания прибытия судов минимально достаточного числа кранов в порту, позволяющего минимизировать штрафные суммы при стоимости крана в 30 000 у. е. Период моделирования – 30 дней. В параметры моделирования следует включить расписание прибытия судов и количество кранов каждого вида.
В результате работы программы должен быть сформирован отчёт, содержащий: список произведенных разгрузок, в котором указывается название загруженного судна, время его прихода в порт и время ожидания в очереди на разгрузку (в формате дд:чч:мм), время начала разгрузки и ее продолжительность, а также по окончании моделирования должна быть выведена итоговая статистика: число разгруженных судов, средняя длина очереди на разгрузку, среднее время ожидания в очереди, максимальная и средняя задержка разгрузки, общая сумма штрафа и итоговое необходимое количество кранов каждого вида.
- Сервис 1: результат выводить в консоль.
- Сервис 2: вызывает метод генерации, описанный в сервисе 1; получает на вход метода данные от сервиса 3
- Сервис 3:
- используется json-файл, полученный в результате работы сервиса 2;
- результат работы выводится в консоль.
- Сервис 1: GET - эндпоинт возвращающий расписание.
- Сервис 2: обращается GET - запросом к соответствующему эндпоинту. Предоставляет следующие эндпоинты:
- GET - эндпоинт для получения расписания в виде json-документа;
- GET - эндпоинт, возвращающий расписание по имени json-файла или ошибку, если такого файла нет;
- POST-эндпоинт для сохранения результатов работы сервиса 3 в json-документ.
- Сервис 3:
- обращается к GET - эндпоинту сервиса 2 для получения расписания в виде json-файла
- результат работы отправляется на POST-эндпоинт сервиса 2.