Моделирование лифта с использованием объектно-ориентированного анализа и проектирования [закрыто]

Запустите

php artisan config:clear

или удалите файл /bootstrap/cache/config.php из своего проекта Laravel.

(php artisan config:cache создает /bootstrap/cache/config.php)

134
задан Saurav Sahu 13 September 2016 в 06:46
поделиться

2 ответа

Сначала существует класс лифта. Это имеет направление (вниз, стойте, обслуживание), текущий пол и список запросов пола, отсортированных в направлении. Это получает запрос от этого лифта.

Затем существует банк. Это содержит лифты и получает запросы от этажей. Они планируются ко всем активным лифтам (не в обслуживании).

Планирование будет похоже:

  • при наличии выберите постоянный лифт для этого пола.
  • еще выберите лифт, перемещающийся в этот пол.
  • еще выберите постоянный лифт на другом полу.
  • еще выберите лифт с самой низкой загрузкой.

Каждый лифт имеет ряд состояний.

  • Обслуживание: лифт не реагирует на внешние сигналы (только к его собственным сигналам).
  • Стойте: лифт закрепляется на полу. Если это принимает вызов. И лифт находится на том полу, открытые двери. Если это находится на другом полу, это перемещается в то направление.
  • : лифт перемещается вверх. Каждый раз, когда это достигает пола, это проверяет, должно ли это остановиться. Раз так это останавливает и открывает двери. Это ожидает определенного количества времени и закрывает дверь (если что-то не перемещается через них. Затем это удаляет пол из списка запроса и проверяет, существует ли другой запрос. Раз так лифт начинает перемещаться снова. Если не это вводит стенд состояния.
  • Вниз: как, но в обратном направлении.

Существуют дополнительные сигналы:

  • предупреждение. Остановки лифта. И если это находится на полу, открытые двери, список запроса очищен, запросы попятились к банку.
  • открытая дверь. Открывает двери, если лифт находится на полу и не перемещении.
  • дверные завершения. Закрытый дверь, если они открыты.

Править: Некоторые лифты не запускаются в bottom/first_floor особенно в случае небоскребов.

min_floor и max_floor являются двумя дополнительными атрибутами для Лифта.

165
ответ дан 23 November 2019 в 23:56
поделиться

Я видел много вариантов этой проблемы. Одни из основных отличий (который определяет трудность) - существует ли некоторая централизованная попытка иметь "умную и эффективную систему", которая имела бы выравнивание нагрузки (например, отправьте более неактивные лифты для лоббирования утром). Если это так, дизайн будет включать целую подсистему с действительно забавным дизайном.

Полный дизайн, очевидно, слишком много для представления, тут и там много altenatives. Ширина также не ясна. В интервью они попытаются выяснить, как Вы думали бы. Однако это некоторые вещи, в которых Вы нуждались бы:

  1. Представление центрального контроллера (принимающий существует один).

  2. Представления лифтов

  3. Представления интерфейсных модулей лифта (они могут отличаться с лифта на лифт). Очевидно, также вызывные кнопки на каждом полу, и т.д.

  4. Представления стрелок или индикаторов на каждом полу (почти "представление" модели лифта).

  5. Представление человека и груза (может быть важно для факторинга в максимальные загрузки),

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

17
ответ дан 23 November 2019 в 23:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: