Обновить

Лифт не знает, куда ехать. И это лучший алгоритм, который мы придумали

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели41K
Всего голосов 269: ↑266 и ↓3+310
Комментарии175

Комментарии 175

Задача из жизни: 9 этажей и 2 лифта — лифт №1 настроен так, что если никто его не вызывает в течение минуты, он автоматически уезжает на 5-й этаж, лифт №2 вообще никак не настроен (катается по вызову и останавливается по факту).

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

На претензии жителей типа "но так же увеличиваются эксплуатационные расходы и ускоряется износ оборудования!" управляющий отвечает "это сопутствующие издержки на грани погрешности, ими можно пренебречь!".

Жители, разумеется, доказать свою точку зрения фактами не могут (всё на уровне ощущений "ну, моторы же крутятся, электричество тратится и тросы стираются!"), впрочем, как и управляющий ("всё равно же лифт в итоге проходит полный путь, а так он будет хотя бы поближе к вызывающему!") — просто потому что нет таких исследований или они плохо ищут.

Вопрос: а кто прав на самом деле? 🙂

Рискну предположить что разницы особой не будет. Вот если на вечерний час пик все лифты на первый отправлять, а утром где то на 7 мой то может может среднее время ожидания и уменьшится

А вы кстати что хотите? Увеличить ресурс лифта или уменьшить скорость подачи? Это надо одно из двух выбрать имхо

Чем больше будет время ожидания, тем больше людей будет ходить пешком, тем меньше будет расходоваться ресурс лифта

Обслуживающей организации выгоднее чтобы люди ждали дольше

Вот если на вечерний час пик все лифты на первый отправлять, а утром где то на 7 мой то может может среднее время ожидания и уменьшится

А ведь некоторые станции управления это как раз поддерживают, специально для сокращения среднего времени ожидания.

В одном доме так сделано: хотя бы один лифт из 2-х всегда на первом этаже. Как только с первого этажа лифт поехал вверх, то второй сразу спускается на первый, даже если он пустой. Одна кнопка на 2 лифта.

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

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

Когда он прибежал и лифт закрылся и поехал, а на него посмотрел. Разговорились, он сказал что эти лифты определяют что входная дверь открыта и бывают глюки. Сказал что только что в другом доме тоже самое было.

И вот после этого разговора и начал думать как лифт может определить что дверь открыта. Пока только вариант, что по ветру. Когда открываешь дверь иногда прям чувствуется сквозняк.

Датчик на двери? У нас ровно так же пока дверь в хол лифта не закрыть он не поедет. Ни один из 3. Хз зачем..

…то есть пришёл пофигист на первый этаж, дверь бросил, лифты перешли в режим наказания жильцов, «ибо нефиг тепло выпускать», и тут на 15-м этаже выходит бабуля на больных ногах…

Мне кажется, тут одной буквы «у» маловато будет.

Не там они именно с первого не поедут. Бабуле приедет просто какой-то лифт. Теоретически описанная ситуация произойти может но это надо специально постараться, как то дождаться всех лифтов на первом и открыть дверь. Сомнительная затея в общем

А, ну это немного лучше, конечно. Вряд ли кто-то специально так будет «шутить» — аплодировать ведь будут явно не ладонью об ладонь, а ладонью об комика…

У меня такие же у-лифты достаточно регулярно открывают двери, едва я выхожу в лифтовой холл на своем этаже. Но при этом их иной раз ждёшь по много минут на первом этаже. При том, что лифтов 4 на 25 этажей. Но работает только один, остальные где-то стоят. Что там в "голове" у контроллера/диспетчера — великая загадка.

Обслуживающей организации выгоднее чтобы люди ждали дольше

Отчаивались и топали пешком!

Обслуживающей организации выгоднее чтобы люди ждали дольше лифт ломался чаще

Потому что в починке всего за бабло и состоит смысл её существования.

Тогда тут, скорее, автор имел ввиду УК, а не обслуживающую организацию именно лифтов. Вот УК как раз очень выгодно, чтобы лифты не ломались как можно дольше.

вспоминается задачка вида: в доме N этажей, на каждом проживает 2^k человек, все они утром уходят, а вечером возвращаются домой. Какая кнопка лифта нажимается чаще всего? Утром кнопка первого этажа внутри лифта, а вечером столько же кнопка вызова лифта на первом этаже. Нужно настраивать на утренний и вечерний режимы, как предложили уже в этой ветке

жильцы, в их логике лифт никогда не едет порожняком без причины, в логике управленца до 5 этажа он всегда едет порожняком БЕЗ причины, так как не известно откуда будет сделан следующий вызов.

Логика здесь определена требованием минимизировать максимально возможное ожидание. Но можно много всего разного минимизировать вместо этого. Это партия должна решать за человека.

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

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

а кто прав на самом деле?

Без собранной статистики тут думать нечево.

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

Вы правы, что в основном лифты ездят между этажом Х и первый этажом. Однако, не логичнее держать на первом этаже, т.к. вечернее время - это не только время, когда жильцы возвращаются домой, это и время а) походов в магазин, б) гостей, в) разных курьеров и даже г) играющихся детей (сам был таким). В целом, я нередко играю роль курьера, когда иду к родителям - и иногда ожидаю лифт минутами. При этом я (почти точно) знаю, что никого этот лифт не вёз, он просто уехал, как слишком умный, но на самом деле тупой. Вангую, что реально эффективным решением может быть режим "курьера", когда нажимаешь на кнопку, что ты курьер и лифт остаётся на этаже (может даже остаётся открытым), пару минут или пока не вызовут. По крайне менее, в жилом доме СПб или Москвы.

Управляющий небось живет на пятом этаже

Принцип: лифт едет вверх, пока есть хоть один вызов выше

Если вы на 2-м этаже, а лифт только что проехал вас наверх — ждите, пока он доберётся до 20-го, развернётся и спустится обратно. Даже если наверху никого нет.

Как будто противоречивые утверждения. Если наверху никого нет, то почему лифт туда едет?

Вы описываете уже следующий алгоритм, который это учитывает. А первый просто гоняет лифт туда-сюда, как автобус. Для лифта он и правда не подходит.

Кажется, это всё в пределах одного алгоритма

Я по-другому понял этот алгоритм: если хоть кто-то вызвал лифт, то он проделает весь путь до верхнего этажа и обратно. Вспомнил даже где кажется видел: в ТЦ такое бывает, когда три-четыре этажа и плюс-минус равномерное количество людей на них.

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

Судя по всему, автор тоже запутался :-)

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

Зато похожая мысль «ну это же можно сделать нормально» в очередной раз пришла, когда заезжал в паркинг.

У нас там шлагбаум + выкатные ворота. Подъезжаешь → прикладываешь карту → открывается шлагбаум → потом начинают открываться ворота. Вроде норм.

Веселье начинается, если ты не подождал.

Перед тобой проехала машина, ты подъехал — а ворота уже закрываются. Ты прикладываешь карту — шлагбаум открывается, а ворота продолжают ехать вниз. Ещё раз прикладываешь — ничего не происходит. Дальше вызывается охрана, которая с твоей картой и дорожным знаком (!) имитирует выезд машины из паркинга, после чего ты можешь попробовать заехать ещё раз.

И, естественно, сразу появляется мысль - "почему это вообще так работает".

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

В итоге я поймал себя на том, что наконец-то нашёл повод попробовать что-то сделать на Rust (почему Rust — сам не знаю, подсознательно кажется, что он ближе к железу).

Проблема только в том, что я никогда не работал с железом и пока не понимаю, как вообще симулировать управление воротами или шлагбаумом.

В одном дворе видел откатной шлагбаум и меня удивила логика его работы - если при закрывании через него кто-то пройдет он разворачивается и возвращается в полностью открытое состояние. Т.е. если поток пешеходов будет постоянный он никогда не закроется в будет дёргаться туда-сюда. Было бы логичнее чтоб он просто останавливался, ну максимум сдавал бы назад на пять сантиметров, вдруг прищемил кого.

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

У меня во дворе такие же ворота.

Хуже того. У нас если трижды луч датчика ворот будет пересечен при закрытии ворот, то ворота открываются настежь и блокируются в этом состоянии. И охранник, матеря конструкторов, ногами идёт вправлять мозги воротам :(

Очень люблю такие системы, которые формально работают и по-человечески издеваются

Скрытый текст

Давным давно, проблемы с логистикой у лифтов решили, придумав и реализовав лифт-патерностер. Но да, он небезопасный.

Катался на таком в корпусе Е МЭИ, в 1985-86 годах. Крайне стрёмное ощущение.

Это факт. Но тут как я понимаю выбора немного - либо лифт сразу, либо бОльшая безопасность.

Ваще, такие лифты были очень распространены в первой половине 20 века в учреждениях, как раз из-за скорости (с 4 на 6 этаж, с 7 на 4 и тп) плюс из-за отсутствия необходимости выделять площадку для ожидания.

…в учреждениях, населённых исключительно молодыми и ловкими студентами (профессора и инвалиды — по отдельному лифту, с ключом?)

В МЭИ пандус был, спиральный, с малым уклоном. Идти долго, но приятно.

Катался на таком в корпусе Е МЭИ

Не успел покататься - лифт закрылся за год до моего поступления в 97м, но любовался им в остановленном виде.

А на 50 этажей как масштабируется? Да хоть бы и на 20.

С пересадкой

Ну да, можно сделать без задней стенки и с паузой. Этаж, стоп, этаж, стоп. Каждые пять этажей — с другой стороны ждёт лифт «старшего байта», который свистонит сразу на пять этажей, там тоже стоп на секунду…

Пропускная не сильно пострадает, как везли одновременно вверх и вниз по стопиццот кабин, так и везут.

Э, стоп.

А так ведь и двери можно сделать. Лифт-поезд. Как обычный лифт, только вагонов больше. И катается строго по маршруту. И если кто-то держит двери — ждёт весь поезд.

В taipei 101 именно так и сделано, сначала едешь на 5 этаж, а потом оттуда экспресс на самый верх. Вообще там лифты это отдельное "чудо света": герметичные, 60км/ч, на некоторых этажах двухэтажные и пр.

Да, в таком лифте я больше всего хотел бы на 40й этаж ехать )

Тут в классическом-то чистое время поездки на 20 этажей больше минуты

56 секунд от закрытия до открытия двери, 26 этажей. Классический лифт.

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

Этот вариант именно пассажирский. Причем чаще всего по-моему разрешалось только по одному человеку заходить в кабинку.

Для обычного жилья такой лифт был бы удобен тем, что снял бы приличную нагрузку с обычного лифта рядом.

Но судя по тенденции последних 20..15 лет, убилось бы масса людей. Дети бы стопудов стали играть в "успею-неуспею"

…волшебная планочка… одна на верхней кромке кабины, вторая — проёма. Если любая сломалась, то у нас есть на торможение несколько дециметров от планочки до начала перекрытия, пока неуспейка своей глупой тушкой крушит специально обученный крашеный пенопласт между планочкой и несущими конструкциями.

Наде еще перевод этого термина - "Боже мой"!

"Отче наш", а не "Боже мой".

« — Может быть, Вы имели в виду „Отче наш?“

— НЕТЪ». © популярный мем.

На самом деле там даже не обожемой, а ояе… ояепикабу получится, если не делать по верхам кабин и проёмов специальные планочки, при закусе жертвы врубающие аварийные тормоза.

Человек так устроен, что лучше двигаться 1,5м/с чем стоять, даже если в итоге в одно и то же время прибудешь в пункт назначения.Так что я считаю, не все так просто и однозначно.

Сорок этажей — это примерно сто сорок метров, полторы минуты движения в пересчете на рубли.

ну не всем же надо на последнюю треть этажей, зачем брать граничные случаи. Тем кому в первую половину - им проще 1,5метра в секунду, но сразу, тем кому на 40й этаж надо - к тем обычный лифт, что рядом приедет пораньше. П - профит.

PS: 1 этаж в жилых помещениях вроде как принято считать за 3 метра

При входе после домофона ближайший лифт спускаем вниз.

Подгонять лифт на средину сомнительная идея:

вниз ничего не стоит,

вверх тратим энергию.

Т.к. Откуда полезут пользователи рандом.

Ничего в лифтах не шарю, таковы ощущения.

Лифт это не просто штука, которую мотор тянет наверх, там есть противовес, поэтому усилия тратятся не чтобы поднять, а чтобы вывести из положения равновесия. Поэтому там логика "вверх - всегда затраты" не работает.

вниз ничего не стоит

В случае пустой кабины - наоборот, так как лебёдка поднимает противовес (который обычно весит как кабина при половинной загрузке). При подъёме же в таком случае мотор работает практически вхолостую.

Наиболее оптимальный режим - когда кабина загружена наполовину, потому что тогда она весит примерно столько же, сколько и противовес, и система сбалансирована.

Единственное – насчёт "вниз ничего не стоит" вы неправы. У лифта есть противовес, и он тяжелее пустого лифта.

вниз ничего не стоит,

вверх тратим энергию.

Тратим очень мало. Сама по себе кабина лифта уравновешена противовесом, на её подъём энергия не тратится — только на потери (трение в кабеле и в подшипниках колёсиков) и на подъём тушек пассажиров.

И камеру на распознавание курьеров: если он поднялся наверх, то держим лифт на этаже.

Ойдаладно. Жилец заходит по ключу или коду, а курьер звонит. Дважды. Как почтальон. Но это не важно. Важно, что если дверь открыта по звонку — надо накинуть 30 секунд на стояние с открытыми дверьми на целевом этаже, если нет других вызовов. Если по ключу — то всё стандартно. И оба варианта открывания домофона снаружи эквивалентны вызову на первый этаж.

вниз ничего не стоит,

Как раз вниз затратно, а вверх почти бесплатно. Ибо противовес тяжелее пустой кабины.

Пламенный привет Дональду Кнуту и его знаменитому лифту! ;-)

Представь здание. 20 этажей. 3 лифта. Утро понедельника, 9:15. В лобби бизнес-центра стоят 50 человек. Кому-то на 5-й, кому-то на 19-й, кто-то вообще с 7-го хочет на 12-й (и как он словил лифт в 9 утра — отдельный вопрос).

Представить легко, но было бы ещё очень неплохо на каждом этаже иметь весь набор кнопок для всех этажей.

Идея гениально простая: спрашивать у пассажира этаж назначения до посадки в лифт. Не вверх/вниз, а конкретный этаж. На этаже стоит панель с цифрами (или тачскрин, если здание модное). Вводишь «15» — система отвечает «Лифт C». Ты идёшь к лифту C, в кабине нет кнопок этажей (шок для неподготовленного человека).

Именно!! :-)

Так в бизнес-центрах так и сделано

Представить легко, но было бы ещё очень неплохо на каждом этаже иметь весь набор кнопок для всех этажей.

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

Реализация Destination dispatch у, если не путаю, Otis (возможно, Schindler, буду завтра на работе – гляну) – отвратительна. Два человека подходят на первый этаж, вызывают лифт на 25 и 26 – им назначают разные лифты (один из них едет, допустим на 22 и 26, другой на 25). Одного человека лифт уже забрал, второму неизвестно сколько ждать.

Именно так + вводить этаж до посадки это разрыв шаблона.

В час пик наблюдаешь людей "А мы уже 10 могут ждём лифт С"...

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

Я бы всё-таки сделал там кнопку «ход», которая заставляет двери закрываться немедленно, без задержек. Она же «выпусти меня!», если человек защёлкнулся там без задания.

Как только более медленное полужопие пересекло черту — можно жать кнопку и ехать, не дожидаясь. Ну, и все стандартные концевики безопасности, конечно (на советских были, а сейчас безбожно забивают с понятными последствиями).

Да, базовый набор кнопок (закрыть немедленно, не дать закрыться, вызов саппорта) есть, конечно. И все системы безопасности.
На самом деле даже кнопки этажей есть, но они спрятаны за панелькой, открывающейся ключом. Т.е. обслуживающий персонал может, зайдя в лифт, отогнать его на нужный этаж.

(Я, кстати, не шучу про отсутствие кнопок внутри лифта. В каких-нибудь свежих бизнес-центрах класса A вы, вероятнее всего, увидите панель без единой цифры. Только кнопку открытия дверей и телефон экстренной связи.)

https://www.youtube.com/watch?v=HbDnxzrbxn4

Не открывал ни то, ни это, но уверен, что там Eleven) британский скетч про Elevator with voice recognition technology)

Втентакль не открывал, но на Трубе таки Ылевын.

Интересно у них акцент в конце исчез на фразе «going up».

У меня в доме два лифта, они друг про друга не знают и табло на этажах тоже нет. Там хотя бы логику "если один лифт свободен / может подобрать по дороге, то не отправлять второй лифт" увидеть. Потому что если вызвал один - не может быть уверен, что он сейчас не где-то едет не в твою сторону, а если вызвал два - уедешь быстрее, но занимаешь два лифта на себя. В итоге конечно все вызывают по два лифта.

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

Нет, у нас точно не так. Какой вызвал - такой и приедет, вызвал два - приедут оба. Лифты современные, но установлены вместо старых, видимо поэтому.

но установлены вместо старых, видимо поэтому

Возможно, просто поставили два одинаковых и с их соединением заморачиваться не стали.

Тоже нет, знакомая живет в доме эдак 22 года постройки и там та же фигня - два раздельных лифта, две кнопки и никакого табло на этажах. Похоже это просто экономия от застройщика, не ему же потом это все обслуживать. Но я принципиально вызываю один лифт))

Зато вечером лифты стоят на первом этаже с открытыми створками, это удобно.

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

А нас пока старые, точнее один грузовой с элементарной логикой "откуда вызывали, туда и едем, вниз подбираем всех".

Но главное неудобство что в лифте два человека с разных этажей в начале поездки решают кому первому выходить)) в современных каждый нажал на свою кнопку и ждёт

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

Если один лифт то парковка должна быть на первом этаже, если есть второй или третий то на среднем этаже. У меня в доме бесит один лифт и всегда на последнем этаже 12м этаже потому я на пятый хожу пешком, потому что лифт не дождаться, сажусь если только котото выходит на первом удачно, кроме того в доме живет семья армян на 12 и 7 этажах у ник квартиры и они постоянно курсируют туда сюда буквально в течении всего дня если с первого вызвать то лифт может идти сначала с 12 и стоишь ждешь, но в 50% случаях он останавливается на 7м там заходят и едут снова на 12й в результате теряешь 2-3 минуты на ожидание в итоге можно подождать и 10 минут так и не дождаться. Проще пешком . Не представляю как поднимаются те кто живут еще выше.

Вообще никто не способен. Задача диспетчеризации группы лифтов — NP-трудная. То есть буквально: не существует алгоритма, который гарантированно найдёт оптимальный маршрут за разумное время.

Оптимальный по каким критериям? Если взять критерий, к примеру, максимально допустимого ожидания — это одно, минимального катания лифта — это другое. И т.д.

Для ряда критериев система тупо не имеет входных данных. Очевидно, что при таких вводных можно иметь только эвристики. Соответственно, при чём тут NP?

В общем, потрясающе, написана целая статья про алгоритмы и ни слова про требования!

Минимальное время доставки. По сути это вариант задачи коммивояжера.

Минимизация среднего времени доставки или медианного?

Скорее видимо минимизация максимального, как бы странно это ни звучало.

Возможно и так. Я спросил потому, что хотел показать, что целевой показатель, определяемый некоторыми особенностями человеческой психики, может быть совсем неожиданным.
Люди часто предпочитают предсказуемость максимальной эффективности. Лифт, который всегда приезжает за 30 секунд, может быть предпочтительнее того, который обычно приезжает за 10 секунд, но иногда и за два часа.

С математической точки зрения можно придумать много разных вариантов поведения лифта. Минимальное время ожидания, максимальная скорость движения, минимальное число остановок и т.д. и т.п. Если же говорить о реальных лифтах, то самая простая модель - непрерывное движение лифтов вверх-вниз с остановками по нажатым внутри лифта или снаружи кнопкам. С указанием направления движения кабины на кнопках вызова. Тогда, где бы вы ни стояли, вы попадаете в лифт в пределах некоторого максимального конечного промежутка времени. В больших зданиях медленно из-за остановок? Увеличьте количество лифтов и скорость движения кабин. И не морочьте никому голову 😁. ИМХО, конечно 😁

У меня в советской панельке лифты работали так: при движении вверх не подбираем никого. При движении вниз подбираем всех. Если один лифт едет вверх, а второй в этот момент стоит пустой с закрытой дверью - опускается на первый этаж.

Потому что в жилом доме основное движение вверх - подьем с 1 этажа. С 5 на 7 (в гости) - редко. Вот и не запрограммировано подбирание вверх.

А вниз едут с любого этажа.

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

Также получается что с небольшим количеством этажей 10-15 и с небольшим количеством лифтов 1-3, алгоритм LOOK ведёт себя весьма хорошо

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

ни математически не способны найти идеальное решение

Задача: распределить людей по лифтам так, чтобы среднее время ожидания было минимальным.

Имхо, тут еще проблема в том, что невозможно поставить задачу учтя интересы всех сторон.
Среднее время ожидания минимальное? А сильно порадует сокращение среднего времени ожидания на 10 секунд тех нескольких человек, которые лифта 24 часа будут ждать?
Брать за пример реалтайм системы, где должен быть гарантированный отклик в какое-то время? Тоже нереально, это может привести к "пробкам" на ровном месте
Смешное решение есть с "шабатными" лифтами, которые ездят без остановки вверх-вниз. При чем иногда реально по кругу, а по одной шахте могут и несколько лифтов пустить, но это уже по сути эскалатор получается, а не лифтовая задача.

Есть что-то приятное в том, что задачу, которую невозможно решить точно, мы решаем достаточно хорошо набором правил, которые инженеры 60 лет полировали вручную.

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

…запоминать паттерны людей, живущих в доме («я сегодня задержалась на пять минут, вылетаю на работу бегом, а он меня уже ждёт, как собачка!»), учитывать домофон…

спасибо за статью!

как раз недавно увидел как ремонтируют лифт, начал всё спрашивать как всегда и познакомился с инженером, он мне всё рассказал и показал, дал всё сфотать и даже покатал на крыше лифта!

а я его угостил мороженым

На ютубе есть канал лифтовика, очень интересные сюжеты.

Для n этажей и k лифтов пространство комбинаций — n^k. Полный перебор невозможен.

?!?

Вот да, похоже это двойной косяк в статье. Во-первых, число возможных позиций лифтов - размещение из k по n, и формула числа возможных расстановок лифтов - k!/(k-n)! А во-вторых, для большинства реальных комбинаций числа этажей и лифтов это числа, не особо впечатляющие современные компьютеры... 40 этажей и 4 лифта - 2,2 миллиона вариантов, например.

До полной сингулярности не хватает двух важных дополнений:
а) Оценка количества людей на посадку (по количеству и по весу), возможно в разрезе целевых этажей. Если 70 человек в холле хотят ехать на 15 этаж, то логика лифтового хозяйства скажет "ОК, вот вам один лифт на 10 персон". Когда остальные 60 опять нажмут "15 этаж", логика лифтового хозяйства будет возмущённо пиликать "я же вам секунду назад отправил лифт, ОК, давайте я ещё раз открою двери у переполненного лифта."

б) Настройка паттерна для каждого конкретного здания (например, там вкусная столовая на 15 этаже), в зависимости от времени, дня недели и может быть государственных праздников. С возможностью изменения приоритетов "на лету". Условно, в воскресенье пришла толпа школьников на экскурсию, всех их нужно поднять по определённой программе

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

https://play.elevatorsaga.com/

Возможно пришла пора устанавливать камеры в лифтовых холлах на каждом этаже.

Как минимум, удастся избежать ситуации когда лифт останавливается "забрать попутчика", а попутчик либо уже уехал на другом попутном лифте, либо передумал пользоваться лифтом и ушел.

Плюс можно будет точнее оценивать потенциальное количество пассажиров, так как при поездке "вниз" люди могут и не нажимать кнопку выбора первого этажа, если кто-то уже ожидает лифт и они могут просто спросить " - вызвали лифт вниз?".

А там на площадке у лифта соседки заболтались. на пяти этажах из 15-ти)

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

 спрашивать у пассажира этаж назначения до посадки в лифт

Да, а ещё, пока в больших БЦ с 20+ лифтами, не научились сопоставлять количество уникальных пользователей кнопки с количеством нажатий на кнопку вызова - работает раздувание спроса через двойной-тройной вызов каждым кто приходит, чтобы контроллер думал что его ждёт толпа, которая займёт лифт. Решаем две задачи: ускоряем подачу кабины и повышаем вероятность ехать экспрессом. Лучше работает когда едешь вниз.

Интересно, насколько прогноз спроса имеет вес. А также, есть ли в алгоритмах учёт специфических часов пик.

У меня в офисном здании 10 современных лифтов, панель выбора этажа в холле, всё по фен-шую. Помимо классических часов пик утром и вечером, есть дневные на конкретный этаж на обед.

В целом, кажется, диспетчеризация неплохая, только всё равно смущает, когда в 7 утра заходит полтора человека, вводят разные этажи, и система назначает им персональные лифты, даже если этажи почти соседние. Почему бы не в 1 посадить, дешевле же должно быть. А второму лифту утром бы как раз снизу наготове стоять.

Инженеры: 60 лет бьются с алгоритмами, коэффициентами, проводят тысячи часов эксперементов

Тем временем жильцы в моём ЖК: мне же надо вниз, а вызову ка я лифт в обе стороны

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

Опа, а вот и двухкнопочник в жилом доме. Расскажите про этот раритет. Что вообще сподвигло делать поддержку оптимизации поездок с четвёртого этажа на восьмой? Настолько часто люди к соседям в гости ходят?

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

Интересно, а какого вида у вас кнопки вызова лифта на первом и последнем этажах? Там же треугольник вверх и соотв. вниз должен интуитивно объяснять логику.

Давайте представим идеальный лифт

Это тот, который появляется на этаже в момент нажатия кнопки и исчезает после доставки пассажира на нужный этаж. Попутчиков не подбирает и не набирает.

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

Принципом солипсизма (ч один в этом мире , лифт остановится только там нажал)! Можем пожертвовать сразу.

Принципом группового эгоизма ( вся программа поездки фиксируется в одном направлении и до завершения поездки не изменяется ) также можем пожертвовать, но тут кое идут варианты. - на некоторых группах этажей некоторые группы лифтов нельзя отправить на некоторые группы этажей . Ну это когда лифты жтой шахты на этажах 2-5 не останавливаются, а на 16-24:мне ездят

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

Но тогда это будет полноценная система заказов - после выбора этажа на панели вам должны ответить Ваш лифт. - A и ожидается через 26 секунд

Ну и так далее.. можно развлекаться с приближения и к идеалу в условиях ограниченности ресурсов .

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

По одной шахте только вверх , по другой только вниз. На каждом этаже лифт может переехать в горизонтальном направлении в другую шахту. Что-то вроде двух дискретных эскалаторов..с противовесами тогда а будет затык.

И да. Трансляция выступления стендаперов в лифте сильно влияет на ощущения оптимальности движения лифтов

У себя в доме заметил интересную фишечку в алгоритме управления лифтом. Делаю, к примеру, вызов с 7-го этажа. Пока лифт едет ко мне снизу, кто-то делает вызов на 8-ом. Так вот, лифт проезжает мимо меня, забирает народ с 8-го, а меня уже на обратном пути вниз. Не знаю, на какой диапазон этажей рассчитан такой алгоритм (условно, если будет первый вызов с 5-го, а второй с 10-го, проедет ли лифт мимо первого вызова), но штука интересная.

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

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

Как сделать вызов «на этаж ниже себя»? Двойной клик?

Двойной клик?

Это первый шаг на опасном пути, в конце которого - инструкция на три страницы по выстукиванию кнопкой морзянки

Уже второй. Первый — это когда я длинным кликом предложил вызывать именно грузовой, если он прям вот настока нужен вотпрямща, чтобы ради него пять секунд держать кнопку.

Естественно, срабатывает система на отпускание, иначе за это время уже обычный подъедет.

У нас три лифта и одна кнопка вызовы, грузовой вызывается повторным нажатием на кнопку и только если у приехавшего пассажирского открыты двери.

Вау. Вот это UI. «Сначала примерься, точно ли не влезаешь, а потом уже кликай золотую рыбку мышку кабинку в общем, понятно кого» %)

Не факт, что очень хорошее решение — но точно крайне остроумное :)

а всего-то и надо, сделать отдельную кнопку "вызов грузового лифта" и табличку с предупереждением, что если лифт вызван этой кнопкой, а не просто пришёл по решению контроллера, то он придёт не раньше, чем через три минуты, и будет ехать со скоростью вдвое меньше обычной. Тем, кому нужен именно грузовой лифт, это всё равно удобнее, чем вызывать сначала один лифт а потом второй — зато тем, кто вызывает оба лифта сразу, вызывать грузовой будет бессмысленно.

Нажимать обе кнопки «вниз» и «вверх» тоже бессмысленно, но добрая половина людей так делает :)

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

А если бабушка плохо видит и промахнулась? Пусть сидит дома, старая карга?

Так голосовое оповещение же. При нажатии кнопки этажа ниже, чем текущий — "Эта кабина вызвана кнопкой ВНИЗ, и вверх не поедет. Покиньте кабину и вызовите лифт кнопкой ВВЕРХ". Один раз бабушку лифт так отругает, и я вас уверяю, больше она промахиваться не будет.

Есть такая статистика — люди "случайно" ошибаются намного реже, если эта случайность им невыгодна или дискомфортна, чем если эта случайность им выгодна. Кассир в принципе может ошибиться в счёте в любую сторону, но по статистике, в сто раз чаще ошибается в свою пользу...

В Средиземноморье статистика по кассирам обратная: они такие раздолбаи обычно, что приходится напоминать: «Я еще кофе с круассаном же ел!».

Проблема в том, что может припереться второй, которому в другую сторону — и окажется, что с точки зрения оптимизации времени придерживаться первой попавшей в очередь задачи вопиюще невыгодно…

Почему возводим в степень количества людей?

Количество вариантов же ограниченно количеством этажей?

Допустим, есть толпа из 50ти человек, Васе нужно на 2, Маше и Даше нужно на 3, т.е. все люди разобьются на группы, которым нужно на определенный этаж.

Потому что наша задача может быть в том, чтобы сократить не просто время ожидания лифта на этаже, а человеко-минуты ожидания. И тогда может быть выгодно послать лифт чуть дальше, но к толпе, а не ближе к одиночке.

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

Количеством людей может определяться приоритет - куда нам гнать лифт, если его ждут на нескольких этажах.

И вот один человек засиделся на двадцать втором до семи, потому что у него дедлайн, а на двадцатом — колл-центр, у них смена заканчивается в семь.

И человек с 22-го ждет лифта 15 минут, да?

Но система управления лифтом не располагает этой информацией. Или располагает?

Ну и в любом случае, количество приоритетов все равно будет ограничено количеством этажей.

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

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

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

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

Самая простая задача: один лифт, случайный по Пуассону приход на первый этаж, случайный этаж назначения (равномерный 2.. верхний), Случайный выход на н-ый этаж для спуска на первый. Минимизировать среднее время ожидания.

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

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

"Горе от ума". Да, можно хорошо заточить систему под определённый паттерн, но проблема в том, что "общего" паттерна нет, их много разных, и нет способа заранее выбрать правильный, а от неправильного будет больше вреда, чем пользы — поэтому "в общем" более оптимален какой-то простой и ПРЕДСКАЗУЕМЫЙ алгоритм или даже не алгоритм, а набор правил, которыми руководствуется система при принятии решений

Например такой

1. На каждом этаже обязательны кнопки "вверх" и "вниз", а не просто "вызов". Кабина ни при каких условиях не едет в сторону, куда её не вызывали. Вызвал лифт кнопкой "вниз" — вверх на нём уехать не сможешь, вверх кабина, вызванная кнопкой "вниз", может уйти только пустой. Ну, это просто защита от злоупотреблений.

2. Кабина с пассажирами не меняет своего направления движения, пока все пассажиры её не покинут. Можно добавить дополнительную остановку, можно подбирать по пути дополнительных пассажиров, движущихся в том же направлении (только если есть резерв по весу; если датчик показывает загрузку, близкую к полной, кабина игнорирует кнопки вызова на проезжаемых этажах). Освободившись от всех пассажиров и при отсутствии вызовов в том же направлении далее по ходу движения, кабина либо уходит на парковку, продолжая движение до первого или последнего этажа, либо начинает обработку вызовов в обратном направлении.

3. По возможности, система паркует хотя бы одну кабину на первом этаже и хотя бы одну на последнем.

4. По возможности, при отсутствии вызовов, после покидания кабины всеми пассажирами, она остаётся на этом этаже на пять-десять минут, прежде чем будет переведена на парковку на первый или последний этаж.

5. Мгновенная реакция системы на вызов — не нужна. Если кабина поедет на вызов не через двести мс, а через две секунды, или даже через двадцать (если дом высокий) — пользователь этого и не заметит и уж точно не сочтёт большим неудобством, а шанс взять попутчиков немного вырастет. Ценой ничтожного и даже незаметного неудобства для всех покупаем отсутствие заметного неудобства для некоторых. )

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

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

А как быть с школами, магазинами и прочим соц. учереждениям? Малоэтажная застройка, значит низкая плотность, а значит организациям приходится обслуживать большие площади, а значит находятся они дальше друг от друга. И 15 минут пешком до школы/магазина уже 30 минут на машине и ни о какой прогулке уже и речи идти не может.

Хм. "А я здесь живу".

Город на 9/10 (по площадям) состоит из индивидуальной застройки с редкими включениями 2-3-этажных домов, 1/10 (по площадям же) -- пятиэтажки и отдельные более высокие здания. Никаких проблем. Ну, да -- до школы от моего дома не 15 минут, а 20, а некоторые мои одноклассники на дорогу до школы тратили и по тридцать минут, но немногие.

Детский сад -- десять минут пешком или десять же на машине (особенность местности, пешком есть короткая дорога, а на машине надо крюк делать)

Ближайший магазин у меня -- две минуты пешком. Большой ТЦ, ашан, магнит и пятёрочка -- пятнадцать минут пешком, три минуты на машине или четыре остановки на автобусе (до остановки мне идти меньше минуты). Почта и ПВЗ основных маркетплейсов (вб, озон, всеинструменты) -- примерно так же, 10-15 минут пешком. Пара строительно-хозяйственных магазинов -- 15-20 минут пешком, 5-10 минут на машине. Крупные строймаркеты -- 15 минут на машине.

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

Читал - в Китае делают кнопки вызова лифта уже на входе в подъезд. В доме, где я живу, надо пройти мимо всех лифтов, чтобы их вызвать.

Два лифта, одна кнопка вызова. В большой спокойно влезаю с великом, в другой только стоя его ставить. С коляской в мелкий в принципе не влезть. Большой лифт вызывается, только если мелкий занят. Вызватть лифт по выбору нельзя, (можно мелкий направить вниз, нажав пару этажей для "наподольше", в надежде, что в это время большой освобобится и придет). Или съездить за большим на первый этаж (но и там именно его вызвать невозможно).

Человейник. Тридцать с чем-то этажей, пять больших лифтов. В часы пик на полчаса очередь. На спуске вниз больше 6 остановок лифты не делают. В часы пик, ни сверху толком не уехать, ни с нижних этажей. Если выходят на этаже вызывающего (пусть это и всего третий этаж), попутчики заходят, едут до последнего вызваного, и переключают лифт на движение вниз. Если заходит много, сразу переключают на вниз, не ожидая, пока все наверх доберутся. Внизу постояная грызня - ожидающим илимкучковаться по этажам, или ехать в порядке живой очереди.

Больница. Вокруг лестницы четыре лифта, с дверьми на все стороны света. И нет индикации положения лифтов снаружи. Вероятно, строилось по ТЗ, по которому предполагалось, что просто людям запрещено будет на лифтах кататься.

Есть лифты, которыми спецслужбы управляют дистанционно. Ни разу такого вживую не видел. Зато один раз рядом с пожарниками минут пятнадцать прождал лифты, которые где-то там катаются, но до первого этажа не доходят.

С уходом союза исчезла хорошая практика: номера квартир или ещё какие обзначения, дублировать по три раза. На входе в подьезд, у лифтов и в них.

Давно не сталкивался, а в девяностые встречалось достаточно часто - определенные лифты на определеных этажах не открываются. Просто потому, что что-то сломалось, а починить некому или нечем. Если какой-то умник (вроде меня) по доброте душевной проводил объезд, дефектацию и вешал пояснялку, да еще и вызывал мастера, то приезжал дежурный и просто отключал все лифты нафиг. Потому что недопускается лифт эксплуатировать, если хотя бы на одном этаже двери/кнопки неисправны.

Оптимум для вызова именно большого лифта — КМК «долгое нажатие кнопки». Секунд пять примерно. Сильно демотивирует вызывать именно большой «потому что так удобнее» (приедет тот, который оптимальнее), но если прикатил велосипед, инвалида в коляске и тачку с цементом (одновременно) — пять секунд держать кнопку не такая уж и большая проблема…

А меня бесит, что всего одна кнопка вызова на 3 лифта, из которых один - грузовой. Вот жму я ее на своем высоком этаже, сжимая велосипед между булками и жду грузовой лифт. Приезжает мелкий лифт - велик туда не влазит нормально. Я его засылаю на 1 этаж, жму кнопку снова. Приезжает второй мелкий лифт. Затем снова первый мелкий.... И таких итераций может быть много: но я на пятой итерации обычно сдаюсь, ставлю велик на заднее колесо и впихиваюсь в мелкий лифт, пачкая колесами зеркала и стены.
Идиотизм детектед.
Застройщик - ЦДС, УК - Новые горизонты.

Может, есть какое-то комбо вызова именно грузового? Я бы сделал долгое удержание кнопки. Или три чётких нажатия по секунде с интервалом в секунду, точность таймингов ± × 2 раза. Что-то такое, что лень нажимать просто так, чтобы приехал не побыстрее, а побольше — но не лень, если нужно именно побольше.

У нас три лифта и одна кнопка вызова, грузовой вызывается повторным нажатием на кнопку и только если у приехавшего пассажирского открыты двери.

К сожалению, обратная история, когда у каждого лифта свои кнопки вызова вверх и вниз нивелируется кретинами, которые, заходя на этаж, нажимают ВСЕ кнопки на ВСЕХ лифтах, а потом у каждого лифта спрашивают «вы вверх едете???».

В итоге все алгоритмы планирования летят к чертям, а 2/3 лифтов катаются вхолостую.

Ну там в принципе только мазохист будет нажимать «свою» кнопку только на одном лифте, потому что ХЗ какой из них быстрее приедет — а людям свойственно пытаться увеличить свои шансы.

Но нажимать и вверх, и вниз — это действительно клиника дяди Финика.

Системы управления лифтами надо внедрить во всех российских больницах (после того, как починят все сломанные). Наблюдал в Долгопрудненской больнице Московской области прошлой зимой — сотрудники стабильно тратят около 15 минут на перевозку больного между этажами. По местной легенде, однажды в лифте, не дождавшись реанимации, умер пациент.

Но в Долгопрудном не то, что эвристик нет, там просто тупая логика: приоритет у кнопок на этажах. Пустой лифт загружается пациентом, внутри нажимают destination, но за каким-то лядом лифт едет совсем в другом направлении, потому что кто-то нажал кнопку снаружи. В итоге с пациентом в лифте можно долго кататься по этажам в режиме scan, грустно улыбаясь другим ожидающим санитарам с пациентами на койках, пока наконец не окажешься на нужном этаже.

На лифт в Долгопрудненской больнице нужно записываться заранее))) Это частая тема для ироничных шуток среди персонала.

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

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

RFID-карта с приоритетным проездом. Не в середине 20в. живем...

Лифт тупит не из вредности, а потому что жизнь у него комбинаторно тяжёлая :)

Собственно задача диспетчеризации лифтов в жилом доме и лифта в бизнес-центре суть две разные задачи. Утром в доме дружно все выходят из дома, в бизнес-центре наоборот - заполняется центр людьми по этажам. Вероятность нахождения лифта на первом или первых этажах должна быть выше, чтобы распихать людей по этажам. Здесь суть маршрутизация, зависимая от времени. Странно, что такую задачу не взялись порешать математики, которые не забыли, что такое производная...

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

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

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

Ну да, без учёта времени суток это вообще разговор ни о чём

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

А помните, как пустели дворы, когда наступало время трансляции первых телесериалов? Нет гарантии, что подобный эффект не повторится снова с чем-то другим — с прямым эфиром спортивных матчей, например.

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

Еще хуже когда те же 5 человек выходят и нажимают ВСЕ кнопки на ВСЕХ лифтах («чтобы быстрее приехало»). И так на каждом этаже.

В итоге, лифты катаются туда сюда а у тех же планктонин бомбит «да сколько можно то?!». На следующий день повторяется то же самое.

У нас в офисном здании (40 этажей) так:

  • всего лифтов 8, 4 обслуживают этажи 2–20, 4 — 21–40 (они проезжают первые 20 этажей значительно быстрее), на 20 этаже — пересадка;

  • лифты двухэтажные, на четные этажи можно уехать только со второго, куда надо добраться на эскалаторе (есть еще кнопка «для инвалидов», которая привезет нижнюю кабину на любой этаж);

  • вызов только снаружи, из холла;

  • в 9 и 14 часов все пустые едут вниз, в 13 и 18 — наверх (приход/уход и обед);

  • в остальное время лифт остается там, куда привез последнего пассажира.

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

Ни разу не видел двухэтажные лифты.

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

Не-а. Само по себе число этажей никак не влияет, оно только увеличивает интервалы ожидания и время в пути за счёт более длинных перегонов.

Чтоб получить тривиальное решение, надо сделать число лифтов равным количеству жильцов/сотрудников, и каждому выделить персональный лифт. (плюс резерв для гостей/посетителей)

Чтоб получить тривиальное решение, надо сделать число лифтов равным количеству жильцов/сотрудников, и каждому выделить персональный лифт. (плюс резерв для гостей/посетителей)

Одноэтажное здание рассматривать тогда уж.

число этажей никак не влияет

Эм? В случае двух этажей и двух лифтов выбор «куда отправлять лифт» детерминирован, а в случае трех этажей — нет. Одно это опровергает тезис выше.

Мне интуитивно кажется (но я могу ошибаться), что Э≡Л приводит к тривиальному решению: пустой лифт едет на «свой» этаж, все лифты подбирают попутчиков, два пустых лифта могут поменяться местами, если Л₁ < Л₂ < Э.

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

То есть, моё предположение, что число этажей не влияет, действительно для случаев, когда этажей таки больше двух, то есть лифт существует, на нём можно куда-то поехать, и есть выбор, куда именно.

Мне интуитивно кажется (но я могу ошибаться), что Э≡Л приводит к тривиальному решению: пустой лифт едет на «свой» этаж, все лифты подбирают попутчиков, два пустых лифта могут поменяться местами, если Л₁ < Л₂ < Э.

Решение рабочее, но явно неоптимальное, даже если кабины лифта имеют бесконечный объём и грузоподъёмность, чтоб за раз перевозить любое количество пассажиров.

Например, обед в офисе на 10м этаже, толпа сотрудников с интервалом в полминуты выходит из офиса и едет — 50 человек в столовку на пятом, 50 человек в кафе на двадцатом, а ещё 50 — на первый этаж, чтоб сбегать поесть дома. Упс.Для максимально быстрого обслуживания этой толпы нужно несколько десятков лифтов, они у вас есть (этажей не меньше двадцати, значит есть как минимум двадцать лифтов), но ваш алгоритм не позволяет диспетчеру их задействовать, их всех будут обслуживать всего четыре лифта — ##1,5,10 и 20.

Ну у вас там уже не лифт, а целая транспортная система с пересадочным узлом

Небольшое дополнение к обсуждению статьи про алгоритмы лифтов.

Есть важный контекст, который в статье практически не отражён.
Нужно упомянуть о Gina Barney, одну из ключевых специалистов в этой области.
Её вклад не в "написании алгоритма", а в том, что она фактически сформировала инженерный подход к лифтовым системам.

Что именно она сделала:

  • Систематизировала расчёт пассажиропотока. До этого во многом опирались на приблизительные оценки. Она формализовала модели: сколько людей приходит, откуда, куда и в какие моменты времени.

  • Ввела и закрепила ключевые метрики. Такие вещи, как:
    • среднее время ожидания
    • интервал обслуживания
    • пропускная способность
    • round-trip time

Сегодня это стандарт отрасли, но кто-то должен был это оформить и внедрить в практику.

  • Связала лифты с архитектурой здания, показала что лифтовая система это часть архитектуры:

    • сколько нужно шахт

    • как делить их на группы

    • где делать пересадочные уровни

    • как это влияет на полезную площадь здания

  • Продвинула использование моделирования и симуляций. Это сейчас стандарт, но раньше так не работали. Вместо "прикинем на глаз":

    • моделирование потоков

    • проверка разных стратегий управления

    • сравнение решений до строительства

    • распределение вызовов между лифтами

    • динамичное зонирование

    • адаптация под разные режимы трафика

То есть алгоритм нельзя рассматривать отдельно от проектирования здания.

Gina Barney сформировала отраслевой стандарт мышления, она фактически превратила лифты из набора эвристик в полноценную инженерную дисциплину. Её работы это, по сути, база для инженеров.

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

Подход Barney: есть здания, есть потоки людей, физика, и только потом алгоритмы как инструмент.

Без упоминание её вклада картина получается немного однобокой.

Gina Barney создала фундамент, ответила на вопросы: что измерять, как считать, как проектировать.
Компании (Otis, Schindler, KONE) совершили практическую революцию.

Новый Арбат 36, знаменитая «Книжка». 29 этажей, 8 пассажирских и 1 грузовой лифты. Мой склад-офис на 24-м.

И я в обнимку с системным блоком (эникейщик). И в часы пик лифты идут битком, не впихнуться.

Долгие годы я наблюдал, как это всё работает. Ругал разработчиков. Шутил мысленно, что лифт на винде, поэтому надо постоянно перезагружать…

А оно вон чё - np-полное…

Когда надо ехать вниз в офисе, чаще вместо лифта проще использовать лестницу. Вверх на пару этажей аналогично.

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

Прочитал и теперь буду всем говорить, что опоздал на работу, потому что лифт решал NP-трудную задачу

C-LOOK

Это и есть вершина оптимизации. Дальше начинается оверинженериг с ETA и взвешенными функциями стоимости, ML при и так рабочем и очень простом алгоритме...

Это "вершина оптимизации" для девятиэтажки с одним лифтом. Больше этажность и/или больше лифтов -- и этот алгоритм перестаёт быть не только оптимальным, но и вообще рациональным.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации