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

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

3

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

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

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

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

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

Первая мысль которая приходит в голову — поставить препятствия. Например засадить там все кустами. Плюс в этом месте еще есть уклон, который тоже будет мешать пешеходам. Это довольно типичный вариант мышления у человека, который впервые сталкивается с проблемой организации пешеходных потоков — поставить забор и не пускать. Иногда это действительно необходимо, но в большинстве случаев проблему можно решить «по-доброму» добавлением новых удобных дорожек, а не заборов.

Сперва проверим, что все-таки будет при наличии препятствия (добавлен участок растительности, который не дает срезать угол снизу):

Отлично, картина начинает проясняться. Мы видим что небольшого препятствия все-таки достаточно для того чтобы направить пешеходов снизу по центральной аллее, то есть разница в длине маршрутов все-таки невелика. Правда там в центре появляется срезанный угол, надо его тоже учесть. Добавим две диагональные дорожки к центральному входу:

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

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

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

С этим результатом пользователь и пошел к заказчику… чтобы выяснить что мы все сделали наоборот. Заказчик хочет чтобы люди НЕ ХОДИЛИ по центральной аллее, мол там все красиво будет, а рабочие все мусором закидают и красоту нарушат. Да, вот такие внезапные повороты бывают в проектировании пешеходной инфраструктуры, сделать красивую аллею на отшибе чтобы глаз радовала, но никто там не ходил.

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

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

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