Practica 4: Razonamiento Práctico Mediante Planificación
Problemas:
1.- Compras: Estas en tu casa y necesitas
comprar un taladro, una penca de plátanos y un litro de leche. Sabes que en la
ferretería venden taladros y en el super mercado venden leche y plátanos. El
objetivo es estar en tu casa y tener el taladro, los plátanos y la leche.
Predicados:
At(x) -
Señala que estamos en x
Sells(x,y)
- Señala que en x se vende y
Have(z)
- Hemos comprado z
Operaciones:
Ir a x:
Go(x)
Precondiciones:
At(w) //Es necesario estar en un lugar diferente
Se va al
lugar x
Comprar
y: Buy(y)
Precondiciones:
At(x)^Sells(x,y)
Se
compra el producto
Estado inicial
At(Home)^¬Have(Milk)^¬Have(Bananas)^¬Have(Drill)
Estado Final
At(Home)^Have(Milk)^Have(Bananas)^Have(Drill)
2.- Cubos: Este es un problema clásico de la
Inteligencia Artificial y tiene como objetivo demostrar el funcionamiento de un
sistema de planificación. Para este problema, suponemos que existe una mesa en
donde pueden colocarse cubos (todos los cubos tienen el mismo tamaño). Los
cubos pueden colocarse sobre la mesa o sobre otro cubo, a condición que éste no
tenga nada encima. El estado inicial consiste en cualquier configuración de
cubos sobre la mesa y el estado final consiste en otra configuración que
contiene exactamente los mismos cubos que al principio, pero acomodados de diferente
forma. Para reacomodar los cubos se cuenta con un brazo robot que puede tomar
un (y sólo un) cubo (que no tenga nada encima) y colocarlo sobre la mesa o
sobre otro cubo (que no tenga nada encima). La siguiente figura muestra un
ejemplo del mundo de los cubos.
Predicados:
cubo(x) - x es un cubo
brazoRobot(r) - r es un brazo robótico que
puede sostener y mover cubos
sobreMesa(x) - cubo x está sobre la mesa
sobreCubo(x,y) - cubo x está sobre cubo y
nadaEncima(x) - cubo x no tiene nada sobre él
mismo
sostener(x) - el brazo robot sostiene al cubo x
robotLibre(x) - el brazo robot no sostiene
ningún cubo
Operaciones:
Action: TomarCubodeMesa(x)
Precondition: nadaEncima(x) ^ cubo(x) ^
brazoRobot(r) ^ sobreMesa(x) ^ robotLibre(r)
Effects: sostener(x) ^ ¬ sobreMesa(x) ^ ¬
robotLibre(r)
Action: TomarCubodeOtroCubo(x,y)
Precondition: nadaEncima(x) ^ cubo(x) ^ cubo(y)
^ brazoRobot(r) ^ sobreCubo(x,y) ^ robotLibre(r)
Effects: sostener(x) ^ nadaEncima(y) ^
¬sobreCubo(x,y) ^ ¬ robotLibre(r)
Action: DejarSobreMesa(x)
Precondition: brazoRobot(r) ^ sostener(x) ^
cubo(x)
Effects: ¬sostener(x) ^ sobreMesa(x) ^
robotLibre(r)
Action: DejarSobreCubo(x,y)
Precondition: brazoRobot(r) ^ sostener(x) ^
cubo(x)
Effects: ¬sostener(x) ^ sobreCubo(x,y) ^
robotLibre(r)
Estado Inicial:
cubo(A) cubo(B) cubo(C) sobreMesa(A)
sobreMesa(B) sobreCubo(C,A) brazoRobot(r) robotLibre(r)
Estado Final:
cubo(A) cubo(B) cubo(C) sobreMesa(C)
sobreCubo(B,C) sobreCubo(A,B) brazoRobot(r) robotLibre(r)
3.- Shakey: Shakey es un robot cuya función
consiste en dejar arreglado y acomodado un conjunto de
salones que se encuentran en el mismo piso,
conectados por un corredor. El trabajo de Shakey consiste en asegurarse que
todos los salones tengan la luz apagada. Como Shakey es pequeño, necesita
subirse a una caja para poder alcanzar el apagador. Para ayudar a Shakey a
realizar su tarea, se han dejado varias cajas por los salones. De esta forma,
Shakey solo puede apagar la luz de un salón si en ese mismo salón hay una caja.
Shakey, además, puede llevar cajas de un salón a otro, pero solamente una a la
vez. El estado inicial de este problema es una configuración cualquiera de
salones, cajas y Shakey. El estado objetivo es que todas las cajas y Shakey
estén en el salón 1, todos los salones tengan las luces apagadas. Para
simplificar la tarea suponemos que el pasillo es un “pasillo cuántico” ya que
no hay necesidad de caminar por él, simplemente salimos al pasillo en el salón
X y podemos entrar del pasillo a cualquier otro salón. También suponemos que no
hay necesidad de trasladar cajas dentro de los salones, Shakey puede apagar la
luz si en el mismo salón donde está él hay una caja (si no hay ninguna, tiene
que traerla). La siguiente figura muestra una posible configuración inicial
para el mundo de Shakey:
Predicados:
At(x) -
Se encuentra en la sala x
Pushable(x)
- x es una caja y se puede empujar
On(x,y)
- x se encuentra sobre y
LightOn(x)
- La luz está encendida en la habitación x
Climbable(x)
- x es una caja y se puede trepar
Operaciones:
Ir de la
localidad actual a la localidad y: Go(y)
Precondición:
At(Shakey,x) las localidades x e y deben estar en el mismo cuarto: In(x, r)
In( y, r)
Empujar
un objeto b de una localidad x a la localidad y: Push(b,x,y)
Precondición:
Pushable(x)
Subirse
a una caja: Climb(b)
Precondición: On(Shakey,Floor), Climbable(b).
Shakey
debe estar en la misma localidad que b.
Bajarse
de una caja: Down(b)
Deshace
los efectos de Climb(b).
Encender
la luz: TurnOn(ls)
Esto
solo se puede hacer si Shakey está parado encima de una caja en la
misma
localidad que el apagador.
Apagar
la luz: TurnOff(ls).



No hay comentarios:
Publicar un comentario