Реализация алгоритма многоагентного поиска пути на базе Conflict Based Search
- Git 2.7.4 или выше
- CMake 3.2 или выше;
- GCC 4.9 или выше
- Git 2.23.0 или выше
- CMake 3.2 или выше;
- Apple LLVM version 10.0.0 (clang-1000.11.45.5) или выше;
- Git 2.23.0 или выше
- CMake 3.2 или выше;
Cоздайте ответвление (fork) этого репозитория в свой GitHub аккаунт. Загрузите содержимое полученного репозитория, либо клонируйте его в нужную вам директорию.
git https://github.com/dpaleyev/PathPlanningProject.gitили (с помощью ssh)
git@github.com:dpaleyev/PathPlanningProject.gitили просто скачать архив с файлами
Сборку проекта возможно осуществить используя CMake.
При использовании CMake сборка и запуск может производиться как из командной строки, так и при помощи различных IDE (например JetBrains CLion). При запуске путь до конфигурации карты передается в аргументах к исполняемому файлу.
Примеры входных и выходных файлов можно посмотреть в папке Examples
Входной файл содержится в теге root, в котором расположены следующие теги:
-
map— обязательный тег, содержащий основную информацию о задачеwidth,height— размеры картыcellsize— размер одной клеткиstartx,starty— координаты начальной клетки для каждого агента по очереди в тегахagentfinishx,finishy— координаты конечной клетки для каждого агента по очереди в тегахagentgrid— содержит поле:heightтеговrow, в каждом из которыхwidthнулей или единиц через пробел, причем нули означают свободную клетку, а единицы — занятую
-
algorithmsearchtype— алгоритм поиска:astarmetrictype— эвристика для оценки расстояния (x,y— расстояние до цели по горизонтали и вертикали соответственно)euclidean—sqrt(x * x + y * y)manhattan—abs(x) + abs(y)chebyshev—max(abs(x), abs(y))diagonal—min(x, y) * (sqrt(2) - 1) + max(x, y)
hweight— вес эвристики при подсчетеfвершиныallowdiagonal— разрешено ли ходить по диагонали:trueилиfalsecutcorners— разрешено ли ходить по диагонали, если с одной стороны стена:trueилиfalseallowsqueeze— разрешено ли ходить по диагонали, если с обеих сторон стены:trueилиfalseprioratizeconflicts— включено ли использование улучшения приоритезации конфликов в CBS:trueилиfalsebypass— включено ли использование улучшения приоритезации конфликов в CBS:trueилиfalsecorridorsymmetry— включено ли использование улучшения распознавания конфликов в коридорах в CBS:trueилиfalsetargetsymmetry— включено ли использование улучшения распознавания конфликтов в конечных точках в CBS:trueилиfalse
-
optionsloglevel— уровень логирования, каждый следующий включает всю информацию предыдущего0— ничего0.5— только тегsummary(подробнее в формате выходного файла)1— путь на поле и в форматахhplevelиlplevel1.5— тегlowlevel, в который записываются спискиOPENиCLOSEDв конце работы алгоритма2— в тегlowlevelспискиOPENиCLOSEDзаписываются на каждом шаге алгоритма
logpathlogfilename
Визуализация происходит с помощью Python скрипта visualizer.py
После запуска передается путь до лог файла и автоматические начинается визуализация
Яковлев Константин Сергеевич
- kyakovlev@hse.ru
- Сайт НИУ ВШЭ
- Telegram: @KonstantinYakovlev
Дергачев Степан
- sadergachev@edu.hse.ru
- Telegram: @haiot4105
