🤖 Планувальник Шляхів Складських Роботів — A* Наживо
Спостерігайте, як флот складських роботів знаходить найкоротші шляхи без зіткнень по сітці стелажів, використовуючи справжній пошук A* з живою візуалізацією евристичної вартості та динамічним переплануванням навколо заблокованих проходів.
Про цю симуляцію
Ця симуляція запускає справжній пошук A* — відкриті й закриті множини, реальне відстеження вартості g/h/f та чергу з пріоритетом на бінарній купі для вибору фронту — щоб прокладати маршрут невеликого флоту складських роботів між станціями відбору та здачі на сітці стелажів. Кожна кольорова плитка, яку ви бачите, справді була вилучена з відкритої множини й розширена алгоритмом; ніщо не підроблене для показу. Заблокуйте прохід під час виконання й спостерігайте, як кожен зачеплений робот негайно перешукує свіжий маршрут навколо перешкоди, точно як це робила б реальна система керування флотом.
🔬 Що показано
Сітковий склад із стелажами й проходами, відтворений у справжньому 3D. Роботи (кольорові сфери) переміщуються з поточної клітинки до цільової за допомогою A* з евристикою манхеттенської відстані, масштабованою регульованою вагою ε. Кольорові плитки підлоги, що розширюються, — це живий фронт пошуку, забарвлений від синього (низька вартість f) до червоного (висока вартість f); кінцевий маршрут підсвічується суцільним кольоровим слідом, яким потім слідує робот.
🎮 Як користуватися
Налаштуйте кількість роботів, вагу евристики (1,0 = оптимальний A*, вище = швидший, але жадібніший "Зважений A*") і швидкість руху за допомогою повзунків. Клацніть будь-яку відкриту плитку проходу в 3D-вигляді — або натисніть «Заблокувати випадковий прохід» — щоб закрити її й запустити переплановування в реальному часі; «Очистити блокування» прибирає всі перешкоди. Перетягніть, щоб обертати камеру, прокручуйте для масштабування й використовуйте «Скинути», щоб перетасувати флот.
💡 Чи знали ви?
Реальні автоматизовані склади, такі як флоти Kiva/Proteus від Amazon і системи Locus Robotics, використовують карти зайнятості, вирівняні по сітці, та планувальники родини A* саме з цієї причини: стелажі вже розташовані з регулярним кроком, тож трактування підлоги як графа клітинок сітки перетворює "знайти найближчий вільний шлях навколо перешкоди" на задачу пошуку, яку можна перевирішувати багато разів на секунду.
Часті питання
Що таке пошук A* і чому він використовується для планування шляхів роботів?
A* — це алгоритм пошуку в графі "найкращий-перший", що знаходить найкоротший шлях між двома вузлами, розширюючи вузол із найнижчим балом f = g + h, де g — точна пройдена вартість, а h — евристична оцінка залишкової вартості до цілі. На відміну від алгоритму Дейкстри, який досліджує рівномірно в усіх напрямках, A* спрямовується до цілі своєю евристикою, тож зазвичай досліджує набагато менше вузлів, при цьому все ще гарантуючи найкоротший шлях, коли евристика ніколи не перевищує справжню вартість. Складські роботи використовують точно цей компроміс: сіткове представлення проходів між стелажами, швидку евристику (манхеттенська відстань, оскільки рух обмежений чотирма напрямками) і чергу з пріоритетом, щоб завжди розширювати наступною найперспективнішу клітинку.
Як повзунок ваги евристики змінює пошук?
Ця симуляція множить евристику манхеттенської відстані на вагу ε перед додаванням до вартості шляху, тож f = g + ε·h. При ε = 1 евристика допустима (ніколи не перевищує) і A* гарантовано повертає найкоротший шлях. Підвищення ε понад 1 робить пошук "жадібнішим": він більше довіряє евристиці, досліджує драматично менше вузлів і знаходить шлях набагато швидше, але шлях більше не гарантовано оптимальний — це називається Зваженим A*, поширений практичний компроміс у робототехніці реального часу, де трохи довший шлях, знайдений миттєво, перемагає оптимальний шлях, знайдений занадто пізно.
Що представляють кольорові плитки підлоги під час пошуку?
Кожна плитка, що засвічується, — це клітинка, яку алгоритм справді вилучив зі своєї відкритої множини й розширив — справжній фронт пошуку, а не декоративна анімація. Колір кодує вартість f цієї клітинки в момент її розширення, від синього (низька вартість, близько до старту) через жовтий до червоного (висока вартість, далеко від старту або евристично далеко від цілі). Спостереження за зростанням кольорової області показує, як A* розходиться приблизно в бік цілі, а не затоплює всю сітку так, як це робив би неінформований пошук на кшталт пошуку в ширину чи алгоритму Дейкстри.
Як працює динамічне переплановування, коли прохід заблоковано?
Клацніть будь-яку відкриту клітинку проходу в 3D-сітці, або скористайтеся кнопкою «Заблокувати випадковий прохід», щоб позначити її непрохідною. Симуляція потім перевіряє поточний шлях кожного робота: якщо щойно заблокована клітинка лежить будь-де попереду на цьому шляху, негайно запускається цілком новий пошук A* від поточної клітинки робота до тієї самої цілі, уникаючи заблокованої клітинки разом з усіма стелажами. Це відображає реальні складські флоти, де впущений піддон чи інший робот, що займає клітинку, змушує до негайного повторного пошуку замість того, щоб робот заїжджав у глухий кут.
Навіщо представляти склад як сітку, а не безперервну карту?
Розкладання на сітку перетворює планування шляху на добре вивчену, дешеву задачу пошуку в графі: кожна клітинка — вузол, кожен відкритий сусід — ребро вартістю 1, і класичні алгоритми на кшталт A*, Дейкстри чи пошуку в ширину застосовуються напряму. Реальні автоматизовані склади використовують дуже схожі сітки зайнятості, вирівняні по стелажах, оскільки стелажі вже розташовані з регулярним кроком, а роботи фізично повинні залишатися в проходах — сітка є природним, ефективним рішенням, а не спрощенням лише для демонстрації.
У чому різниця між A* і алгоритмом Дейкстри?
Алгоритм Дейкстри — це A* із евристикою h, примусово встановленою в нуль: він розширює вузли виключно за накопиченою вартістю g, гарантуючи найкоротший шлях, але досліджуючи назовні в усіх напрямках однаково, що витрачає час у відкритих складах. A* додає евристичний член, тож пошук зміщується в бік цілі, зазвичай відвідуючи малу частку вузлів порівняно з алгоритмом Дейкстри за тієї самої гарантії оптимальності, доки евристика допустима. Встановлення повзунка ваги евристики в цій симуляції на 0 фактично відтворило б патерн дослідження вузлів алгоритму Дейкстри.
Пошук A* на основі бінарної купи планує маршрут кожного робота на реальній сітці зайнятості, точно відстежуючи вартості g/h/f і миттєво перешукуючи щоразу, коли прохід блокується чи розблоковується.
3D · рушій Three.js / WebGL · ціль 60 кадрів/с · працює повністю на клієнті, без встановлення