SlideShare a Scribd company logo
1 of 25
Luis Feijoo Santiago Medina AGENTE INTELIGENTE: VIAJERO PERDIDO
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.
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.
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.
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.
Características entorno Episódico Ambiente dinámico Es accesible Ambiente continuo Es no determinista
Actuadores-Acciones
Metas Es el objetivo final del agente, al llegar a la meta el agente se detendrá y dará por concluida su misión.
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.
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
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
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)
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.
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.
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.
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.
Ontología que permitirá Aprender al Agente Aprenderagente
Algunas tripletas que obtuvimos
Validando la ontología en la página http://www.w3.org/RDF/Validator/ARPServlet obtuvimos la siguiente tabla de tripletas
Agente Inteligente

More Related Content

Viewers also liked

Open Innovation
Open InnovationOpen Innovation
Open Innovationluisfe
 
Sesión 1: Introduccion. ¿Qué es ingeniería de software?
Sesión 1: Introduccion. ¿Qué es ingeniería de software?Sesión 1: Introduccion. ¿Qué es ingeniería de software?
Sesión 1: Introduccion. ¿Qué es ingeniería de software?Coesi Consultoria
 
Reconocimiento de caracteres atravez de redes neuronales
Reconocimiento de caracteres atravez de redes neuronalesReconocimiento de caracteres atravez de redes neuronales
Reconocimiento de caracteres atravez de redes neuronalesluisfe
 
Sesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del softwareSesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del softwareCoesi Consultoria
 
4. Desarrollo ágil de software
4. Desarrollo ágil de software4. Desarrollo ágil de software
4. Desarrollo ágil de softwareCoesi Consultoria
 
Mitos en la elaboración de Tesis
Mitos en la elaboración de TesisMitos en la elaboración de Tesis
Mitos en la elaboración de TesisCoesi Consultoria
 
Sesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de procesoSesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de procesoCoesi Consultoria
 
Modelo Descrptivos Del Proceso Del Sofware
Modelo Descrptivos  Del  Proceso Del SofwareModelo Descrptivos  Del  Proceso Del Sofware
Modelo Descrptivos Del Proceso Del Sofwareluisfe
 

Viewers also liked (8)

Open Innovation
Open InnovationOpen Innovation
Open Innovation
 
Sesión 1: Introduccion. ¿Qué es ingeniería de software?
Sesión 1: Introduccion. ¿Qué es ingeniería de software?Sesión 1: Introduccion. ¿Qué es ingeniería de software?
Sesión 1: Introduccion. ¿Qué es ingeniería de software?
 
Reconocimiento de caracteres atravez de redes neuronales
Reconocimiento de caracteres atravez de redes neuronalesReconocimiento de caracteres atravez de redes neuronales
Reconocimiento de caracteres atravez de redes neuronales
 
Sesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del softwareSesión 2: Visión General. El proceso del software
Sesión 2: Visión General. El proceso del software
 
4. Desarrollo ágil de software
4. Desarrollo ágil de software4. Desarrollo ágil de software
4. Desarrollo ágil de software
 
Mitos en la elaboración de Tesis
Mitos en la elaboración de TesisMitos en la elaboración de Tesis
Mitos en la elaboración de Tesis
 
Sesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de procesoSesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de proceso
 
Modelo Descrptivos Del Proceso Del Sofware
Modelo Descrptivos  Del  Proceso Del SofwareModelo Descrptivos  Del  Proceso Del Sofware
Modelo Descrptivos Del Proceso Del Sofware
 

Similar to Agente Inteligente

Inteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys BInteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys BJose Andres
 
Tecnicas de Busqueda en IA
Tecnicas de Busqueda en IATecnicas de Busqueda en IA
Tecnicas de Busqueda en IAAlfredoAlejo1
 
Solución de problemas mediante busqueda
Solución de problemas mediante busquedaSolución de problemas mediante busqueda
Solución de problemas mediante busquedasacrilegetx
 
Agente Inteligente Paper
Agente Inteligente PaperAgente Inteligente Paper
Agente Inteligente Paperluisfe
 
Cuadro comparativo metodos de busqueda
Cuadro comparativo metodos de busquedaCuadro comparativo metodos de busqueda
Cuadro comparativo metodos de busquedajuniorjaviermedina
 
Búsquedas básicas
Búsquedas básicasBúsquedas básicas
Búsquedas básicasJorgheLuis
 
Agente Reconedor de Señales de Transito
Agente Reconedor de Señales de TransitoAgente Reconedor de Señales de Transito
Agente Reconedor de Señales de TransitoDiego Guamán
 
Agente Carro Aplicando La Búsqueda A Star
Agente  Carro Aplicando La Búsqueda  A StarAgente  Carro Aplicando La Búsqueda  A Star
Agente Carro Aplicando La Búsqueda A StarUTPL
 
Agente Carro
Agente CarroAgente Carro
Agente CarroUTPL
 
Busquedas Heuristicas vs Busquedas Ciegas
Busquedas Heuristicas vs Busquedas CiegasBusquedas Heuristicas vs Busquedas Ciegas
Busquedas Heuristicas vs Busquedas Ciegasluisilva18
 
Tecnicas de Busqueda en IA
Tecnicas de Busqueda en IATecnicas de Busqueda en IA
Tecnicas de Busqueda en IARafaelVargas155
 
Monografía Alexa
Monografía AlexaMonografía Alexa
Monografía AlexaAlexa Ortiz
 
Colegio nacional nicolás es guerra
Colegio nacional nicolás es guerraColegio nacional nicolás es guerra
Colegio nacional nicolás es guerraandres-valle6
 
Colegio nacional nicolás es guerra
Colegio nacional nicolás es guerraColegio nacional nicolás es guerra
Colegio nacional nicolás es guerramichaelvrl16
 
Colegio nacional nicolás es guerra
Colegio nacional nicolás es guerraColegio nacional nicolás es guerra
Colegio nacional nicolás es guerramichaelvrl16
 

Similar to Agente Inteligente (20)

Inteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys BInteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys B
 
Tecnicas de Busqueda en IA
Tecnicas de Busqueda en IATecnicas de Busqueda en IA
Tecnicas de Busqueda en IA
 
Solución de problemas mediante busqueda
Solución de problemas mediante busquedaSolución de problemas mediante busqueda
Solución de problemas mediante busqueda
 
Trabajo
TrabajoTrabajo
Trabajo
 
Agente Inteligente Paper
Agente Inteligente PaperAgente Inteligente Paper
Agente Inteligente Paper
 
Cuadro comparativo metodos de busqueda
Cuadro comparativo metodos de busquedaCuadro comparativo metodos de busqueda
Cuadro comparativo metodos de busqueda
 
Búsquedas básicas
Búsquedas básicasBúsquedas básicas
Búsquedas básicas
 
Agente Reconedor de Señales de Transito
Agente Reconedor de Señales de TransitoAgente Reconedor de Señales de Transito
Agente Reconedor de Señales de Transito
 
Agente Carro Aplicando La Búsqueda A Star
Agente  Carro Aplicando La Búsqueda  A StarAgente  Carro Aplicando La Búsqueda  A Star
Agente Carro Aplicando La Búsqueda A Star
 
Agente Carro
Agente CarroAgente Carro
Agente Carro
 
Busquedas Heuristicas vs Busquedas Ciegas
Busquedas Heuristicas vs Busquedas CiegasBusquedas Heuristicas vs Busquedas Ciegas
Busquedas Heuristicas vs Busquedas Ciegas
 
Tecnicas de Busqueda en IA
Tecnicas de Busqueda en IATecnicas de Busqueda en IA
Tecnicas de Busqueda en IA
 
Introduccion a los algoritmos
Introduccion  a los algoritmosIntroduccion  a los algoritmos
Introduccion a los algoritmos
 
Unidad 3 Busqueda.pdf
Unidad 3 Busqueda.pdfUnidad 3 Busqueda.pdf
Unidad 3 Busqueda.pdf
 
Monografía Alexa
Monografía AlexaMonografía Alexa
Monografía Alexa
 
6 prob busquinte
6 prob busquinte6 prob busquinte
6 prob busquinte
 
Colegio nacional nicolás es guerra
Colegio nacional nicolás es guerraColegio nacional nicolás es guerra
Colegio nacional nicolás es guerra
 
Alejandro Escobar 25146869
Alejandro  Escobar 25146869Alejandro  Escobar 25146869
Alejandro Escobar 25146869
 
Colegio nacional nicolás es guerra
Colegio nacional nicolás es guerraColegio nacional nicolás es guerra
Colegio nacional nicolás es guerra
 
Colegio nacional nicolás es guerra
Colegio nacional nicolás es guerraColegio nacional nicolás es guerra
Colegio nacional nicolás es guerra
 

More from luisfe

Descripcion de algoritmo
Descripcion de algoritmoDescripcion de algoritmo
Descripcion de algoritmoluisfe
 
DescripcióN De Codigo Y Interfaz
DescripcióN De Codigo Y InterfazDescripcióN De Codigo Y Interfaz
DescripcióN De Codigo Y Interfazluisfe
 
Agente Inteligente Ontologia y Tripletas
Agente Inteligente Ontologia y TripletasAgente Inteligente Ontologia y Tripletas
Agente Inteligente Ontologia y Tripletasluisfe
 
ReplicacióN Base De Datos
ReplicacióN  Base De DatosReplicacióN  Base De Datos
ReplicacióN Base De Datosluisfe
 
Ubuntu
UbuntuUbuntu
Ubuntuluisfe
 
Modelos De Carros
Modelos De CarrosModelos De Carros
Modelos De Carrosluisfe
 
Mi Empresa
Mi EmpresaMi Empresa
Mi Empresaluisfe
 

More from luisfe (7)

Descripcion de algoritmo
Descripcion de algoritmoDescripcion de algoritmo
Descripcion de algoritmo
 
DescripcióN De Codigo Y Interfaz
DescripcióN De Codigo Y InterfazDescripcióN De Codigo Y Interfaz
DescripcióN De Codigo Y Interfaz
 
Agente Inteligente Ontologia y Tripletas
Agente Inteligente Ontologia y TripletasAgente Inteligente Ontologia y Tripletas
Agente Inteligente Ontologia y Tripletas
 
ReplicacióN Base De Datos
ReplicacióN  Base De DatosReplicacióN  Base De Datos
ReplicacióN Base De Datos
 
Ubuntu
UbuntuUbuntu
Ubuntu
 
Modelos De Carros
Modelos De CarrosModelos De Carros
Modelos De Carros
 
Mi Empresa
Mi EmpresaMi Empresa
Mi Empresa
 

Agente Inteligente

  • 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
  • 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
  • 22.
  • 23.
  • 24. Validando la ontología en la página http://www.w3.org/RDF/Validator/ARPServlet obtuvimos la siguiente tabla de tripletas