Skip to content
This repository has been archived by the owner on Oct 10, 2021. It is now read-only.
/ opp-project Public archive

Project for OOP course

Notifications You must be signed in to change notification settings

IgorSamohin/opp-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Задание

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

Общее описание сервисов

Сервис 1

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

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

Сервис 2

Получает данные из сервиса 1 и сервиса 3 и сохраняет их в json-файл. Предусмотреть возможность ручного добавления записей через консоль.

Сервис 3

Грузовые суда прибывают в порт согласно расписанию (порт работает круглосуточно), но возможны опоздания и досрочные прибытия.

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

Любой дополнительный (сверх запланированного срока) час стояния судна в порту (из-за ожидания разгрузки в очереди или из-за задержки самой разгрузки) влечет за собой выплату штрафа 100 у. е. за каждый час простоя судна.

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

Цель моделирования работы морского порта – определение для заданного расписания прибытия судов минимально достаточного числа кранов в порту, позволяющего минимизировать штрафные суммы при стоимости крана в 30 000 у. е. Период моделирования – 30 дней. В параметры моделирования следует включить расписание прибытия судов и количество кранов каждого вида.

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

Этапы реализации

Этап 1:

  • Сервис 1: результат выводить в консоль.
  • Сервис 2: вызывает метод генерации, описанный в сервисе 1; получает на вход метода данные от сервиса 3
  • Сервис 3:
    • используется json-файл, полученный в результате работы сервиса 2;
    • результат работы выводится в консоль.

Этап 2:

  • Сервис 1: GET - эндпоинт возвращающий расписание.
  • Сервис 2: обращается GET - запросом к соответствующему эндпоинту. Предоставляет следующие эндпоинты:
    • GET - эндпоинт для получения расписания в виде json-документа;
    • GET - эндпоинт, возвращающий расписание по имени json-файла или ошибку, если такого файла нет;
    • POST-эндпоинт для сохранения результатов работы сервиса 3 в json-документ.
  • Сервис 3:
    • обращается к GET - эндпоинту сервиса 2 для получения расписания в виде json-файла
    • результат работы отправляется на POST-эндпоинт сервиса 2.

About

Project for OOP course

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages