Académique Documents
Professionnel Documents
Culture Documents
Presentado al profesor:
Oscar Bedoya
Inteligencia Artificial
Santiago de Cali
2010
Univalle Smart Robot
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.
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.
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:
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).
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.
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.
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:
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
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.