Лифты
Основные требования к системе контроля движения лифтов:
Имеется n-этажное здание (не более 20) с количеством лифтов не более 5.
На каждом этаже имеется пульт вызова лифта с количеством кнопок, равным количеству этажей (либо 10 кнопок с возможностью набора двузначных чисел).
Единственная кнопка в лифте – «Ход», которая и инициирует движение лифта.
Каждый лифт имеет свою максимальную вместимость (в количестве человек), максимальную скорость и максимальное ускорение.
Система должна предоставлять статус каждого человека – “ожидает лифт столько-то секунд”, “движется на этаж N”, “доставлен на целевой этаж”. После создания объект “человек” должен нажать набрать на пульте вызова лифта свой этаж назначения этаже в течение 3 секунд. После доставки на целевой этаж объект человек должен существовать в системе еще 3 секунды.
В приложении должны быть реализованы функции старта, паузы, остановки работы системы, ускорения симуляции, замедления симуляции. Остановить систему можно только в том случае, если все лифты пустые и остановлены.
Отдельным состоянием симуляции является «пожарная тревога». При её активации все лифты должны опуститься на первый этаж (без остановок) и стоять с открытыми дверями до отключении пожарной тревоги. Все люди в системе должны покинуть здание используя пожарную лестницу (исчезнуть через 3 секунды).
Необходимо реализовать несколько стратегий управления лифтами, например «минимимум времени ожидания», «минимум холостых ходов» и т.п. с возможностью выбора стратегии управления перед стартом системы.
Для ввода исходных данных (количество этажей и лифтов) должны быть предусмотрены соответствующие пользовательские интерфейсы с возможностью импорта/экспорта конфигураций лифтов. Пользователь приложения должен иметь возможность как создавать объекты “человек” в режиме реального времени в течение всего сеанса работы системы (независимо от её состояния), так и определять правила их генерации с возможностью импорта/экспорта этих правил в из/в файл (например, создать 10 человек следующих с 1го на 10 этаж на 3й секунде симуляции, включить пожарную тревогу на 7 секунде симуляции, выключить пожарную тревогу на 15 секунде симуляции).
После остановки системы приложение должно выводить на экран (с возможностью экспорта в файл):
- Общее количество поездок (под одной поездкой понимается изменение направления движения) каждого лифта
- Процент “холостых” поездок (когда лифт пустой) для каждого лифта
- Количество перевезённых людей каждым лифтом
- Общее количество поездок
- Общее количество перевезённых людей каждым лифтом
- Среднее, наибольшее и суммарное время ожидания лифтов человеками
- Количество пожарных тревог и их сумарная длительность
В строке статуса приложения (Status bar) должно отображаться время, прошедшее с начала старта системы и количество перевезённых лифтами человек за весь сеанс работы.
Команда: Федорович Вадим, Булынко Сергей, Комар Денис.

