viernes, 17 de julio de 2015

PROLOG


ESCUELA SUPERIOR POLITÉCNICA AGROPECUARIA DE MANABÍ
MANUEL FÉLIX LÓPEZ


CARRERA INFORMÁTICA

    SEMESTRE  SÉPTIMO           PERIODO  ABR 2015/SEP 2015

TEMA:

PROLOG


MATERIA:

INTELIGENCIA ARTIFICIAL II


AUTOR:

CARLOS A. ZAMBRANO VIDAL

FACILITADORA:

ING. HIRAIDA SANTANA



CALCETA,  JULIO 2015


INTRODUCCIÓN
La inteligencia artificial y la lingüística computacional está asociado a un lenguaje de programación lógica que es orientado a la especificación de relaciones para responder consultas, es por esto que en la presente se realiza una investigación de estas especificaciones que dan a conocer lo que es prolog, sabiendo que en el área de inteligencia artificial es muy utilizado debido a su eficiencia, para esto en el presente informe se presenta información que es de mucha ayuda para entender el lenguaje prolog y cada una de sus funciones.
PROLOG
Prolog es un lenguaje de programación simple, pero poderoso. Se basa en nociones matemáticas de relaciones de inferencia. Es un lenguaje declarativo e interpretado, esto quiere decir que el lenguaje se usa para representar conocimientos sobre un determinado dominio y las relaciones entre objetos de ese dominio.
Un programa en ProLog consiste de una base de hechos de relaciones lógicas y detalles que se cumplen para la aplicación. Dicha base de datos no tiene una estructura impuesta, ni un procedimiento o clase principal. Escribir un programa en ProLog consiste en declarar el conocimiento disponible acerca de los objetivos, además de sus relaciones y sus reglas. En lugar de correr en un programa para obtener una solución, se hace una pregunta, el programa revisa la base de datos para encontrar la solución a la pregunta. Si existe más de una solución, ProLog hace backtracking para encontrar soluciones distintas. El propio sistema es el que deduce las respuestas a las preguntas que se le plantean, dichas respuestas las deduce del conocimiento obtenido por el conjunto de reglas dadas. La ejecución de ProLog consiste en una búsqueda en profundidad de un árbol conteniendo todas las posibles soluciones. Para cada una de ellas se evaluará su validez. La estructura de un programa en ProLog es lógica y directa.
Prolog está orientado a la resolución de problemas mediante el cálculo de predicados, basado en:
·         Preguntas a la base de datos.
·         Pruebas matemáticas.
El programa prolog específica 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 que se compone de unos hechos (datos) y un conjunto de reglas, es decir, relaciones entre objetos de la base de datos.
La ejecución del programa cargado en memoria consiste en realizar una pregunta de forma interactiva: el intérprete generará por inferencia los resultados que se deducen a partir del contenido de la base de datos.
Prolog tiene una sintaxis y semántica simples. Sólo busca relaciones entre los objetos creados, las variables y las listas, que son sus estructuras básicas.
CARACTERÍSTICAS DEL LENGUAJE PROLOG
1) Basado en lógica y programación declarativa.
2) No se especifica cómo debe hacerse, sino qué debe lograrse.
3) Una característica importante en ProLog y que lo diferencia de otros lenguajes de programación, es que una variable sólo puede tener un valor mientras se cumple el objetivo.
4) El programador se concentra más en el conocimiento que en los 
algoritmos.
-¿Qué es conocido? (hechos, reglas)
-¿Qué preguntar? (Cómo resolverlo)
En ProLog, se llega a una solución infiriéndola desde algo ya conocido. 

OBJETOS DE DATOS
Tipos de datos primitivos: variables y constantes:
§  Enteros
§  Reales
§  Caracteres
Los identificadores con minúscula representan hechos, los que van con mayúscula variables. El alcance de una variable es la regla donde aparece.
·         Tipos de datos estructurados:
§  Átomos: constantes y variables de cadena.
§  Listas, representadas entre [ ].
·         Tipos definidos por el usuario. Las reglas para definir relaciones pueden actuar como tipos de usuario.
REPRESENTACIÓN DE ALMACENAMIENTO
Las reglas y hechos son almacenadas en memoria como listas enlazadas. La ejecución de prolog consiste en una búsqueda en profundidad de un árbol conteniendo todas las posibles soluciones. Para cada una de ellas se evaluará su corrección. La búsqueda se puede hacer más eficiente mediante la poda del árbol de búsqueda (corte).

CONTROL DE SECUENCIA
·         Expresiones, operaciones aritméticas y operadores relacionales. Not ().
·         Enunciados
§  Hechos, relaciones que se expresan en una consulta. Son tuplas con un nombre de predicado y unos argumentos.
§  Reglas, implicaciones que se expresan en una operación consult.
§  Preguntas, sucesión de términos que finalizan con un punto.
§  Cortes, (!), fuerza el retroceso en la búsqueda. Esto puede impedir que se encuentren ciertas soluciones, pero puede hacer más eficiente la búsqueda.
·         Entrada y salida.

SUBPROGRAMAS Y GESTIÓN DE ALMACENAMIENTO
Prolog tiene dos modos:
·         Modo consulta, se introducen nuevas relaciones (hechos) en el almacenamiento dinámico de la base de datos.
·         Modos pregunta, se ejecuta un intérprete basado en pilas para evaluar las preguntas del usuario.

CONCLUSIONES
Prolog es un lenguaje de programación muy utilizado debido a su eficiencia en el área de inteligencia artificial, funcionando como una base de hechos de relaciones lógicas y detalles que se cumplen para la aplicación. Luego de hacer el estudio se dan a notar factores que hacen que este lenguaje de programación especifique cómo dar solución, en vez de dar el algoritmo para su resolución. La solución se obtiene mediante búsqueda aplicando hechos (datos) y un conjunto de reglas.
BIBLIOGRAFÍAS
Desarrollador web. 2010. Prolog. (En línea). Consultado, 16 jul 2015. Formato HTML. Disponible en: http://www.desarrolloweb.com/
Russell, s.2008.inteligencia artificial un enfoque moderno. Segunda edición. Pearson education. Madrid-España.



miércoles, 15 de julio de 2015

BÚSQUEDA ENTRE ADVERSARIOS


ESCUELA SUPERIOR POLITÉCNICA AGROPECUARIA DE MANABÍ
MANUEL FÉLIX LÓPEZ


CARRERA INFORMÁTICA

    SEMESTRE  SÉPTIMO           PERIODO  ABR 2015/SEP 2015

TEMA:

BÚSQUEDA ENTRE ADVERSARIOS

MATERIA:

INTELIGENCIA ARTIFICIAL II


AUTOR:

CARLOS A. ZAMBRANO VIDAL

FACILITADORA:

ING. HIRAIDA SANTANA



CALCETA,  JULIO 2015


INTRODUCCIÓN
Bueno hasta ahora solo hemos visto estrategias en las que un solo agente busca la solución a un problema. Existen otro tipo de problemas en los que dos agentes compiten por un mismo objetivo. Este es el caso de la búsqueda con adversarios, ya que este trata de saber cuál es el mejor movimiento a efectuar, pero teniendo en cuenta toda la dinámica del juego (todo lo que ocurrirá si se hace ese movimiento).
MARCO TEÓRICO
BÚSQUEDA ENTRE ADVERSARIOS
JUEGOS
En los entornos multiagente (cooperativos o competitivos), cualquier agente tiene que considerar las acciones de otros agentes. La imprevisibilidad de estos otros agentes puede introducir muchas contingencias en el proceso de resolución de problemas. Los entornos competitivos, en los cuales los objetivos de los agentes están en conflicto, dan ocasión a problemas de búsqueda entre adversarios, a menudo conocidos como juegos. La teoría matemática de juegos, una rama de la economía, ve a cualquier entorno multiagente como un juego. En Inteligencia Artificial, los “juegos” son una clase más especializada, que los teóricos llaman juegos:
Ø  De suma cero.
Ø  De dos jugadores (jugador MAX, jugador MIN).
Ø  Por turnos.
Ø  Deterministas.
Ø  De información perfecta (ajedrez, damas, tres en raya...) vs. Información imperfecta (poker, stratego, bridge...).
Los juegos son interesantes porque son demasiado difíciles de resolver.
Los entornos competitivos, en los cuales los objetivos del agente están en conflicto, dan ocasión a problemas de búsqueda entre adversarios, a menudo conocido como juegos.
La manera natural de responder un juego es mediante un árbol de juegos que es un tipo especial de árbol semántico en los que los nodos representan configuraciones de tableros y las ramas indican como una configuración puede transformarse en otra mediante un solo movimiento.

DECISIONES ÓPTIMAS EN JUEGOS
Un juego puede definirse formalmente como una clase de problemas de búsqueda con los componentes siguientes:
Ø  El estado inicial.
Ø  Una función sucesor, que devuelve una lista de pares (movimiento, estado).
Ø  Un test terminal, que determina cuándo termina el juego (por estructura o propiedades o función utilidad).
Ø Una función utilidad
ALGORITMO MINIMAX
Es un método de decisión para minimizar la pérdida máxima esperada en juegos con adversario. Como es imposible hacer una exploración exhaustiva de todas las jugadas, se hace una búsqueda limitada en profundidad.
Calcula la decisión minimax del estado actual. Usa un cálculo simple recurrente de los valores minimax de cada estado sucesor. La recursión avanza hacia las hojas del árbol. Los valores minimax retroceden por el árbol cuando la recursión se va deshaciendo.

CONCLUSIÓN
Hemos analizado este tipo de búsqueda y se llega a la conclusión de que este método debemos de conocerlo muy a fondo ya que no sirve de mucho para cuando tengamos un contrincante al frente saber en qué momento y lugar hacer la jugada o movimiento preciso para ganar la partida, como la palabra mismo lo dice adversarios siempre vamos a tener a alguien con el que vamos a jugar para decidir cuál es el mejor en el juego que se está realizando.
También nos enseña a cómo defendernos en caso de enfrentarnos a un oponente sabiendo que debemos de utilizar nuestros mejores movimientos y técnicas para vencerlo.

BIBLIOGRAFÍA
Malagón, s.2010.busqueda heurísticas. (En línea).Disponible en http://www.nebrija.es/~cmalagon/ia/transparencias/busqueda_heuristica.pdf
Russell, s.2008.inteligencia artificial un enfoque moderno. Segunda edición. Pearson education. Madrid-España.



jueves, 9 de julio de 2015

ALGORITMOS DE BÚSQUEDA LOCAL Y PROBLEMAS DE OPTIMIZACIÓN



ESCUELA SUPERIOR POLITÉCNICA AGROPECUARIA DE MANABÍ
MANUEL FÉLIX LÓPEZ


CARRERA INFORMÁTICA

    SEMESTRE  SÉPTIMO           PERIODO  ABR 2015/SEP 2015

TEMA:

ALGORITMOS DE BÚSQUEDA LOCAL Y PROBLEMAS DE OPTIMIZACIÓN


MATERIA:

INTELIGENCIA ARTIFICIAL II


AUTOR:

CARLOS A. ZAMBRANO VIDAL

FACILITADORA:

ING. HIRAIDA SANTANA



CALCETA,  JULIO 2015

INTRODUCCIÓN
La clase impartida en este día ayudo a despejar muchas dudas ya que notamos que los algoritmos de búsquedas se han diseñado para explorar los espacios de búsquedas esta se consigue manteniendo uno o más caminos en memoria y registrando que alternativas se van explorando en cada punto. También los algoritmos de búsqueda local deciden cual es el mejor camino a escoger o la mejor opción para resolver el problema.
MARCO TEÓRICO
ALGORITMOS DE BÚSQUEDA LOCAL Y PROBLEMAS DE OPTIMIZACIÓN
Los algoritmos de búsqueda que hemos visto hasta ahora se diseñan para explorar sistemáticamente Espacios de búsqueda. Esta forma sistemática se alcanza manteniendo uno o más caminos en memoria y registrando que alternativas se han explorado en cada punto a lo largo del camino y cuáles no. Cuando se encuentra un objetivo, el camino a ese objetivo también constituye una solución al problema. En muchos problemas.
Aun ninguno de los algoritmos descritos puede manejar espacios de estados continuos, la función sucesor en la mayor parte de casos devuelve infinitamente muchos estados las técnicas de búsqueda local para encontrar soluciones óptimas en espacios continuos.
Un modo de evitar problemas continuos es simplemente discretizar la vecindad de cada estado. Podemos aplicar entonces cualquiera de los algoritmos de búsqueda local descritos anteriormente. Uno puede aplicar también la ascensión de colinas estocástica y el temple simulado directamente, sin discretizar el espacio. Estos algoritmos eligen a los sucesores aleatoriamente, que pueden hacerse por la generación de vectores aleatorios de longitud.
Los métodos locales de búsqueda sufren de máximos locales, crestas, y mesetas tanto en espacios de estados continuos como en espacios discretos. Se pueden utilizar el reinicio aleatorio y el temple simulado y son a menudo provechosos. Los espacios continuos dimensionalmente altos son, sin embargo, lugares grandes en los que es fácil perderse.
Un problema de optimización está restringido si las soluciones debieran satisfacer algunas restricciones sobre los valores de cada variable. La dificultad de los problemas de optimización con restricciones depende de la naturaleza de las restricciones y la función objetivo. La categoría más conocida es la de los problemas de programación lineal en los cuales las restricciones deben ser desigualdades lineales formando una región convexa y la función objetiva es también lineal. Los problemas de programación lineal pueden resolverse en tiempo polinomial en el número de variables. También se han estudiado problemas con tipos diferentes de restricciones y funciones objetivo (programación cuadrática, programación cónica de segundo orden, etcetera).
CONCLUSIÓN
Después de haber analizado esta temática concluimos que estos algoritmos de búsqueda son  simplemente algoritmos de búsquedas se han diseñado para explorar los espacios de búsquedas que se continúan manteniendo uno o más caminos en memoria y registrando que alternativas se van explorando en cada punto. Estos algoritmos son los que deciden cual es la mejor opción para resolver el problema que se quiera solucionar.
BIBLIOGRAFÍA
Ruiz, j. 2012. Algoritmo de búsqueda local. (En línea). Disponible en: http://www.cs.us.es/cursos/ia1/temas/tema-06.pdf
Russell, s.2008.inteligencia artificial un enfoque moderno. Segunda edición. Pearson education. Madrid-España.


martes, 7 de julio de 2015

FUNCIONES HEURÍSTICAS


ESCUELA SUPERIOR POLITÉCNICA AGROPECUARIA DE MANABÍ
MANUEL FÉLIX LÓPEZ


CARRERA INFORMÁTICA

    SEMESTRE  SÉPTIMO           PERIODO  ABR 2015/SEP 2015

TEMA:

FUNCIONES HEURÍSTICAS


MATERIA:

INTELIGENCIA ARTIFICIAL II


AUTOR:

CARLOS A. ZAMBRANO VIDAL

FACILITADORA:

ING. HIRAIDA SANTANA



CALCETA,  JULIO 2015

INTRODUCCIÓN
Uno de los temas que se mencionaron en clases es este de las funciones heurísticas que básicamente son aquellas que ya disponen de alguna información para llegar a su objetivo lo que hace esta, ya tenga más caro el camino que debe recorrer. Estas funciones tienen la ventaja de ya conocer la problemática por esos son llamadas heurísticas que son basadas en la experiencia.

MARCO TEÓRICO
FUNCIONES HEURÍSTICAS
Los métodos de búsqueda heurística disponen de alguna información sobre la proximidad de cada estado a un estado objetivo, lo que permite explorar en primer lugar los caminos más prometedores
CARACTERÍSTICAS
ü  No garantizan que se encuentre una solución, aunque existan soluciones.
ü  Si encuentran una solución, no se asegura que ésta tenga las mejor esas propiedades (que sea de longitud mínima o de coste óptimo).
ü  En algunas ocasiones (que, en general, no se podrán determinar a priori), encontrarán una solución (aceptablemente buena) en un tiempo razonable.
ü  En general, los métodos heurísticos son preferibles a los métodos no informados en la solución de problemas difíciles para los que una búsqueda exhaustiva necesitaría un tiempo demasiado grande. Esto cubre prácticamente la totalidad de los problemas reales que interesan en Inteligencia Artificial.
ü  La información del problema concreto que estamos intentando resolver se suele expresar por medio de heurísticas.
ü  El concepto de heurística es difícil de aprehender. Newell, Shaw y Simon en 1963 dieron la siguiente definición: "Un proceso que puede resolver un problema dado, pero que no ofrece ninguna garantía de que lo hará, se llama una heurística para ese problema".
ü  Si nos planteamos seguir concretando como aprovechar la información sobre el problema en sistemas de producción, la siguiente idea consiste en concentrar toda la información heurística en una única función que se denomina función de evaluación heurística. Se trata de una función que asocia a cada estado del espacio de estados una cierta cantidad numérica que evalúa de algún modo lo prometedor que es ese estado para acceder a un estado objetivo. Habitualmente, se denota esa función por h (e).
La base de la heurística surge de la experiencia de resolver problemas y ver cómo otros lo hacen. De lo anterior podemos deducir que un método heurístico aplicado correctamente puede devolver soluciones falsas, positivas o negativas.
En las ciencias de la computación, el método heurístico es usado en determinadas circunstancias,  cuando no existe una solución óptima bajo las restricciones dadas. En general la manera de actuar de los programas heurísticos consiste en encontrar algoritmos con buenos tiempos de ejecución y buenas soluciones.
Dadas las características de la heurística, ésta es muy usada en juegos informáticos que se adelantan a lo que va a hacer el usuario basándose en la experiencia y los pasos que ha seguido en otras ocasiones.
Muchos algoritmos en la inteligencia artificial son heurísticos por naturaleza, o usan reglas heurísticas. Un ejemplo claro son los programas que detectan si un correo electrónico es o no spam. Cualquiera de las reglas usadas de forma independiente pueden llevar a errores de clasificación, pero cuando se unen múltiples reglas heurísticas, la solución es más robusta y creíble.

CONCLUSIÓN
Estos métodos de búsqueda son de mucha importancia por lo que ya cuentan con una información acerca del objetivo por lo que hace que se llegue más rápido y con más seguridad al mismo. Esta búsqueda decide cual es el mejor camino para llegar al objetivo sin importar el coste del mismo.
BIBLIOGRAFÍA
Malagón, s.2010.busqueda heurísticas. (En línea).Disponible en http://www.nebrija.es/~cmalagon/ia/transparencias/busqueda_heuristica.pdf
Russell, s.2008.inteligencia artificial un enfoque moderno. Segunda edición. Pearson education. Madrid-España.