Vous êtes sur la page 1sur 5

Informe proyecto Univalle Smart Robot

Presentado al profesor:

Oscar Bedoya

Héctor Mario Arana Arias código: 0931120

Pedro Briñez Rodríguez código: 0910325

Universidad del Valle

Escuela de Ingeniería de Sistemas y Computación

Inteligencia Artificial

Santiago de Cali

2010
Univalle Smart Robot

El proyecto Univalle Smart Robot consistió en la implementación y aplicación de los algoritmos de


búsqueda no informada e informada que se han visto en el curso. La implementación de los
algoritmos se realizo utilizando JAVA como lenguaje de programación y la parte grafica del
proyecto se realizo con ayuda de NetBeans IDE.

Al momento de la implementación de los algoritmos de búsqueda informada se utilizaron las


heurísticas; teniendo claro que una heurística muy buena calcula el costo para llegar a la meta sin
sobrepasar su valor real y aquí está el fuerte de la utilización de esta técnica al momento de
diseñar los algoritmos de búsqueda informada.

Algoritmos de Búsqueda no Informada

 Algoritmo de búsqueda Preferente por Amplitud

Para implementar este algoritmo se utilizo una lista con los nodos expandidos, los nodos se
iban expandiendo según el orden de llegada, es decir el nodo que primero llega es el primero
que se expande, de forma que tomamos el concepto de cola o “el primero en entrar es el
primero en atender”, se expande el primero de la lista y después se borra de la lista.

 Algoritmo de búsqueda Preferente por profundidad

Para la implementación del algoritmo de búsqueda preferente por profundidad utilizamos la


clase stack (pila) que introduce los nodos y expande el ultimo nodo que entro; asimilando asi el
concepto de “ultimo en entrar primero en atender” donde el último elemento que se
introduce se expande y luego se borra de la cola siguiendo así el orden de expansión de una
pila. Para evitar los ciclos se utiliza una lista con los nodos que ya se visitaron, entonces si ya se
visito no lo expande y expande el nodo de menor profundidad es decir el siguiente en atender
de la pila.

 Algoritmo de búsqueda por Costo uniforme

Para la implementación de este algoritmo se utiliza un costo por cada movimiento, esto incluye
cuando toma una nave; en el caso de la nave 1 puede moverse 10 casillas con el costo por
casilla igual a 0,5 y con la nave 2 puede moverse 20 casillas con el costo por casilla igual a 0,5,
cuando pasa por un campo electromagnético cuyo costo por pasar es igual a 6 y cuando pasa
por una casilla vacía con costo 1. Ahora el costo total se calcula analizando cuando encuentra
los dos ítems y encuentra la salida, cuando encuentra un ítem sigue expandiendo los posibles
nodos hasta el segundo ítem y hasta la salida calculando de esta forma cada costo y
expandiendo el menor siempre; así se garantiza que la ruta elegida siempre será la menor de
todas sea que escoja el ítem 1 o el ítem 2 de primero.

Algoritmos de búsqueda informada

Se implementaron dos algoritmos de búsqueda informada Avara y A* cada uno con dos heurísticas:
Distancia en línea recta a los objetivos / 2.5 y Distancia de Manhattan a los objetivos / 2.

Heurísticas:

Distancia en línea recta a los objetivos / 2.5

La distancia en línea recta a los objetivos se elije como heurística ya que la situación del problema
del Univalle Smart Robot se puede tomar como el problema de viajar de un lugar a otro, entonces
una buena medida de estimar el costo de llegada a una meta es la distancia en línea recta porque
es la menor distancia que tiene entre un punto a otro y si esto fuera posible entonces el mejor
camino debería ser en línea recta hacia el objetivo.

La Distancia en línea recta a los objetivos se divide entre 2.5 para que una de las dos heurísticas
escogidas domine a la otra, en este caso Distancia de Manhattan dominara a Distancia en línea
recta ya que el valor de la h(n) en todo n será mayor en la distancia de Manhattan que en línea
recta debido a que se divide en un número menor (posteriormente veremos que se divide entre
dos).

Distancia de Manhattan a los objetivos / 2

La distancia de Manhattan se elije como heurística teniendo la realidad del problema el robot se
puede mover solo hacia la derecha o hacia la izquierda y la distancia de Manhattan calcula la
distancia en L hacia los objetivos.

Se divide entre dos ya que el mejor movimiento que puede hacer el robot es cuando se monta en
la nave, es decir la mitad; como se nombro anteriormente en Distancia en línea recta.

 Algoritmo de búsqueda Avara

Para implementar este algoritmo se utilizaron las dos heurísticas mencionadas anteriormente,
en cada casilla se calcula el valor de la heurística; pero se analiza el h de ir de ir por el ítem 1,
después por el ítem 2 y después hacia la salida, después se analiza el h de ir por el ítem 2,
después por el ítem 1 y después hacia la salida; se escoge el menor valor entre ellos y divido
entre 2. Esta es una modificación de la heurística ya que hay que tener en cuenta que no es lo
mismo ir primero por el ítem 1 que ir por el ítem 2.

En definitiva las heurísticas son:

Menor distancia en línea recta entre los objetivos / 2.5

Menor distancia de Manhattan entre los objetivos / 2

 Algoritmo de búsqueda A*

En este algoritmo se tiene en cuenta las heurísticas mencionadas en el punto anterior, pero a
diferencia del algoritmo avaro al valor de la heurística se le suma el valor del costo (de la
misma forma que se menciono anteriormente en el algoritmo por costo uniforme) para así
dejar de expandir los nodos que se alejan del objetivo a encontrar. La eficacia de este
algoritmo depende de una heurística admisible en este caso las heurísticas si son admisibles ya
que sus valores nunca sobrepasan el valor del costo real. Sería la menor heurística más el costo
total, utilizando en sus respectivos casos cualquiera de las dos heurísticas.

Heurística Dominante:

La heurística distancia de Manhattan / 2 a la distancia en línea recta/ 2.5 ya que el valor de h(n) en
todo n va a ser siempre mayor en todos los casos que la de h(n) = distancia en línea recta/2.5. En
conclusión:

h1 (n) = distancia de Manhattan / 2

h2 (n) = distancia en línea recta / 2.5

para todo n h1 (n) > h2 (n), por consiguiente h1 (n) domina a h2 (n)

Sabemos que cualquiera de las 2 heurísticas se tiene que dividir en un número mayor que 2
porque la mejor heurística admisible es la distancia en línea recta divida 2 (mejor movimiento
posible es la mitad del de moverse a una casilla vacía cuando se monta en una nave); por
consiguiente no puede ser un número menor que 2 porque no sería admisible pero si mayor;
nosotros elegimos 2.5.
Problemas

 A la hora de implementar los algoritmos se utilizo el concepto de hacer búsqueda por


partes, dándonos un problema a la hora de calcular los nodos expandidos y los costos, esto
se soluciono en instantes posteriores realizando una sola búsqueda.

 Se observo un problema con el lenguaje de programación que consistía en que algunas


veces tocaba duplicar o clonar las variables para que el resultado fuera correcto.

 En JAVA la programación para este tipo de algoritmos puede ser engorrosa, entonces al
momento de programar los descuidos pueden significar olvidos en los códigos y por
consiguiente confusión para el programador.

Conclusiones

 Se concluye que implementar este tipo de algoritmos en JAVA puede ser poco eficaz
debido a la gran utilización de memoria, para esto hay que se recurren a las habilidades
del programador para minimizar la utilización de memoria.

 Se determina que queda justificado el hecho de utilizar heurísticas admisibles para que la
solución sea óptima, siempre y cuando se tenga en cuenta el costo de los movimientos en
este tipo de problemas.

 Se concluyo que en nuestro caso se implemento las heurísticas de tal forma que una
dominara a la otra para que se cumpliera la especificaciones del enunciado del proyecto;
pero si se utilizara la mejor heurística admisible con línea recta no sería Manhattan
dominante ya que cuando los objetivos estén en línea recta h1 (n) = h2 (n) y no se cumple
que una de las dos sea mayor.

 Se observo la variabilidad de los algoritmos de búsqueda, algunos algoritmos son mejores


que otros pero en algunos casos como el algoritmo de profundidad si el ítem esta en su
camino de exploración lo encontrara muy rápido, siendo este un algoritmo no informado.

Vous aimerez peut-être aussi