4 заметки с тегом

лифты

Микро- и макроуровень на примере симулятора лифтов

Симулятор лифтов показывает детали и общий вид.
Общий вид: графики собирают и показывают данные за весь период симуляции.
Детали: здание, этажи, люди, лифты — показывают происходящее в данный момент.
http://cashin.ru/vis/lift/

Детали — микроуровень. Детали удобно наблюдать на низкой скорости. Поставьте в симуляторе скорость хода времени на единицу:

На микроуровне видно, как люди движутся по этажам, как открываются двери лифтов, как входят и выходят.

В чем польза отображения микроуровня при визуализации данных?

Польза в том, что так понятнее, откуда берутся данные для графиков с массой точек. Можно заглянуть внутрь: проследить в симуляторе путь каждого виртуального человечка. Начало движения, ожидание лифта, движение в лифте, выход и окончание движения. Эти микроперемещения показывают, как составляется общая картина. Как эти потоки людей отображаются в графиках.

Вот группа человечков направилась к лифтам. Вот они ждут в холле, счетчик показывает количество. Вот подъехал лифт, двери открылись, люди вошли в лифт. Видно, что они вошли не толпой, а по очереди, один за другим. Сначала открываются двери, а потом заходят пассажиры. Перед началом движения лифта сначала закрываются двери — это учитывается при расчетах времени для графиков.

Допустим, без отображения человечков и лифтов симулятор рисовал бы только графики. Это вызывало бы меньше доверия у зрителя: как построены эти графики? На основе чего? Откуда взялись числа?

Микроуровень повышает доверие, потому что наглядно показывает, насколько корректно строится макроуровень.

Если микроуровень понятен, он становится не нужен — зритель ускоряет ход времени,

и видит средний уровень: ускоренный микроуровень показывает что-то среднее между движением людей в реалистичном относительном масштабе, и графиками, суммирующими огромное количество перемещений. Ускоренный микроуровень начинает выдавать больше информации в единицу времени и становится средним.

Другой пример

Смотрите, как анимация показывает смысл формул условной вероятности:
http://setosa.io/ev/conditional-probability/
Автор — Виктор Пауэл (Victor Powell)

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

2017   визуализация   лифты   проект

Как симулятор лифтов рисует графики

Продолжение.
Начало тут: http://www.cashin.ru/blog/all/lift-upd1/

В симуляторе лифтов графики показывают большое количество данных. На картинке пример пробки у лифтов, если в час пик много народу. Интересно, что здесь люди тратят больше времени на ожидание в холле. Внутри лифтов ждут гораздо меньше — оранжевый график стабильно показывает малые числа.


Симулятор рисует графики по ходу времени. Один столбец — примерно минута симуляторного времени. Столбцы состоят из большого количества полупрозрачных точек. По мере прорисовки графики накапливают большое количество расчетов.


График должен обновляться быстро, чтобы движение человечков не превратилось в слайд-шоу. Чтобы не перерисовывать график, а только дополнять, графики состоят из двух слоев. Сверху векторный свг, снизу растровый канвас. Меняющиеся числа и линии движутся в отдельном верхнем слое, в свг. Нижний канвас принимает точки по каждому человеку и не требует перерисовки. Слои выровнены по общим координатам и управляются одним жс-скриптом.

Визуализация сделана с помощью библиотеки d3js,
https://d3js.org

Прожарить парочку лифтов:
http://www.cashin.ru/vis/lift/

В следующем посте — про микро- и макроуровень.

Обновился симулятор лифтов

Что за симулятор?

Это программа, которая показывает, как люди ездят на лифтах. Сколько времени посетители ждут лифта в холле. Сколько лифтов требуется, чтобы перевезти людей без задержек.
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

Как симулятор рисует графики — в следующих постах.

Симулятор лифтов

Некогда объяснять, позже расскажу. Пока поиграйте: меняйте скорость симуляции, кликайте по зданию, чтобы поставить на паузу и продолжить. Внизу графики рисуют результативность работы лифтов.

http://cashin.ru/vis/lift/