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
obstculos y este deber ir sortendolos, y adems deber ir desde el
inicio hasta el final siguiendo la ruta ms corta.
3. INTRODUCCIN
En los ltimos aos 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 sinnmero de campos y conceptos entre los cuales se
encuentra el concepto de agente, se dice que estos constituyen el
prximo avance ms significativo en el desarrollo de sistemas y
pueden ser considerados como la nueva revolucin en el
software.
4. DESCRIPCIN DEL PROBLEMA
Meta: El viajero deber llegar a su destino final en un corto
tiempo, de la manera ms rpida, escogiendo las calles ms cortas o
ruta ms corta y adems deber evitar chocar con los obstculos 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 obstculos colocados
en su trayecto.
Obstculos: Los obstculos sern casas que las cuales estarn a lo
largo de todo el trayecto.
5. INGENIERIA DEL AGENTE
Tipo de agente
Basado en Objetivos
Sensores
Sensor para detectar obstculos.
Sensor de posicin final o meta.
Sensor de posicin inicial.
Entorno
Calles.- Por donde se va a desplazar el agente
Obstculos.- Con lo que debe evitar chocar el agente.
6. Caractersticas entorno
Episdico
Ambiente dinmico
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 misin.
9. Algoritmo y tipo de Agente para esteproblema
Hemos determinado que la mejor opcin para resolver este problema es
implementar un agente de bsqueda online.
La bsqueda online intercambia computacin con accin, y difiere en
esto con las bsquedas offline, las cuales determinan una solucin
antes de ejecutarla.
Una bsqueda online es necesaria para entornos dinmicos y
semi-dinmicos, es por eso que son utilizados comnmente en problemas
de exploracin.
10. Pasos para resolver nuestro problema:
Primeramente ubicamos la posicin de inicio o partida para ello
usamos la clase que la hemos denominado Nodo y enviamos como
parmetros: 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 ubicacin
en el cual obtenemos la ubicacin 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 ubicacin de la partida ubicamos los
vecinos de esta partida. Con vecinos nos referimos a los nodos que
lo rodean. Para hacer esta ubicacin enviamos como parmetro el nivel
y pasillo de la partida al procediendo que lo hemos denominado
Definir Vecinos. En este procedimiento, hacemos una
comparacin:
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 ubicacin de
la llegada, as mismo calculamos los vecinos de la casilla
llegada.
A continuacin calculamos la heurstica y enviamos como parmetro el
nodo partida ya definido su ubicacin y vecinos.
CalcularHeuristica(this.miPartida)
14. En esta heurstica calculamos la distancia que existe desde la
partida, y desde cada vecino donde no existe un obstculo, para
calcular la heurstica utilizamos el nivel y el pasillo en el que se
encuentra cada nodo. Con la siguiente formula calculamos la
heurstica:
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
accin debe calcular la heurstica de los nodos sucesores y as luego
hacer una comparacin de que heurstica es la mejor y tomar esa para
su prxima accin.
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(Bsqueda Local
Online), el cual a su vez hace un llamado a la funcin Bsqueda Local
Online 1(BLO1), esta funcin BLO1 lo que nos hace es:
Verificar si la casilla en donde nos encontramos es la
llegada
Llamar a la funcin expandir nodos enviando como parmetro el nodo en
el cual nos encontramos actualmente.
En la funcin expandir nodo verificamos cuantos nodos hojas puede
tener un nodo, haciendo una comparacin determinamos si un sucesor
es un camino o es un obstculo. En caso de ser un obstculo pasamos,
en caso de ser un camino hacemos el procedimiento del 1 al 3 que es
de calcular su ubicacin, definir sus vecinos y calcular la
heurstica.
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,
adems calculamos la heurstica de cada nodo hijo o sucesor.
Ya tenemos en nuestro rbol el nodo padre y sus sucesores, con sus
respectivas heursticas, a continuacin creamos un array auxiliar
para poder ordenar nuestro rbol, ordenamos los sucesores de un nodo
tomando en cuenta la funcin heurstica en nodo con menor funcin
heurstica estar primero, esto con la finalidad de escoger como
primera opcin el nodo con funcin heurstica ms corta.
18. Adems debemos tomar en cuenta que no siempre un nodo con mejor
funcin heurstica ser el elegido, se debe hacer todo el proceso
nuevamente con ese nodo con mejor funcin heurstica para determinar
si los sucesores de este son obstculos o caminos y determinar sus
funciones heursticas 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.
Adems 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. Ontologa que permitir Aprender al Agente
Aprenderagente
21. Algunas tripletas que obtuvimos
22. 23. 24. Validando la ontologa en la pgina
http://www.w3.org/RDF/Validator/ARPServlet obtuvimos la siguiente
tabla de tripletas
Top Related