jueves, 1 de octubre de 2015

PORTADA


ESCUELA SUPERIOR POLITÉCNICA AGROPECUARIA DE MANABÍ 
“MANUEL FÉLIX LÓPEZ”
                                                                                               
                                
CARRERA INFORMÁTICA


SEMESTRE SÉPTIMO                       PERIODO MAR – AGO/2015


PORTAFOLIO DE INTELIGENCIA ARTIFICIAL II


AUTORA:
MARÍA PAOLA MENDOZA MENDIETA


FACILITADORA:
 ING. HIRAIDA SANTANA CEDEÑO


MISIÓN
Formación de profesionales integros que conjuguen ciencia, tecnología y valores en su accionar, comprometidos con la sociedad en el manejo adecuado de programas y herrmientas computacionales de última generación

VISIÓN
Ser referentes en la formación de profesionales de prestigio en el desarrollo de aplicaciones informáticas y soluciones de hardware


CALCETA, 2015

martes, 7 de julio de 2015

BÚSQUEDA ENTRE ADVERSARIOS

Fecha de Clase: 6 - 10 de Julio 2015
INTRODUCCIÓN
En esta clase se introdujo a las búsquedas entre adversarios, es un tema muy importante de conocer ya que hasta ahora las búsquedas que hemos revisado han sido simples (con un solo jugador), pero en este documento vamos a introducir en lo que respecta a búsquedas con más de un jugador. Para estos hay que conocer sobre los entornos multiagentes (cooperativo y competitivo), donde intervienen mas de un agente, y estos trae mas dificultades entre los agentes, ya que el agente tendrá que saber cómo actuar ante otro las acciones de otro agente.

OBJETIVO
Estudiar las búsquedas entre adversarios o mejor conocidas como juegos.

MARCO TEÓRICO
ENTORNOS MULTIAGENTES
Los podemos dividir en dos partes: Cooperativo y Competitivo.

COMPETITIVOS: Un rasgo de alta incidencia en el entorno actual es la competencia, ella contribuye a que las organizaciones desarrollen capacidades, reformulen políticas, planteen estrategias y busquen asociarse para introducirse, mantenerse y ampliarse en el mercado. Tanto las organizaciones que se encargan de la producción de bienes materiales, como las que se dedican a la  prestación de servicios, se encuentran inmersas en este ambiente competitivo.
Las organizaciones desarrollan sus actividades dentro de una realidad circundante: El entorno que condiciona considerablemente su funcionamiento. En gran medida, el mayor o menor éxito de las empresas dependerá de su  acierto en relacionarse adecuadamente con el conjunto de elementos externos a la misma.
Este conjunto de variables, entre las que se encuentran: El comportamiento del  mercado, los costos, las innovaciones en la tecnología y los aspectos sociales,  culturales, políticos y legales, cambian con el transcurso del tiempo.
En estas circunstancias las organizaciones deben procurar mantener un equilibrio dinámico y permanente.(Benites, E. 2014?)

COOPERATIVOS: Cooperan para obtener una secuencia de acciones (plan) que permita llegar desde un estado inicial a un estado final.  Cada agente utiliza un método diferente para planificar. Uno de ellos planifica “hacia adelante”, partiendo del estado inicial y avanzando hacia el estado final.  El otro agente planifica “hacia atrás”, comenzando desde el estado final  y  retrocediendo  hacia  el  estado  inicial.   La  tarea  de  planificación  termina  cuando ambos  agentes  obtienen  un  plan  parcial  para  llegar  desde  su  estado  de  partida  a  un mismo estado intermedio. (Garcia, J. 2000)

JUEGOS
En la IA existen tipos distintos de juegos: juegos de sumas de cero y juegos suma no cero.

JUEGO DE SUMA DE CERO
En los juegos de suma cero el beneficio total para todos los jugadores del juego, siempre suma cero, es decir, un jugador se beneficia solamente a expensas de otros el ajedrez es un ejemplo de juego de suma cero, porque se gana exactamente la cantidad que pierde el oponente.(Neumann, J y Morgenstern, O. 1944)

Tabla 1. suma de cero

JUEGO DE SUMA NO CERO
La mayoría de los ejemplos reales son juegos de suma no cero, porque algunos desenlaces tienen resultados netos mayores o menores que cero. En otras palabras, la ganancia de un jugador no necesariamente se corresponde con la pérdida de otro. (Neumann, J y Morgenstern, O. 1944)

DECISIONES ÓPTIMAS EN JUEGOS
Para la toma óptima de decisiones podemos basarnos en los siguientes parámetros:


























EJEMPLO DE APLICACIÓN



Imagen 1. Juego tres en raya







































Estado inicial: tablero vacío + ficha de salida

Función Sucesor:  
  • 9 movimientos posibles, uno por casilla
  • Aplicable si la casilla no está ocupada
  • Estado resultante: colocar la ficha que toca en la casilla especificada
Test terminal: tableros completos o con línea ganadora

Función Utilidad:
  • 1 si es ganador para MAX
  • 0 si es tablas (empate)
  • -1 si es ganador para MIN

VALOR MINIMAX
Un jugador quien usa el criterio minimax escoge una estrategia que, entre todas las estrategias posibles, minimiza el daño de la mejor contra-estrategia del otro jugador. Es decir, una estrategia óptima según el criterio minimax es una que minimiza el daño máximo que puede hacer el contrincante. (Waner, S. 2007)

ALGORITMO MINIMAX
Es un algoritmo de decisión para minimizar la pérdida máxima aplicada en juegos de adversarios donde cada jugador conoce el estado del otro. Elección del mejor movimiento para cada jugador,  suponiendo que el contrincante escogerá el peor. El espacio de estados se representa mediante árboles, donde:

  •  Nodo: Representa una situación del juego.
  • Sucesores de un nodo: Situaciones del juego a las que se accede por movimientos legales aplicando sus reglas.
  •  Nivel: Contiene todas las situaciones posibles para uno de los jugadores.
El algoritmo Minimax es un procedimiento recursivo y el corte de la recursión está dado por alguna de las siguientes condiciones: (Lopez, B. 2012.)

  • Gana algún jugador
  • Se han explorado N capas, siendo N el límite establecido
  • Se ha agotado el tiempo de exploración
  • Se ha llegado a una situación estática donde no hay grandes cambios de un nivel a otro.

CONCLUSIÓN
La búsquedas entre adversarios o mejor conocidas como juegos es importante su estudio puesto que a través de la historia muchos de los investigadores de la inteligencia artificial han indagado en esta rama ya que los juegos traen dificultades que hacen  más interesante el estudio de este tipo de búsqueda. Los juegos también son conocidos como suma de cero que son entre dos jugadores tomando en cuenta las decisiones y estrategias óptimas (estado inicial, función sucesor, test terminal y función terminal), examinando el valor minimax. Para esto se han desarrollado algoritmos minimax que realiza la exploración por la búsqueda primero en profundidad y utilizan la recursión.

BIBLIOGRAFÍA
Benites, E. 2014?. INTELIGENCIA ARTIFICIAL. FORMATO PDF. Disponible en: http://sisbib.unmsm.edu.pe

Garcia, J. 2000. Agentes inteligentes cooperativos. 

Neumann, J y Morgenstern, O. 1944. Theory of Games and Economic Behavior.

Russell, S. y Norvig, P. 2004. INTELIGENCIA ARTIFICIAL. UN ENFOQUE MODERNO. PEARSON EDUCACION. 2 ed. Madrid.

Waner, S. 2007. TEORIA DE JUEGOS. Formato HTML. Disponible en: http://www.zweigmedia.com


Lopez, B. 2012. Algortimo minimax. Formato HTML. Disponible:http://www.itnuevolaredo.edu.mx/

martes, 30 de junio de 2015

PROLOG

Fecha de Clase: 29 de Junio al  3 de Julio 2015
INTRODUCCIÓN
En esta clase aprendimos sobre prolog es uno de los primeros lenguaje de programación, también es el más conocidos y utilizados en la ingeniería informática para el estudio de la inteligencia artificial. Prolog es muy antiguo, y está formado por un conjunto de reglas y hechos,  que se ejecutan normalmente. Este lenguaje de programación almacena una base de conocimiento que luego estas pueden ser consultadas, basadas en lógica de predicados de primer orden, ya que este programa esta descrito en un lenguaje declarativo, este lenguaje implica objetos y relaciones.

OBJETIVO
Obtener conocimientos basicos de prolog y presentar ejemplos prácticos de este lenguaje de programación.
MARCO TEÓRICO
PROLOG
Prolog ha sido diseñado e implementado de tal manera que puede ser fácilmente modificado para experimentos con la programación lógica y la relación entre la programación lógica y otros paradigmas de programación. Prolog tiene un rico conjunto de predicados incorporados y un rendimiento razonable, lo que hace posible el desarrollo de las aplicaciones importantes en el mismo. La versión actual ofrece un sistema de módulos, recolección de basura y una interfaz para el lenguaje C.
PROLOG está orientado a la resolución de problemas mediante el cálculo de predicados, basado en (Aedo, G. 2004)
·         Base de datos a las que se realiza preguntas.
·         Pruebas matemáticas y lógicas (and, or, not).
·       Especificaciones cómo debe ser la solución, en vez de dar el algoritmo para su resolución. La solución se obtiene mediante búsqueda aplicando la lógica de predicados.

ELEMENTOS DEL LENGUAJE:
Hechos (átomos).
Reglas (cláusulas de Horn).
Preguntas u objetivos (conjunciones ó disyunciones de átomos).

HECHOS
Para explicar los fundamentos de PROLOG vamos a utilizar el típico ejemplo de las relaciones familiares. Para decir que María es madre de Jesús, podríamos declarar el siguiente hecho PROLOG:
madre(maria, jesus).

“madre” es el nombre de la relación o nombre de predicado y “maria” y “jesus” son los argumentos. Los hechos acaban siempre con punto. Nosotros interpretaremos que María, primer argumento de la relación, es la madre de Jesús, segundo argumento de la relación. Sin embargo, este orden es arbitrario  y cada programador puede darle su propio significado. Los nombres de las relaciones y los argumentos que se refieren a objetos o personas concretas se escribirán con minúscula.
Otros ejemplos de hechos pueden ser los siguientes:
le_gusta_a(juan,maria).
valioso(oro).
tiene(juan,libro).
da(juan,libro,maria).

Los nombres también son arbitrarios y el programador decidirá la interpretación que haga de ellos. La relación le_gusta_a(juan,maria) es equivalente a la relación a(b,c), aunque para que la interpretación sea más sencilla, se recomienda que los nombres se elijan de forma que ayuden a su interpretación.
Los hechos no tienen que reflejar el mundo real necesariamente, pero será única y exclusivamente lo que PROLOG tomará como verdadero. Un conjunto de hechos (también llamados cláusulas), junto con un conjunto de reglas, forman lo que se llama una base de datos. (Toledo, F.et al.., 2001)

REGLAS
El verdadero poder de cualquier lenguaje de programación está en su mecanismo de abstracción. En Prolog la norma establece el mecanismo de abstracción. Cuando un hecho sólo se puede especificar que una tupla de valores satisface un predicado, una regla puede especificar en qué condiciones una tupla de valores satisface un predicado.
El bloque básico de una regla edificio se llama un átomo: un predicado seguido de una tupla de términos, donde ambas constantes y variables son términos (veremos que un término puede realmente tener más estructura). Vemos inmediatamente que cada hecho es un átomo. Cuando la tupla satisface el predicado del átomo decimos el átomo es cierto. Cada regla está dividida en dos partes por el símbolo ': -': la parte izquierda se llama el jefe de la gobernar, mientras que el lado derecho es el cuerpo de la regla.
Ejemplo:
predecesor(X,Y):-progenitor(X,Y).
predecesor(X,Y):-progenitor(X,Z), progenitor(Z,Y).
predecesor(X,Y):-progenitor(X,Z), progenitor(Z,V), progenitor(V,Y).

PREGUNTAS U OBJETIVOS
En tiempo de ejecución, aparece el prompt ?- y el intérprete de PROLOG espera que el usuario introduzca un objetivo en forma de predicado, con o sin variables. (Cubero, C; y Berzal, F. 2010)
Para realizar preguntas más interesantes, como por ejemplo, qué le gusta a María o cuáles son los padres de Damián, se usarán las variables. En PROLOG las variables empiezan por mayúscula. Por ejemplo:
 ?-le_gusta_a(maria,X).
?-progenitor(Y,damian).
   
EJEMPLO PRACTICO
ARBOL DE FAMILIA

CODIGO PROLOG
hijo(ramona,pedro).
hijo(roberty,pedro).
hijo(genoveva,pedro).
hijo(eddy,ramona).
hijo(loly,ramona).
hijo(paola,ramona).
hijo(edward,roberty).
hijo(douglas,roberty).
hijo(xavier,genoveva).
primo(eddy,edward).
primo(eddy,douglas).
primo(eddy,xavier).
primo(loly,edward).
primo(loly,douglas).
primo(loly,xavier).
primo(paola,edward).
primo(paola,douglas).
primo(douglas,eddy).
primo(douglas,paola).
primo(douglas,loly).
primo(douglas,xavier).
primo(edward,loly).
primo(edward,paola).
primo(edward,eddy).
primo(edward,xavier).
primo(xavier,paola).
primo(xavier,eddy).
primo(xavier,loly).
primo(xavier,edward).
primo(xavier,douglas).
primo(paola,xavier).
hermano(eddy,paola).
hermano(eddy,loly).
hermano(paola,eddy).
hermano(paola,loly).
hermano(loly,eddy).
hermano(loly,paola).
hermano(douglas,edward).

CONSULTA PROLOG

CONCLUSIÓN
Prolog es el lenguaje de programación que es muy utilizado para aprender los principios básicos de la inteligencia artificial, este lenguaje utiliza una base de conocimiento llamada bases de datos, en donde se almacena un conjunto de reglas y hechos, que sirven para realizar preguntas o consultas. También prolog trabaja con relaciones y objetos, asi que es recomendable utilizar prolog para las personas que quieran indagar sobre la IA y sus principios basicos. Para estos hay que conocer claramente los elementos de Prolog como lo son las reglas, los hechos y las consultas, y su utilizacion para su correcta aplicación.

BIBLIOGRAFÍA
Russell, S. y Norvig, P. 2004. INTELIGENCIA ARTIFICIAL. UN ENFOQUE MODERNO. PEARSON EDUCACION. 2 ed. Madrid.

Wielemaker, J. 1996. SWI-Prolog 2.7-Reference Manual.

Aedo, G. 2004. Estudiaremos un caso de lenguaje orientado a la programación lógica (cálculo de predicados): Prolog. Formato HTML. Disponible en: http://www.desarrolloweb.com/

Toledo, F; Pacheco, J y Escrig, M. 2001. Lenguaje de programación PROLOG.

Cubero, C; y Berzal, F. 2010. Sistemas inteligentes de gestion. Disponible en: http://elvex.ugr.es/


martes, 9 de junio de 2015

BÚSQUEDA LOCAL EN ESPACIOS CONTINUOS

Fecha de Clase: 8 - 12 de Junio 2015
INTRODUCCIÓN
En esta clase se hizo referencia a la búsqueda local en espacios continuos, conociendo con anterioridad la diferencia entre  espacios discretos y continuos. Puesto que los espacios continuos son los que más se asemejan a la realidad que se presentan en el mundo real. Es por esto que el estudio de los espacios continuos se hace cada vez más importante para encontrar soluciones a problemas que se presentan en estos entornos a través de técnicas y búsquedas. Cabe recalcar que este tipo de búsqueda, se realiza a cualquier acontecimiento que trate del mundo real, para dar soluciones óptimas. Son los más utilizados y es por estos que se han desarrollado técnicas como el gradiente, gradiente empírico, línea de búsqueda, Newton-Raphson.

OBJETIVO
Identificar la búsqueda local en espacios continuos, para conocer cuál es su importancia en la inteligencia artificial.

MARCO TEÓRICO
BÚSQUEDA LOCAL
En la búsqueda local, se empieza de una configuración inicial (generalmente aleatoria) y se hacen pequeños cambios (a través de operadores) hasta alcanzar un estado desde el cual no se puede alcanzar ningún estado mejor. Las técnicas de búsqueda local son propensas a encontrar óptimos locales que no son la mejor solución posible. El óptimo global es generalmente imposible de alcanzar en un tiempo limitado, por el tamaño del espacio de soluciones. (Ceccaroni, L. 2007)

ESPACIOS CONTINUOS
Si existe una cantidad infinita de percepciones y acciones distintas y discernibles, se dice que el ambiente es continuo. Los espacios continuos son los que más se asemejan a la realidad del mundo y los problemas más frecuentes.

EJEMPLO DE BÚSQUEDA LOCAL EN ESPACIOS CONTINUOS
Supongamos que queremos colocar tres nuevos aeropuertos en cualquier lugar de Rumania, de forma tal que la suma de las distancias al cuadrado de cada ciudad sobre el mapa imagen1 su aeropuerto más cercano sea mínima. Entonces el espacio de estados está definido por las coordenadas de los aeropuertos: (x1, y1), (x2, y2), y (x3, y3). Es un espacio seis dimensional, también decimos que los estados están definidos por seis variables (en general, los estados están definidos por un vector n-dimensional de variables, x). Moverse sobre este espacio se corresponde a movimientos de uno o varios de los aeropuertos sobre el mapa La función objetivo f(x1,y1,x2,y2,x3,y3) es relativamente fácil calcularla para cualquier estado particular una vez que tenemos las ciudades más cercanas, pero bastante complicado anotar en general. (Russell, S. y Norvig, P. 2004)


Imagen1. Mapa de carreteras simplificados de las carreteras de Rumania

TÉCNICAS DE BÚSQUEDA LOCAL EN ESPACIOS CONTINUOS
GRADIENTE: El gradiente es una operación vectorial, que opera sobre una función escalar, para producir un vector cuya magnitud es la máxima razón de cambio de la función en el punto del gradiente y que apunta en la dirección de ese máximo. (Olmo, M y  Nave, R. 2010?)


 GRADIENTE EMPIRICO: Se puede determinar evaluando la respuesta a pequeños incrementos y decrecimientos en cada coordenada. El gradiente impirico se crea por la necesidad de mejorar la técnica del gradiente. Donde alfa es una pequeña constante.

LÍNEA DE BÚSQUEDA: trata de vencer el dilema amplia la dirección de gradiente actual (que por lo general duplica repetidamente alfa) hasta que comience a disminuir otra vez, el cual llega un punto en el que se crean nuevos estados. (Russell, S. y Norvig, P. 2004)

NEWTON-RAPHSON: esta técnica es muy utilizada para encontrar las raíces de una función, procurando que la solución de una ecuaciones sean de la forma g(x)=0, y calculando estimaciones de la raíz.

Aunque esta técnica ha evolucionado implementando la matriz Hesiana,  lo cual ayuda a Newthon-Raphson a hacer más barata en espacios dimensionales.

OPTIMIZACIÓN CON RESTRICCIONES Y PROGRAMACION LINEAL
La programación lineal resuelve problemas donde todas las relaciones entre las variables son lineales, tanto en las restricciones como en la función objetivo, la presencia de una única función no lineal hace que el problema no pueda clasificarse como problema de programación lineal; ésta evidencia su aplicación en diversos campos, como la ingeniería, la economía, la gestión, y muchas otras áreas de la ciencia, la técnica y la industria. El objeto de la programación lineal es optimizar (minimizar o maximizar) una función lineal de n variables sujeto a restricciones lineales de igualdad o desigualdad, denominada función objetivo. (Ornelas, C y Marchenas, W. 2007)
Con esto se han estudiado problemas con tipos diferentes de restricciones y funciones objetivo:
·         Programación cuadrática
·         Programación cónica de segundo orden.

CONCLUSIÓN
Como conclusión puedo decir que el estudio de estas búsquedas locales en espacios continuos son importantes e indispensable si queremos introducirnos a la inteligencia artificial, puesto que este tipo de búsqueda en entornos continuos son los que más se presentan en el mundo, son problemas reales con los que hay que lidiar día a día. Las técnicas que se han desarrollado para que estas búsquedas locales en espacios continuos, para obtener soluciones óptimas a problemas que se presentan en el mundo real; cada  vez estas técnicas van evolucionando y son más eficaces, la técnica principal  es el gradiente de esta han ido surgiendo otras técnicas como lo es el gradiente empírico, línea de búsqueda y Newton Raphson.

BIBLIOGRAFÍA
Russell, S. y Norvig, P. 2004. INTELIGENCIA ARTIFICIAL. UN ENFOQUE MODERNO. PEARSON EDUCACION. 2 ed. Madrid.

Ceccaroni, L. 2007. Inteligencia Artificial: Búsqueda local. Formato HTML. Disponible en: http://www.cs.upc.edu/

Olmos, I. 2008. Estructura de un Agente. Formato PDF. Disponible en: http://www.cs.buap.mx/

Olmo, M y  Nave, R. 2010?. El Gradiente. Formato HTML. Disponible en: http://hyperphysics.phy-astr.gsu.edu/


Ornelas, C y Marchenas, W. 2007. Optimizacion y la programación lineal: Una Introduccion. Formato PDF. Disponible en: http://fglongatt.org/