Ce projet est une démonstration de l'utilisation des bandes de la bibliothèque de planification automatisée de l'intelligence artificielle, dans node.js.
Essayez-le en ligne sur https://stripsfiddle.meteorapp.com
npm install strips
Si vous débutez avec la planification automatisée STRIPS, voici un excellent tutoriel pour vous aider à démarrer.
Les exemples suivants montrent comment résoudre des problèmes de planification en identifiant l'ensemble optimal d'actions pour atteindre un objectif. Par exemple, l'empilement de blocs, les Tours de Hanoï et même Starcraft peuvent être résolus par l'IA (voir ci-dessous, c'est plutôt sympa !).
Plusieurs exemples du domaine Blocks World sont inclus dans ce projet, dans lesquels l'IA est capable de planifier avec succès la série d'étapes pour déplacer et empiler des blocs sur une série de tables.
La planification de l'IA fonctionne en traitant un domaine simple à l'aide d'une feuille de grammaire PEG.js et exécute le résultat à l'aide d'un simple problème STRIPS.
Le domaine et les fichiers PDDL problématiques sont analysés via PEG.js, produisant un objet JSON pour un domaine donné. Le JSON est ensuite traité pour identifier les actions applicables dans un état donné du problème. Les actions sont ensuite appliquées à l’état actuel, produisant un nouvel ensemble d’états. Ce processus est répété, où les actions applicables sont identifiées pour les nouveaux états, appliquées et d'autres nouveaux états produits. L'arbre résultant d'états et d'actions possibles peut ensuite être parcouru à l'aide de l'algorithme A* pour localiser un ensemble optimal d'étapes pour atteindre l'état objectif, tel que spécifié dans le problème.
Domaine | Problème Déplacer les blocs a, b de la table x vers la table y. Plusieurs blocs sont autorisés sur une table. La seule action disponible est « déplacer ».
Domaine | Problème Déplace les blocs a, b de la table x vers une pile ab sur la table y. Plusieurs blocs sont autorisés sur une table. Les actions disponibles incluent « déplacer », « empiler » et « dépiler ».
Domaine | Problème Dépile les blocs ba de la table x vers une pile ab sur la table y. Plusieurs blocs sont autorisés sur une table. Les actions disponibles incluent « déplacer », « empiler » et « dépiler ».
Domaine | Problème Le plus amusant ! Dépilez les blocs ba de la table 1 vers une pile ab sur la table 3. Un seul bloc ou pile est autorisé sur une table. L'IA doit planifier le déplacement temporaire d'un bloc vers la table 2, tout en définissant l'ordre correct d'empilement sur la table 3. Les actions disponibles incluent « déplacer », « empiler » et « dépiler ».
Les blocs sont empilés ab sur la table 1. Le but est de les empiler ab sur la table 2. Un seul bloc ou pile est autorisé par table. Voici les solutions.
*** 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
Voici la solution de l'IA pour l'anomalie Blocks World Sussman.
*** Solution found in 3 steps!
1. unstack2 c a x
2. stack2 b c x
3. stack3 a b c x
Maintenant, pour nous amuser. Voici le domaine Starcraft. La tâche était de construire une caserne. Au départ, je voulais construire un Battlecruiser, mais cela prenait beaucoup trop de temps (sans recherche heuristique !).
*** 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
Un peu plus loin, voici la solution de l'IA pour entraîner un marine.
- 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
MIT
Kory Becker http://www.primaryobjects.com/kory-becker