lunes, 7 de diciembre de 2015

Proyecto Final Minusmo


Pelea 1:

https://youtu.be/eL3azKsXAhY



REAS de Miniusmo:

Tipo de Agente
Medida de Desempeño (R)
Ambiente (E)
Actuadores (A)
Sensores (S)
Luchador Minisumo
Velocidad, Torque, Búsqueda del enemigo, Detección de fin de ring Técnica de empuje, Técnica de escape

Ring,
Minisumo Oponente,
Factores externos como iluminación, reflejos y objetos fuera del ring
Motores
Sensor de Luz,
Sonar

lunes, 9 de noviembre de 2015

Identificación de propiedades de los entornos de trabajo de los Agentes Inteligentes


lunes, 12 de octubre de 2015

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).




domingo, 4 de octubre de 2015

Practica 3: Razonamiento Lógico con Powerloom

Octavio Castañeda
Antonio Sepúlveda


04 de octubre de 2015

Agentes Inteligentes

Fernando Velasco

Código:
(CL:IN-PACKAGE "STELLA")
(DEFMODULE " /PL-USER/ARBOLF")
(IN-MODULE "PL-USER/ARBOLF")
(IN-DIALECT :KIF)

(DEFCONCEPT PERSON)
(DEFCONCEPT MALE (?P PERSON) :<=> (NOT (FEMALE ?P)))
(DEFCONCEPT FEMALE (?P PERSON) :<=> (NOT (MALE ?P)))
(DEFCONCEPT PARENT (?P) :<=> (AND (PERSON ?P) (EXISTS ?C (PARENT-OF ?P ?C))))
(DEFRELATION PARENT-OF ((?P PARENT) (?C PERSON)))
(DEFCONCEPT MOTHER (?M PERSON) :<=> (AND (PARENT ?M) (FEMALE ?M)))
(DEFCONCEPT FATHER (?F PERSON) :<=> (AND (PARENT ?F) (MALE ?F)))
(DEFCONCEPT CHILD (?C PERSON) :<=> (AND (PERSON ?C) (EXISTS ?P (PARENT-OF ?P ?C))))
(DEFRELATION CHILD-OF ((?C PERSON) (?P PERSON)))
(DEFRELATION SIBLING-OF ((?X PERSON) (?Y PERSON)) :<=> (EXISTS ?P (AND (PARENT-OF ?P ?X) (PARENT-OF ?P ?Y) (NOT (= ?X ?Y)))) :=> (PARENT-OF ?P ?Y))
(DEFRELATION GRANDPARENT-OF ((?X PERSON) (?Y PERSON)) :<=> (EXISTS ?P (AND (PARENT-OF ?X ?P) (PARENT-OF ?P ?Y))) :=> (PARENT-OF ?P ?Y))
(DEFCONCEPT SPOUSE (?A) :<=> (AND (PERSON ?A) (EXISTS ?B (SPOUSE-OF ?A ?B))))
(DEFRELATION SPOUSE-OF ((?SP PERSON) (?P PERSON)) :<=> (AND (PERSON ?P) (SPOUSE-OF ?P ?SP)))
(DEFCONCEPT HUSBAND (?H PERSON) :<=> (EXISTS ?W (AND (SPOUSE-OF ?H ?W) (MALE ?H))))
(DEFCONCEPT WIFE (?H PERSON) :<=> (EXISTS ?W (AND (SPOUSE-OF ?H ?W) (FEMALE ?H))))
(DEFCONCEPT GRANDFATHER (?X PERSON) :<=> (EXISTS ?Y (AND (GRANDPARENT-OF ?X ?Y) (MALE ?X))))
(DEFCONCEPT GRANDMOTHER (?X PERSON) :<=> (EXISTS ?Y (AND (GRANDPARENT-OF ?X ?Y) (FEMALE ?X))))
(DEFCONCEPT BROTHER ((?X PERSON)) :<=> (EXISTS ?Y (AND (SIBLING-OF ?X ?Y) (MALE ?X))))
(DEFCONCEPT SISTER ((?X PERSON)) :<=> (EXISTS ?Y (AND (SIBLING-OF ?X ?Y) (FEMALE ?X))))
(DEFCONCEPT SON (?S PERSON) :<=> (EXISTS ?P (AND (PARENT-OF ?P ?S) (MALE ?S))))
(DEFCONCEPT DAUGHTER (?S PERSON) :<=> (EXISTS ?P (AND (PARENT-OF ?P ?S) (FEMALE ?S))))
(DEFRELATION UNCLEAUNT-OF ((?U PERSON) (?C PERSON)) :<=> (EXISTS ?P (AND (SIBLING-OF ?U ?P) (PARENT-OF ?P ?C))))
(DEFRELATION GRAN-UNCLE-AUNT-OF ((?g PERSON)(?c PERSON)) :<=> (EXISTS ?X (AND(UNCLE-AUNT-OF ?G ?X (PARENT-OF ?P ?C))))
(DEFRELATION COUSINES-OF ((?C PERSON) (?Y PERSON))
  :<=> (EXISTS ?U (AND (UNCLEAUNT-OF ?U ?C) (PARENT-OF ?U ?Y))))
(DEFCONCEPT COUSIN (?C PERSON)
  :<=> (EXISTS ?P (AND (COUSINES-OF ?C ?P) (MALE ?C))))
(DEFCONCEPT COUSINE (?C PERSON)
  :<=> (EXISTS ?P (AND (COUSINES-OF ?C ?P) (FEMALE ?C))))
(DEFRELATION PARENTINLAW-OF ((?P PERSON) (?Y PERSON))
  :<=> (EXISTS ?S (AND (PARENT-OF ?P ?S) (SPOUSE-OF ?S ?Y))))
(DEFCONCEPT MOTHERINLAW (?P PERSON)
  :<=> (EXISTS ?S (AND (PARENTINLAW-OF ?P ?S) (FEMALE ?P))))
(DEFCONCEPT FATHERINLAW (?P PERSON)
  :<=> (EXISTS ?S (AND (PARENTINLAW-OF ?P ?S) (MALE ?P))))
(DEFRELATION GRANDCHILD-OF ((?GC PERSON) (?P PERSON))
  :<=> (EXISTS ?S (AND (PARENT-OF ?P ?S) (PARENT-OF ?S ?GC))))
(DEFCONCEPT GRANDSON (?S PERSON)
  :<=> (EXISTS ?X (AND (GRANDCHILD-OF ?S ?X) (MALE ?S))))
(DEFCONCEPT GRANDDAUGHTER (?S PERSON)
  :<=> (EXISTS ?X (AND (GRANDCHILD-OF ?S ?X) (FEMALE ?S))))
(DEFRELATION SIBLINGINLAW-OF ((?S PERSON) (?P PERSON))
  :<=> (OR (EXISTS ?H (AND (SPOUSE-OF ?S ?H) (SIBLING-OF ?H ?P))) (EXISTS ?H (AND (SIBLING-OF ?S ?H) (SPOUSE-OF ?H ?P)))))
(DEFCONCEPT BROTHERINLAW (?P PERSON)
  :<=> (EXISTS ?X (AND (SIBLINGINLAW-OF ?P ?X) (MALE ?P))))
(DEFCONCEPT SISTERINLAW (?P PERSON)
  :<=> (EXISTS ?X (AND (SIBLINGINLAW-OF ?P ?X) (FEMALE ?P))))
(DEFRELATION NEPHE-WNIECE-OF ((?N PERSON) (?X PERSON))
  :<=> (EXISTS ?P (AND (SIBLING-OF ?X ?P) (PARENT-OF ?P ?N))))
(DEFCONCEPT NEPHEW (?P PERSON)
  :<=> (EXISTS ?X (AND (NEPHEWNIECE-OF ?P ?X) (MALE ?P))))
(DEFCONCEPT NIECE (?P PERSON)
  :<=> (EXISTS ?X (AND (NEPHEWNIECE-OF ?P ?X) (FEMALE ?P))))
(DEFRELATION GRANDUNCLE-OF ((?G PERSON) (?C PERSON))
  :<=> (EXISTS ?X (AND (UNCLEAUNT-OF ?G ?X) (PARENT-OF ?X ?C))))
(ASSERT (MALE MIGUEL))
(ASSERT (MALE ALEJANDRO))
(ASSERT (MALE FERNANDO))
(ASSERT (MALE ALBERTO))
(ASSERT (FEMALE CARMEN))
(ASSERT (FEMALE MARIA))
(ASSERT (FEMALE LUCIA))
(ASSERT (FEMALE BERTA))
(ASSERT (FEMALE PATRICIA))
(ASSERT (MALE TOMAS))
(ASSERT (BROTHER FERNANDO))
(ASSERT (SIBLING-OF ALEJANDRO CARMEN))
(ASSERT (GRANDPARENT-OF ALBERTO MARCOS))
(ASSERT (PARENT MARIA))
(ASSERT (PARENT CARMEN))
(ASSERT (PAREN ALBERTO))
(ASSERT (SIBLINGINLAW-OF TOMAS LUCIA))
(ASSERT (SISTER BERTA))
(ASSERT (FEMALE LOLA))
(ASSERT (FEMALE MIMADRE))
(ASSERT (FEMALE LOLASMOM))
(ASSERT (FEMALE MI))
(ASSERT (PARENT-OF LOLASMOM LOLA))
(ASSERT (PARENT-OF MIMADRE LOLASMOM))
(ASSERT (PARENT-OF MIMADRE MI))
(ASSERT (PERSON MARCOS))
(ASSERT (PARENT LOLASMOM))
(ASSERT (PARENT MIMADRE))
(ASSERT (MALE ABUELO))
(ASSERT (MALE HERMANO))
(ASSERT (FEMALE HIJA))
(ASSERT (PARENT-OF HERMANO HIJA))
(ASSERT (PARENT-OF ABUELO HERMANO))
(ASSERT (SIBLING-OF HERMANO MI))
(ASSERT (PARENT HERMANO))
(ASSERT (PARENT ABUELO))
(ASSERT (FEMALE TOTA))
(ASSERT (FEMALE |TO¤A|))
(ASSERT (MALE PEPE))
(ASSERT (PARENT-OF |TO¤A| PEPE))
(ASSERT (SIBLING-OF TOTA |TO¤A|))
(ASSERT (UNCLEAUNT-OF TITO TOTA))
(ASSERT (PARENT |TO¤A|))
(ASSERT (PERSON TITO))
(ASSERT (MALE JORGE))
(ASSERT (MALE PADRE))
(ASSERT (PARENT-OF PADRE JORGE))
(ASSERT (PARENT-OF ABUELO PADRE))
(ASSERT (PARENT PADRE))
(ASSERT (MALE JOVEN))
(ASSERT (FEMALE ESPOSA))
(ASSERT (MALE UHIJO))
(ASSERT (FEMALE ABUELA))
(ASSERT (PARENT-OF ABUELA UHIJO))
(ASSERT (SPOUSE-OF UHIJO ESPOSA))
(ASSERT (PARENT-OF ESPOSA JOVEN))
(ASSERT (GRANDPARENT-OF ABUELA MI))
(ASSERT (PARENT ABUELA))
(ASSERT (PARENT ESPOSA))

1. ¿Qué relación tiene conmigo Lola? Si su madre fue la única hija de mi madre.

Ask:
(retrieve all (and (person ?p) (person ?s) (nephew-niece-of ?p ?s)))
(ask (nephew-niece-of Lola I))
(ask (niece Lola))




2.  ¿Qué es de mí el abuelo paterno de la hija de mi único hermano?

Ask:
(ask (parent-of Abuelo I))



3.  Tito es tío de Tota, Tota es hermana de Toña, Toña es madre de Pepe ¿Qué es Tito de Pepe?

Ask:
(ask (grand-uncle-aunt-of Tito Pepe))



4.  ¿Quién es el único nieto del padre del padre de Jorge?

Ask:
(retrieve all ?p (grandson ?p))
(ask (grandchild-of Jorge Abuelo))



5.  ¿Qué parentesco tiene conmigo? Un joven que es el hijo de la esposa del único hijo de mi abuela.

Ask:
(ask (sibling-of I Joven))



Comentarios:

La verdad es que tuvimos muchos problemas al ejecutar los Ask a Powerloom, no sabemos porque nos daban los resultados aun cuando estaban definidas tanto las relaciones como los conceptos. Pero bueno en la parte superior viene el código que utilizamos y en las preguntas viene cual sería el Ask para obtener la respuesta.















lunes, 21 de septiembre de 2015

domingo, 6 de septiembre de 2015



Árboles y Estrategias de Busqueda


PROBLEMA
Descripción del problema o ejercicio (incluyendo salidas esperadas):

Implementar un generador de estados en el lenguaje de programación JAVA, que cree todos los estados posibles a partir de un estado inicial para el problema del “rompecabezas de 3x3” y después explorar el árbol de búsqueda en ese espacio de estados con las 3 estrategias vistas: BFS, DFS y DFS Iterativa.

Descripción de la solución

El software cuenta con tres clases para llevar a cabo la tarea, las cuales son, Puzzle, Solver y Node
Puzzle
Es el main del programa, es donde se establece el estado inicial para el nodo y el estado final al que deseamos llegar, además esta clase es la encargada de invocar al solver para la resolución del problema.

Solver
Esta clase lleva a cabo la función de desarrollar el árbol y explorarlo hasta encontrar la solución buscada.

Node
Es la clase nodo, la cual almacena el estado del nodo así como otros datos relevantes.

Ejecución

Ejemplo 1
Inicial:
120
345
867

Objetivo:
123
456
780

BFS: 54,119 Nodos generados



DFS: 14,042 Nodos generados


DFS Iterativo: 11,155 Nodos generaldos

Ejemplo 2:
Inicial
023
145
786

Objetivo:
123
456
780

BFS: 23 Nodos Generados



DFS: 36 Nodos Generados



DFS Iterativo: 38728 Nodos Generados



Ejemplo 3:
Inicial
123
450
867

Objetivo
123
456
780

BFS: 2,745 Nodos Generados



DFS: 241 Nodos Generados


DFS Iterativo: 11 115 Nodos Generados



Conclusión:

La resolución de este problema nos pareció muy interesante y de mucha ayuda para practicar el desarrollo de árboles y estrategias de búsqueda, lo cual consideramos de mucha importancia para repasar los temas vistos en clase. Llevar a cabo el programa llevo más tiempo del esperado, ya que se deben hacer muchas consideraciones y validaciones, además se unió a la falta de práctica reciente del lenguaje java, esperamos poder mejorar nuestros tiempos para futuras implementaciones.

Por otra parte encontramos estos algoritmos como una inteligencia de busqueda y el principio de lo que estaremos esperando ver en la clase más adelante. Interesante de como podemos usar estos algoritmos para resolución de problemas cotidianos.

domingo, 23 de agosto de 2015



Analizando el test de Turing - "Computer Machinery and Intelligence"



En el artículo escrito por Turing en el cual presenta  por primera vez la posibilidad de existencia de máquinas con inteligencia artificial y en el cual también propuso su famoso experimento “test de turing” nos habla de varias objeciones contra su propuesta de máquinas pensantes, las cuales Turing analiza y busca refutar haciendo uso de diversos argumentos para validar su tesis.

Al pensar en la posible existencia de una máquina con especificaciones y capacidades iguales a las necesarias para emular los procesos físico-químicos mentales de un ser humano, todas las objeciones propuestas pueden ser en cierto modo anuladas, menos dos de ellas. Las propuestas que pueden superar esto, son la percepción extrasensorial y la capacidad crear o inventar algo nuevo. Si consideramos que estas dos objeciones provienen del mismo lugar, algo que podemos llamar inspiración o imaginación, podemos argumentar que solo son el resultado de procesos físico-químicos y por lo tanto, puede ser generados y repetidos por una máquina, pero esto sería una asunción más que un pensamiento, ya que podemos pensar que estas cosas provienen en primera instancia de procesos como los descritos, pero esto no implica que algún día podremos describir su funcionamiento en su totalidad y mucho menos significa que sea matemáticamente posible describir estos procesos continuos en un sistema discreto, y no podemos asumir que aún si todo esto es posible, estos procesos sean todo lo que genera lo descrito anteriormente.

Después de ver cómo ha ido evolucionando y cambiando la inteligencia artificial desde los tiempos de Turing, un argumento nuevo que podría surgir es que una inteligencia artificial real, capaz de imitar y hacerse pasar bajo cualquier condición por un humano con cierto intelecto, debe ser desarrollada por un humano o un equipo de humanos con un intelecto mucho mayor al esperado en la máquina, y que es necesaria una gran cantidad de este intelecto para lograr solo una pequeña cantidad del mismo en la máquina. Esto me hace pensar que existe de la posibilidad de que sea imposible llegar a crear dicha inteligencia que abarque todas las capacidades del pensamiento, pues no existen humanos lo suficientemente capaces para el desarrollo de tal máquina como para lograr cubrir la demanda de intelecto necesaria para que dicha IA haga tal cosa.

Con respecto a las predicciones de Turing sobre las capacidades de la inteligencia artificial para el año 2000, no podemos abiertamente decir que Turing estaba equivocado en su predicción, ya que considero factible decir que Turing no consideró todas las ramificaciones de la IA en nuestros días. Ya que se generan IA cada vez más especializadas, tal que, se diseñan máquinas para que hagan solo funcionalidades específicas, y en realidad no se está buscando diseñar o enseñar a una máquina a jugar el juego de la imitación propuesto por Turing. Todo esto puede ser considerado como una desviación de las ideas originales de Turing sobre lo que una inteligencia artificial es.