Agente Inteligente: Viajero Perdido
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Agente Inteligente: Viajero Perdido

  • 2,340 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,340
On Slideshare
2,283
From Embeds
57
Number of Embeds
5

Actions

Shares
Downloads
45
Comments
0
Likes
1

Embeds 57

http://santiago08.wordpress.com 38
http://www.slideshare.net 15
https://santiago08.wordpress.com 2
http://johndavid.santiago08.wordpress.com 1
http://john.david.santiago08.wordpress.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Luis Feijoo
    Santiago Medina
    AGENTE INTELIGENTE: VIAJERO PERDIDO
  • 2. ABSTRACT
    El presente trabajo describe como resolver un juego con algoritmos de inteligencia artificial.
    El viajero perdido el cual consiste en un carro en el que un viajero trata de conducir para encontrar el destino al cual desea llegar, para ello debe ir pasando por unas calles las cuales tienen obstáculos y este deberá ir sorteándolos, y además deberá ir desde el inicio hasta el final siguiendo la ruta más corta.
  • 3. INTRODUCCIÓN
    En los últimos años la inteligencia artificial a evolucionado en gran medida hasta el punto que se han construido maquinas inteligentes que inclusive tienen la capacidad de aprender.
    Abarca un sinnúmero de campos y conceptos entre los cuales se encuentra el concepto de agente, se dice que estos constituyen el próximo avance más significativo en el desarrollo de sistemas y pueden ser considerados como la nueva revolución en el software.
  • 4. DESCRIPCIÓN DEL PROBLEMA
    Meta: El viajero deberá llegar a su destino final en un corto tiempo, de la manera más rápida, escogiendo las calles más cortas o ruta más corta y además deberá evitar chocar con los obstáculos que se encuentre en su camino.
    Inicio: El viajero tendrá un punto de partida cualquiera, tendrá varias rutas para llegar a su destino, y este deberá tener la capacidad para llegar al destino sorteando los obstáculos colocados en su trayecto.
    Obstáculos: Los obstáculos serán casas que las cuales estarán a lo largo de todo el trayecto.
  • 5. INGENIERIA DEL AGENTE
    Tipo de agente
    Basado en Objetivos
    Sensores
    Sensor para detectar obstáculos.
    Sensor de posición final o meta.
    Sensor de posición inicial.
    Entorno
    Calles.- Por donde se va a desplazar el agente
    Obstáculos.- Con lo que debe evitar chocar el agente.
  • 6. Características entorno
    Episódico
    Ambiente dinámico
    Es accesible
    Ambiente continuo
    Es no determinista
  • 7. Actuadores-Acciones
  • 8. Metas
    Es el objetivo final del agente, al llegar a la meta el agente se detendrá y dará por concluida su misión.
  • 9. Algoritmo y tipo de Agente para esteproblema
    Hemos determinado que la mejor opción para resolver este problema es implementar un agente de búsqueda online.
    La búsqueda online intercambia computación con acción, y difiere en esto con las búsquedas offline, las cuales determinan una solución antes de ejecutarla.
    Una búsqueda online es necesaria para entornos dinámicos y semi-dinámicos, es por eso que son utilizados comúnmente en problemas de exploración.
  • 10. Pasos para resolver nuestro problema:
    Primeramente ubicamos la posición de inicio o partida para ello usamos la clase que la hemos denominado Nodo y enviamos como parámetros: la partida y la casilla en cual se encuentra dicha partida.
    Nodo("partida.", this.casilla_partida.Name)
    En esta clase utilizamos un procedimiento llamado ‘calcular ubicación’ en el cual obtenemos la ubicación de la partida. Para ello hemos dividido a nuestro cuadro en niveles y pasillos, los niveles son tomados en forma horizontal empezando desde cero por la parte superior, y los pasillos son tomados en forma vertical empezando desde cero por la izquierda
  • 11.
  • 12. Ahora que ya sabemos la ubicación de la partida ubicamos los vecinos de esta partida. Con vecinos nos referimos a los nodos que lo rodean. Para hacer esta ubicación enviamos como parámetro el nivel y pasillo de la partida al procediendo que lo hemos denominado ‘Definir Vecinos’. En este procedimiento, hacemos una comparación:
    si nivel = 0
    no vecino hacia arriba,
    si nivel = 9
    no vecino hacia abajo,
    si pasillo = 0
    no vecino izquierda
    si el pasillo = 9
    no vecino derecha
  • 13. Siguiendo los mismos pasos del 1 al 3 calculamos la ubicación de la llegada, así mismo calculamos los vecinos de la casilla llegada.
    A continuación calculamos la heurística y enviamos como parámetro el nodo partida ya definido su ubicación y vecinos.
    CalcularHeuristica(this.miPartida)
  • 14. En esta heurística calculamos la distancia que existe desde la partida, y desde cada vecino donde no existe un obstáculo, para calcular la heurística utilizamos el nivel y el pasillo en el que se encuentra cada nodo. Con la siguiente formula calculamos la heurística:
    a= nivel_nodo - nivel_llegada
    b= pasillo_nodo - pasillo_llegada
    h(n): a2 + b2
    Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2))
    Este algoritmo nos dice que antes de un agente poder realizar una acción debe calcular la heurística de los nodos sucesores y así luego hacer una comparación de que heurística es la mejor y tomar esa para su próxima acción.
  • 15. Creamos dos variables de tipo array una para almacenar los nodos que expandiremos del árbol, y otro para almacenar la ruta que nos llevara a la llegada.
    Luego Hemos creado un procedimiento llamado BLO(Búsqueda Local Online), el cual a su vez hace un llamado a la función Búsqueda Local Online 1(BLO1), esta función BLO1 lo que nos hace es:
    Verificar si la casilla en donde nos encontramos es la llegada
    Llamar a la función expandir nodos enviando como parámetro el nodo en el cual nos encontramos actualmente.
    En la función expandir nodo verificamos cuantos nodos hojas puede tener un nodo, haciendo una comparación determinamos si un sucesor es un camino o es un obstáculo. En caso de ser un obstáculo pasamos, en caso de ser un camino hacemos el procedimiento del 1 al 3 que es de calcular su ubicación, definir sus vecinos y calcular la heurística.
  • 16.
  • 17. Una vez que definimos cada sucesor de un nodo lo ubicamos dentro en un array llamado árbol, calculando el costo desde el padre al nodo hijo en este caso desde n1 hasta s1 o desde n1 hasta s2, además calculamos la heurística de cada nodo hijo o sucesor.
    Ya tenemos en nuestro árbol el nodo padre y sus sucesores, con sus respectivas heurísticas, a continuación creamos un array auxiliar para poder ordenar nuestro árbol, ordenamos los sucesores de un nodo tomando en cuenta la función heurística en nodo con menor función heurística estará primero, esto con la finalidad de escoger como primera opción el nodo con función heurística más corta.
  • 18. Además debemos tomar en cuenta que no siempre un nodo con mejor función heurística será el elegido, se debe hacer todo el proceso nuevamente con ese nodo con mejor función heurística para determinar si los sucesores de este son obstáculos o caminos y determinar sus funciones heurísticas respectivas. Así es el proceso que se hace nodo a nodo hasta llegar al objetivo final.
    Una vez que hemos llegado a la meta el nodo llegada tendrá una bandera llamada ‘llegada’, el cual nos indicara que hemos llegado al final.
    Además para poder almacenar las rutas que sigue el agente las almacenamos en un array llamado ruta, para luego pasar esta ruta a otro array llamado mi ruta y poder presentarla en pantalla.
  • 19.
  • 20. Ontología que permitirá Aprender al Agente Aprenderagente
  • 21. Algunas tripletas que obtuvimos
  • 22.
  • 23.
  • 24. Validando la ontología en la página http://www.w3.org/RDF/Validator/ARPServlet obtuvimos la siguiente tabla de tripletas