Этот проект представляет собой демонстрацию использования полос библиотеки автоматического планирования искусственного интеллекта в node.js.
Попробуйте онлайн на https://stripsfiddle.meteorapp.com.
npm install strips
Если вы новичок в автоматизированном планировании STRIPS, вот отличное руководство, которое поможет вам начать работу.
Следующие примеры показывают, как решать задачи планирования путем определения оптимального набора действий для достижения цели. Например, сборка блоков, Ханойские башни и даже Starcraft могут быть решены с помощью ИИ (см. ниже, это довольно изящно!).
В этот проект включено несколько примеров из области Blocks World, в которых ИИ может успешно планировать серию шагов по перемещению и укладке блоков на ряд столов.
Планирование ИИ работает путем обработки простого домена с использованием таблицы грамматики PEG.js и обработки результата с помощью простой задачи STRIPS.
Файлы PDDL домена и проблемы анализируются с помощью PEG.js, создавая объект JSON для данного домена. Затем JSON обрабатывается для определения применимых действий в данном состоянии проблемы. Затем действия применяются к текущему состоянию, создавая новый набор состояний. Этот процесс повторяется, при этом соответствующие действия определяются для новых состояний, применяются и создаются новые состояния. Полученное дерево возможных состояний и действий затем можно просмотреть с помощью алгоритма A*, чтобы найти оптимальный набор шагов для достижения целевого состояния, как указано в задаче.
Домен | Задача Переместить блоки a, b из таблицы x в таблицу y. В таблице допускается несколько блоков. Единственное доступное действие — «переместить».
Домен | Задача Перемещает блоки a, b из таблицы x в стек ab таблицы y. В таблице допускается несколько блоков. Доступные действия включают «переместить», «сложить» и «разложить».
Домен | Проблема. Распаковка блоков ba из таблицы x в стек ab таблицы y. В таблице допускается несколько блоков. Доступные действия включают «переместить», «сложить» и «разложить».
Домен | Проблема Самая интересная! Разложите блоки ba из таблицы 1 в стопку ab в таблице 3. В таблице разрешен только один блок или стопка. ИИ необходимо спланировать временное перемещение блока в таблицу 2, одновременно устанавливая правильный порядок укладки в таблицу 3. Доступные действия включают «перемещение», «сложение» и «разложение».
Блоки сложены ab на столе 1. Цель состоит в том, чтобы сложить их ab на столе 2. На таблицу разрешен только один блок или стопка. Вот решения.
*** Solution found in 6 steps!
1. unstack a b t1 t2
2. move b t1 t3
3. move a t2 t1
4. move b t3 t2
5. move a t1 t3
6. stack a t3 b t2
*** Solution found in 5 steps!
1. unstack a b t1 t2
2. move b t1 t3
3. move a t2 t1
4. move b t3 t2
5. stack a t1 b t2
*** Solution found in 5 steps!
1. unstack a b t1 t2
2. move a t2 t3
3. move b t1 t2
4. move a t3 t1
5. stack a t1 b t2
*** Solution found in 4 steps!
1. unstack a b t1 t2
2. move a t2 t3
3. move b t1 t2
4. stack a t3 b t2
*** Solution found in 4 steps!
1. unstack a b t1 t3
2. move b t1 t2
3. move a t3 t1
4. stack a t1 b t2
*** Solution found in 3 steps!
1. unstack a b t1 t3
2. move b t1 t2
3. stack a t3 b t2
Вот решение ИИ для аномалии Суссмана в мире блоков.
*** Solution found in 3 steps!
1. unstack2 c a x
2. stack2 b c x
3. stack3 a b c x
Теперь немного поразвлечься. Вот домен Старкрафта. Задача была построить казарму. Изначально я хотел построить линейный крейсер, но это заняло слишком много времени (без эвристического поиска!).
*** Solution found in 8 steps!
1. move scv sector-a mineral-field-b
2. collect-minerals scv mineral-field-b
3. move scv mineral-field-b sector-b
4. build-supply-depot scv sector-b
5. move scv sector-b mineral-field-a
6. collect-minerals scv mineral-field-a
7. move scv mineral-field-a sector-a
8. build-barracks scv sector-a sector-b
Еще один шаг вперед: вот решение ИИ для обучения морского пехотинца.
- Solution found in 11 steps!
1. move scv sector-a mineral-field-a
2. collect-minerals scv mineral-field-a
3. move scv mineral-field-a sector-b
4. build-supply-depot scv sector-b
5. move scv sector-b mineral-field-b
6. collect-minerals scv mineral-field-b
7. move scv mineral-field-b sector-a
8. build-barracks scv sector-a sector-b
9. move scv sector-a mineral-field-c
10. collect-minerals scv mineral-field-c
11. train-marine scv sector-a
Массачусетский технологический институт
Кори Беккер http://www.primaryobjects.com/kory-becker