Обновился симулятор лифтов
Что за симулятор?
Это программа, которая показывает, как люди ездят на лифтах. Сколько времени посетители ждут лифта в холле. Сколько лифтов требуется, чтобы перевезти людей без задержек.
http://cashin.ru/vis/lift
Зачем?
В одном из примеров к лекции по визуализации данных мне понадобился генератор большого количества данных. Придумал я такую штуку: люди ездят на лифтах, координаты и время сохраняются для визуализации.
Сначала я планировал обойтись без пользовательского интерфейса. Казалось, настроек в виде кода будет достаточно. Но без интерфейса управлять симулятором оказалось тяжело. Пришлось сделать и интерфейс.
Что в этом интересного?
Интересно наблюдать, как при разных настройках работают лифты и перемещаются люди.
При каких условиях лифты ездят почти пустые, | а при каких собирается толпа в лифтовых холлах: |
Ржачно смотреть, как два очень быстрых и вместительных лифта не справляются с 50-этажным зданием и графики выходят из берегов:
А что будет, если лифты медленные, но вместительные? Попробуйте.
Получился и генератор для работы, и прикольная штука:
http://cashin.ru/vis/lift
Как пользоваться?
Симулятор запускается сразу как только вы зашли на страницу. Работает по заданным настройкам. Нажмите паузу — появятся настройки. Меняйте количество этажей, лифтов и другие параметры. Запускайте и смотрите, как изменится загрузка лифтов.
Смотрите, почему у лифтов возникают очереди. Настраивайте скорость симуляции: ход времени можно увеличить до 50-кратного.
Симулятор схематически показывает этажи, лифты и людей. Чтобы показать происходящее не только в реальном времени, но на всем пройденном диапазоне, программа сохраняет данные на графиках. Графики показывают, как работают лифты в течение дня.
Почему люди едут именно на эти этажи?
Каждый раз симулятор случайным образом составляет план перемещения людей по зданию. В начале дня люди едут с нижнего этажа на верхние, расходятся по своим местам. Днем все обычно идут обедать. В течение дня перемещаются между этажами. План выглядит так:
Каждая точка показывает перемещение одного человека на определенный этаж в определенный момент. По горизонтали — временная ось, по вертикали — номер этажа. Нижние этажи показаны синим, верхние — красным. Чем выше, тем краснее.
Сколько данных показывает симулятор?
При настройках 500 человек симулятор каждые 20 миллисекунд генерирует 50 × 500 = 25 000 записей в секунду. Каждая запись содержит координаты, номер этажа, номер лифта, время ожидания и перемещения.
Симулятор собирает и показывает записи о перемещении людей за 11 часов, с 9 до 20. Это 39 600 секунд. Получается 39 600 × 25 000 = 990 000 000 записей за один день работы лифтов.
Насколько реалистично программа показывает работу лифтов?
Это не настоящие перемещения людей, а программная симуляция, близкая к реальности. Движение похоже на настоящее: люди заходят в здание, выходят и возвращаются несколько раз в течение дня, вечером уходят. Это похоже на то, как люди ходят в офис.
Симулятор помогает грубо прикинуть эффективность лифтов, но не подходит для точного расчета. Для этого не хватает дополнительных деталей, которых я пока не запрограммировал. Лифты движутся без учета разгона и торможения. Нет группового управления лифтами: если человек вызвал лифт, и два лифта свободны, то оба приедут по вызову. Нет отдельных настроек для каждого лифта. Нельзя указать разные рабочие этажи для разных лифтов. Я упростил управление лифтами, чтобы не превращать в долгострой.
Играйте:
http://cashin.ru/vis/lift
Как симулятор рисует графики — в следующих постах.