Este proyecto es una demostración del uso de las tiras de la biblioteca de planificación automatizada de inteligencia artificial, en node.js.
Pruébelo en línea en https://stripsfiddle.meteorapp.com
npm install strips
Si es nuevo en la planificación automatizada de STRIPS, aquí tiene un excelente tutorial para comenzar.
Los siguientes ejemplos muestran cómo resolver problemas de planificación identificando el conjunto óptimo de acciones para lograr una meta. Por ejemplo, la IA puede resolver el apilamiento de bloques, las Torres de Hanoi e incluso Starcraft (ver más abajo, ¡es bastante bueno!).
En este proyecto se incluyen varios ejemplos del dominio Blocks World, en los que la IA puede planificar con éxito la serie de pasos para mover y apilar bloques en una serie de mesas.
La planificación de IA funciona procesando un dominio simple usando una hoja de gramática PEG.js y ejecuta el resultado usando un problema STRIPS simple.
Los archivos PDDL de dominio y problema se analizan mediante PEG.js, lo que genera un objeto JSON para un dominio determinado. Luego, el JSON se procesa para identificar las acciones aplicables dentro de un estado determinado del problema. Luego, las acciones se aplican al estado actual, produciendo un nuevo conjunto de estados. Este proceso se repite, donde se identifican las acciones aplicables para los nuevos estados, se aplican y se producen nuevos estados adicionales. El árbol resultante de posibles estados y acciones se puede recorrer utilizando el algoritmo A* para localizar un conjunto óptimo de pasos para alcanzar el estado objetivo, como se especifica en el problema.
Dominio | Problema Mueva los bloques a, b de la tabla x a la tabla y. Se permiten varios bloques en una mesa. La única acción disponible es "mover".
Dominio | Problema Mueve los bloques a, b de la tabla x a una pila ab en la tabla y. Se permiten varios bloques en una mesa. Las acciones disponibles incluyen "mover", "apilar" y "desapilar".
Dominio | Problema Desapila bloques ba de la tabla x a una pila ab en la tabla y. Se permiten varios bloques en una mesa. Las acciones disponibles incluyen "mover", "apilar" y "desapilar".
Dominio | Problema ¡El divertido! Desapilar los bloques ba de la mesa 1 a una pila ab en la mesa 3. Solo se permite un bloque o pila en una mesa. La IA necesita planificar el movimiento de un bloque temporalmente a la mesa 2, mientras establece el orden correcto para apilarlo en la mesa 3. Las acciones disponibles incluyen "mover", "apilar" y "desapilar".
Los bloques se apilan ab en la mesa 1. El objetivo es apilarlos ab en la mesa 2. Solo se permite un bloque o pila por mesa. Aquí están las soluciones.
*** 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
Aquí está la solución de la IA para la anomalía de Blocks World Sussman.
*** Solution found in 3 steps!
1. unstack2 c a x
2. stack2 b c x
3. stack3 a b c x
Ahora, a divertirnos un poco. Aquí está el dominio de Starcraft. La tarea consistía en construir un cuartel. Originalmente quería construir un Battlecruiser, pero eso me estaba tomando demasiado tiempo (¡sin una búsqueda heurística!).
*** 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 paso más allá, aquí está la solución de la IA para entrenar a un marino.
- 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