Inteligencia Artificial “Planificación” Ingeniería Informática, 4º Curso académico: 2011/2012 Profesores: Ramón Hermoso y Matteo Vasirani –1– Inteligencia Artificial 4º Ing. Sup. Inf Tema 2: Agentes basados en Búsqueda Resumen: 2. Agentes basados en búsqueda 2.1. Búsqueda en espacios de estados 2.2 Búsqueda no-informada 2.3. Búsqueda heurística 2.4. Búsqueda multiagente 2.5. Búsqueda con espacios estructurados – Planificación – Satisfacción de Restricciones –2– Inteligencia Artificial 4º Ing. Sup. Inf Problemas de representaciones “monolíticas” de estados • representación de los conocimientos a priori del agente – – – – – estado inicial: símbolo (s0 ) estados sucesores: función expandir ( s7 {s8, s10, s12, s27, s112} ) estados meta: función meta? ( s112 true ) coste de operador: función ( c(s7 , s112) 5 ) heurísticas: función h* ( s7 235 ) • se abstrae completamente de las características de los estados – ¿bloque A encima de bloque B?, ¿el agente se encuentra en Radovac?, … • Problema: – complejidad de la representación del conocimiento (p.e. expandir) – mantenibilidad del conocimiento • Solución: – tomar en cuenta la “estructura” de los estados – definir un estado no por su nombre sino por el conjunto de sus propiedades –3– Inteligencia Artificial 4º Ing. Sup. Inf Planificación: Representación de estados tipo STRIPS Representación básica tipo STRIPS: • Un estado se describe por el conjunto de propiedades relevantes que se dan en él • Propiedades relevantes para caracterizar estados en un mundo con 3 bloques { on(A,B), on(A,C), on(A,T), on(B,A), on(B,C), on(B,T), on (C,A), on(C,B), on(C,T), clear(A), clear(B), clear(C) } • Ejemplo: propiedades del estado S de la derecha: { on(B,A), on(A,C), on(C,T), clear(B) } B A C • No todas las combinaciones de propiedades son “consistentes”: { on(B,A), on(A,B) } no representa un estado válido –4– Inteligencia Artificial 4º Ing. Sup. Inf Operadores STRIPS Operador STRIPS: <nombre>(<PC>,<A>,>E>) – Precondición PC: conjunto de propiedades de un estado que han de darse antes de poder aplicar el operador – Lista de adiciones A: conjunto de las nuevas propiedades del estado resultado de aplicar el operador – Lista de eliminaciones E: conjunto de las propiedades del estado que dejan de darse después de aplicar el operador (subconjunto de PC) – Ejemplos: move(A,B,C) PC: On(A,B), Clear(A), Clear(C) E: On(A,B), Clear(C) A: On(A,C), Clear(B) move(B,A,T) PC: On(B,A), Clear(B) E: On(B,A) A: On(B,T), Clear(A) – Operadores del mundo con 3 bloques: { move(A,B,C), move(A,B,T), move(A,C,B), move(A,C,T), move (B,A,C), move(B,A,T), move(B,C,A), move(B,C,T), move (C,B,A), move(C,B,T), move(C,A,B), move(C,A,T), move(A,T,B), move(A,T,C), move(B,T,A), move(B,T,C), move(C,T,A), move(C,T,B) } –5– Inteligencia Artificial 4º Ing. Sup. Inf Ejecución de operadores STRIPS • Operadores aplicables: – un operador Op es aplicable en un estado S si se cumple su PCOp en S, es decir si PCOp ⊆ S • Ejecución de operadores: – al ejecutar un operador aplicable Op en un estado S, se eliminan las propiedades de la lista E del estado S y se añaden las propiedades de la lista A Sʼ ← S - EOp ∪ AOp –6– Inteligencia Artificial 4º Ing. Sup. Inf Ejemplo: ejecución de un operador STRIPS B A C move(B,A,T) PC: On(B,A) Clear(B) Lista E de eliminaciones On(B,A) On(A,C) On(C,T) Clear(B) Lista A de adiciones Sin cambios A C B On(B,T) Clear(A) On(A,C) On(C,T) Clear(B) Asunción del mundo cerrado –7– Inteligencia Artificial 4º Ing. Sup. Inf Algoritmos: Planificación progresiva • Espacio de búsqueda: – Partiendo del estado inicial, se van ejecutando los operadores aplicables – Los operadores sirven para implementar la función expandir • Expandir(S): Conjunto cuyos elementos son los conjuntos de propiedades obtenidas al ejecutar los operadores aplicables en S • Algoritmos: – Búsqueda no informada: amplitud, profundidad, ... – Búsqueda heurística: A*, … –8– Inteligencia Artificial 4º Ing. Sup. Inf Planificación progresiva • Ejemplo: On(B,A) Clear(T) On(A,C) On(C,T) Clear(B) ... Move(B,A,T) ... On(B,T) Clear(A) Clear(T) On(A,C) On(C,T) Clear(B) • Problemas: Factor de ramificación elevado ... On(B,T) On(A,T) On(C,T) Clear(C) Clear(B) Clear(A) Clear(T) ... ... ... On(A,B) Clear(C) On(B,T) Clear(A) Clear(T) On(C,T) ... ... – El estado inicial se describe por todas las propiedades que podrían ser relevantes (p.e. las posiciones de 10 bloques) – La descripción del estado meta suele ser parcial, es decir sólo contiene lo que realmente importa ( p.e. las posiciones de 3 bloques) –9– Inteligencia Artificial 4º Ing. Sup. Inf Planificación regresiva • Idea: aplicar operadores “al revés” – regresar conjuntos de propiedades meta por operadores, dando lugar a otros conjuntos de propiedades meta – reducir la “diferencia” entre los conjuntos de propiedades meta y el estado inicial, hasta que todas las propiedades meta se den en el estado inicial • Regresar un estado Sʼ por un operador Op: Calcular el conjunto de propiedades más débil S para que la aplicación de Op lleve a Sʼ (precondición más débil): − Eliminar la lista A de Sʼ y añadir los elementos de PC: S ← Sʼ - AOp ∪ PCOp – Aplicabilidad: ningún elemento de Sʼ es eliminado por Op (e.d.: Sʼ ∩ EOp = ∅) On(C,T) – Ejemplo: On(C,T) PCOp S On(B,C) Clear(B) Clear(A) On(A,T) Move(A,T,B) On(B,C) On(A,B) AOp Sʼ – Cuidado: No todos los estados que resultan de la regresión son “consistentes” – 10 – Inteligencia Artificial 4º Ing. Sup. Inf Planificación regresiva ... ... ... Ej.: mundo con 3 bloques: A, B y C Clear(B) Clear(A) On(A,C) On(C,T) Clear(B) Clear(A) On(A,T) On(C,T) On(A,B) Clear(C) On(C,A) Move(A,C,B) Move(A,T,B) On(A,B) On(C,T) propiedades meta Move(C,A,T) Move(C,B,T) On(A,B) Clear(C) On(C,B) – 11 – Inteligencia Artificial 4º Ing. Sup. Inf Planificación con la heurística STRIPS ¿Cómo combatir aún más la complejidad de la planificación? • Heurística STRIPS: – Generar “subplanes” para alcanzar cada una de las propiedades meta aparte – El plan final es una concatenación de estos subplanes • Planificación tipo STRIPS: – Elegir una propiedad Pi que no se cumple en S0 – Generar un subplan para al propiedad meta Pi a partir del estado inicial S0 • genera una secuencia de operadores de forma regresiva (si es posible) • ejecutar esta secuencia a S0, dando lugar a una nueva situación S1 – Elegir propiedad Pj que no se cumple en S1 – Generar un subplan para la propiedad meta Pj a partir del estado actual S1 • genera una secuencia de operadores de forma regresiva (si es posible) • ejecutar esta secuencia a S1, dando lugar a una nueva situación S2 – ... – Si una propiedad meta Pk (alcanzada por un subplan anterior) ha sido “destruida” al alcanzar posteriormente una propiedad meta Pl, entonces “rehacer” Pk – 12 – Inteligencia Artificial 4º Ing. Sup. Inf Planificación con la heurística STRIPS Estado inicial B A C B A C move(B,A,T) Estado meta A C B move(A,C,T) C B A on (A, T) on (B, A) on (C, B) Meta on(A,T) A C B move(B,T,A) C Meta B on(C,B) A move(C,T,B) – 13 – B Meta C A on(B,A) Inteligencia Artificial 4º Ing. Sup. Inf Planificación con la heurística STRIPS: Problemas B A C move(B,A,T) A C B Meta on(A,T) move(A,C,T) A C B Problema: • plan subóptimo • orden equívoco de submetas Rehacer Meta on(C,B) move(C,T,B) C Meta A B on(C,B) Meta on(B,A) C B A B A C move(C,T,B) move(C,B,T) A C B move(B,T,A) – 14 – Inteligencia Artificial 4º Ing. Sup. Inf Planificación con la heurística STRIPS Algoritmo recursivo no determinista: • Entradas: • Salidas: – El estado actual S – Estado meta Metas – Plan generado para llegar a S • Consulta: STRIPS(S0,Metas,[]) – Un estado SMeta en el que se cumplen todos los objetivos de Metas – Plan para transformar S en SMeta – Si no hay tal plan, devuelve false STRIPS(S,Metas,Plan) devuelve (SMeta, PlanMeta) ó false Mientras que Metas ⊆ S Hacer % Mientras haya Metas no satisfechas en S (1) Elegir M∈Meta tal que M∉S % M no está satisfacha en S (2) Elegir operador Op tal que M∈AOp % Op puede alcanzar M (3) (S,Plan) ← STRIPS(S,PCOp,Plan) % Alcanzar precond. de Op (4) Si STRIPS devuelve false Entonces falla (5) S ← S - EOp ∪ AOp % aplicar el Op al nuevo estado S (resultado de (3)) (6) Plan ← Plan + Op % añadir el Op al final de nuevo Plan (resultado de (3)) Fin Devolver(S,Plan) – 15 – Inteligencia Artificial 4º Ing. Sup. Inf Planificación con la heurística STRIPS Simulación “a mano” del la planificación con la heurística STRIPS • Generación de un Árbol “y/o” – Nodos “y”: propiedades – Nodos “o”: operadores • Ejemplo: Problema (simplificado) de las Torres de Hanoi A B A C D1 D2 D3 B ? Estado inicial ? C ? D3 Estado meta – 16 – Inteligencia Artificial 4º Ing. Sup. Inf Ejemplo: Dominio de las Torres de Hanoi • 3 discos (D1, D2, D3) y 3 agujas (A, B, C) • Conjunto de propiedades: – on(D1,D2), on(D1,D3), on(D1,A), on(D1,B), on(D1,C), on(D2,D3), on(D2,A), … – clear(D1), clear(D2), clear(D3): “no hay nada encima del disco” – clear(A), clear(B), clear(C): “no hay ningún disco en la aguja” – NO incluye propiedades no compatibles con el dominio: • on(D2,D1), on(D3,D1), on(D2,D1), on(D3,2), on(A,D1), on(B,D3), … • Conjunto de operadores: – P.e. : mover(D1,D2,D3) PC: { clear(D1), clear(D3), on(D1,D2) } E: { on(D1,D2), clear(D3) } A: { on(D1,D3), clear(D2) } – 17 – Inteligencia Artificial 4º Ing. Sup. Inf Ejemplo: Dominio de las Torres de Hanoi (más formal) • Individuos: I = {D1, D2, D3, A, B, C} • Predicados auxiliares: – menor(D1,D2), menor(D2,D3), menor(D3,A), menor(D3,B), menor(D3,C) – menor* es el cierre transitivo de menor • Conjunto de propiedades: – P = { on(x,y) : x,y∈I ∧ menor*(x,y) } ∪ { clear(x) : x∈I } • Conjunto de operadores: – O = { mover(x,y,z) : x∈{D1, D2, D3} ∧ y,z ∈ I ∧ menor*(x,y) ∧ menor*(x,z) ∧ y≠z } – Plantilla para los efectos de los operadores: mover(“x”,“y”,“z”) PC: { clear(“x”), clear(“z”), on(“x”,“y”) } E: { on(“x”,“y”), clear(“z”) } A: { on(“x”,“z”), clear(“y”) } – 18 – Inteligencia Artificial 4º Ing. Sup. Inf Ejemplo: Torres de Hanoi S0 = { on(D1,D2) , on(D2,D3) , on(D3,A) , clear(D1) , clear(B) , clear(C) } Meta On(D3,C) Mover(D3,A,C) On(D3,A) Clear(D3) A Mover(D3,B,C) B C D1 D2 D3 Clear(C) S0 … Mover(D2,D3,B) Clear(D2) On(D2,D3) Mover(D1,D3,C) Clear(B) S1 = { on(D1,C) , on(D2,D3) , on(D3,A) , clear(D1) , clear(D2) , clear(B) } S1 Mover(D1,D2,C) Clear(D1) S0 … On(D1,D2) S0 Mover(D1,D2,D3) Clear(C) S0 – 19 – Inteligencia Artificial 4º Ing. Sup. Inf Ejemplo: Torres de Hanoi S1 = { on(D1,C) , on(D2,D3) , on(D3,A) , clear(D1) , clear(D2) , clear(B) } On(D3,C) Mover(D3,A,C) On(D3,A) Clear(D3) S0 … On(D2,D3) S1 S1 Mover(D1,D2,C) Clear(D1) S0 Mover(D3,B,C) D2 D3 B C D1 Clear(C) S2 Mover(D2,D3,B) Clear(D2) A … Mover(D1,D3,C) Clear(B) S2 = { on(D1,C) , on(D2,B) , on(D3,A) , clear(D1) , clear(D2) , clear(D3) } S1 Mover(D1,D2,D3) On(D1,D2) Clear(C) S0 S0 – 20 – Inteligencia Artificial 4º Ing. Sup. Inf Ejemplo: Torres de Hanoi S2 = { on(D1,C) , on(D2,B) , on(D3,A) , clear(D1) , clear(D2) , clear(D3) } On(D3,C) Mover(D3,A,C) On(D3,A) Clear(D3) S0 S2 … Clear(D2) S1 Mover(D1,D2,C) Clear(D1) S0 D3 C D1 D2 S3 Mover(D1,D3,C) On(D2,D3) Clear(B) S1 S1 … Mover(D3,B,C) B Clear(C) S2 Mover(D2,D3,B) A Clear(D1) S2 Clear(C) S0 S0 On(D1,C) Mover(D2,C,B) Clear(D2) S2 S2 S3 = { on(D1,D2) , on(D2,B) , on(D3,A) , clear(D1) , clear(D3) , clear(C) } Mover(D1,D2,D3) On(D1,D2) … Mover(D1,C,D2) – 21 – Inteligencia Artificial 4º Ing. Sup. Inf Ejemplo: Torres de Hanoi S3 = { on(D1,D2) , on(D2,B) , on(D3,A) , clear(D1) , clear(D3) , clear(C) } On(D3,C) Mover(D3,A,C) On(D3,A) Clear(D3) S0 S2 S3 S2 … Mover(D2,D3,B) Clear(D2) S1 Mover(D1,D2,C) Clear(D1) S0 A B C S4 Mover(D3,B,C) S3 S3 Mover(D1,D3,C) Clear(D1) S1 S1 S2 S0 S0 On(D1,C) S2 Mover(D2,C,B) Clear(D2) S2 S4 = { on(D1,D2) , on(D2,B) , on(D3,C) , clear(D1) , clear(D3) , clear(A) } Mover(D1,D2,D3) Clear(C) … Mover(D1,C,D2) Clear(B) On(D1,D2) D1 D2 Clear(C) On(D2,D3) … D3 – 22 – Inteligencia Artificial 4º Ing. Sup. Inf Ejemplo: Torres de Hanoi S4 = { on(D1,D2) , on(D2,B) , on(D3,C) , clear(D1) , clear(D3) , clear(A) } On(D3,C) Mover(D3,A,C) On(D3,A) Clear(D3) S0 S2 S3 S2 … Mover(D2,D3,B) Clear(D2) S1 Mover(D1,D2,C) Clear(D1) S0 A B C S4 D3 Clear(C) S3 S3 Mover(D1,D3,C) … Mover(D1,C,D2) On(D2,D3) Clear(B) Clear(D1) S1 S1 S2 … D1 D2 Mover(D3,B,C) On(D1,C) S2 Mover(D2,C,B) Clear(D2) S2 Mover(D1,D2,D3) On(D1,D2) Clear(C) S0 S0 – 23 – Inteligencia Artificial 4º Ing. Sup. Inf Planificación con la heurística STRIPS: Problemas Implementación real: • En las implementaciones reales (deterministas) no hay oráculos • Problema: – una mala elección de metas y/o operadores puede llevar a planes subóptimos • Solución: – aplicar algoritmos de búsqueda para determinar el orden óptimo en la elección de operadores y metas – a costa de un aumento en la complejidad – 24 – Inteligencia Artificial 4º Ing. Sup. Inf Planificación con la heurística STRIPS: Problemas Anomalía de Sussman: Estado inicial: Estado meta: On(A,B) On(B,C) C A B Plan óptimo: C A B C A B move(C,A,T) B C A move(B,T,C) – 25 – A B C A B C move(A,T,B) Inteligencia Artificial 4º Ing. Sup. Inf Anomalía de Sussman move(C,A,T) C A B move(A,T,B) C A B A C B Meta on(A,B) move(B,T,C) B Meta C on(B,C) A Problema: • Es imposible encontrar el plan global óptimo a partir de la concatenación de los subplanes – 26 – Inteligencia Artificial 4º Ing. Sup. Inf Anomalía de Sussman La heurística STRIPS es una heurística fuerte: • La heurística STRIPS implica que las submetas on(B,C) y on(A,B) son independientes, pero – para conseguir on(A,B) después de alcanzar la primera isla, se “destruye” on(B,C) – para conseguir on(B,C) después de alcanzar la primera isla, se “destruye” on(A,B) • No se puede generar un plan global óptimos a partir de subplanes óptimos, debido a la linearización que impone la heurística STRIPS: – Deberían “intercalarse” los operadores de los subplanes óptimos move(C,A,T) move(B,T,C) move(A,T,B) Meta on(A,B) Meta on(B,C) – 27 – Meta on(A,B) Inteligencia Artificial 4º Ing. Sup. Inf Planificación Moderna: Búsqueda en el Espacio de Planes Plan S1 S0 Conjuntos de propiedades Espacio de situaciones Operadores S2 Espacio de planes Operadores Plan Transformación de planes – 28 – Inteligencia Artificial 4º Ing. Sup. Inf Temas actuales en Planificación • Planificación avanzada: – Planificación no-lineal – Planificación jerárquica – Planificación continua – Planificación multiagente – GRAPHPLAN, SATPLAN • Aplicaciones reales: – Planificación de misiones (Hubble, Satélites, Robots, etc.) – Planificación de la producción (job-shop scheduling) – Transporte y logística (asignar aviones a puertas en aeropuertos, asignar rutas a camiones etc.) – 29 – Inteligencia Artificial 4º Ing. Sup. Inf Ejercicio 6.1 Exprese el siguiente escenario en la representación tipo STRIPS: En una habitación hay un mono, una caja y un plátano, tal como indica la figura (situación inicial). El objetivo del mono es tener el plátano. El mono puede: – ir de una posición a otra – empujar la caja de una posición a otra si está en la misma posición que ella y no está sobre ella – subirse a la caja si está en la misma posición que ella – coger el plátano si está en encima de la caja 1 2 3 – 30 – Inteligencia Artificial 4º Ing. Sup. Inf Ejercicio 6.2 Planificación tipo STRIPS: Aplique la planificación tipo STRIPS al problema del mono del ejercicio 6.1. – 31 – Inteligencia Artificial 4º Ing. Sup. Inf Ejercicio 6.3 Planificación tipo STRIPS: Genere el árbol y/o para la planificación con heurística STRIPS aplicado al problema del mundo de los bloques de la transparencia 13 – 32 – Inteligencia Artificial 4º Ing. Sup. Inf