Universidad Tecnolgica Nacional Facultad Regional Rosario
Ao: 2013 Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 1 Buscando el ptimo: En un Algoritmo Gentico comn, el objetivo es encontrar el ptimo global del problema. De haber ms de un punto del espacio de bsqueda que realice ese valor, algunas arquitecturas pueden encontrar algunos, pero no estn diseadas para encontrarlos todos.
Del mismo modo, de existir ptimos locales (mximos o mnimos locales, segn el problema), sern eventualmente descartados en funcin del ptimo global, que ganar en la comparacin.
Existen sin embargo arquitecturas de AG diseadas para encontrar y conservar todos los posibles Nichos Ecolgicos posibles, o sea, todos los posibles puntos o zonas del espacio de bsqueda, que correspondan a ptimos locales o al ptimo global.
As, el Algoritmo deber encontrar y conservar todos los puntos que realicen el ptimo global, y los eventuales ptimos locales.
Restriccin de Deriva Gentica
Existen muchas arquitecturas distintas. Una clase de Algoritmos Genticos Niching tienen como idea principal restringir la competencia, de modo de demorar el proceso de deriva gentica. Este es el proceso por el cual el ptimo global gana sobre los ptimos locales, de modo que stos desaparecen de la poblacin.
De este tipo son los algoritmos que utilizan Tournament Selection (seleccin por torneo), o los algoritmos de divisin en subpoblaciones mientras la migracin sea restringida. Esto tiene el defecto de que slo se consigue demorar el proceso; o sea, si se deja evolucionar el sistema lo suficiente, eventualmente el ptimo global terminar copando la poblacin. La Cantidad de Generaciones es crtica, ya que dejando evolucionar lo suficiente, el sistema eventualmente converger y slo se obtendrn variantes menores del ptimo global.
Ms an, no hay garantas de que un ptimo local encontrado durante el proceso sea conservado, slo ms probabilidades de que no todos sean eliminados
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 2 Entornos: Existe un segundo tipo de Algoritmos Genticos Niching, diseados de modo que cualquier ptimo local encontrado durante la bsqueda tenga buenas probabilidades de sobrevivir, sin importar la Cantidad de Generaciones considerada.
La idea principal es definir de alguna manera un Entorno del ptimo (mximo). Si un punto con un valor ms alto es encontrado dentro del entorno, estamos trepando una ladera y no en una cima, por lo tanto el punto presente se descarta y se toma el nuevo. De lo contrario, si otro punto con valor ms alto es encontrado pero fuera del entorno, entonces se considera que estamos en una cima (claramente no la ms alta de la funcin), y ambos puntos se conservan. Los diferentes Algoritmos Geneticos Niching de esta clase, se basan entonces en la forma en que definen y manejan este entorno (implcita o explcita, esttica o dinmica, Homognea en toda la poblacin o no)
Algoritmos de Bsqueda: Los algoritmos de bsqueda tienen como objetivo encontrar la mejor solucin dentro de un espacio de posibles soluciones. Deben maximizar o minimizar una determinada funcin. Las mejoras son iterativas. Se empieza con un estado inicial cualquiera y se mejora paso a paso Definicin de la palabra Bsqueda: Bsqueda es la accin de buscar. Este verbo permite nombrar a la accin de hacer algo para hallar a alguien o algo, hacer lo necesario para conseguir algo, ir por una persona para llevarla a otra parte o provocar. En el mbito de Internet, una bsqueda es la accin que se lleva a cabo en un buscador para hallar ciertos archivos o documentoscque estn alojados en servidores web. El usuario debe ingresar trminos o frases (conocidos como palabras clave o keywords) en el buscador para que ste presente una pgina con resultados. Se conoce como bsqueda y rescate a la operacin que se lleva a cabo en situaciones de emergencia. Lo habitual es que la operacin tenga lugar en lugares de difcil acceso cuando hay personas perdidas, heridas o enfermas.
Mtodo exhaustivo El mtodo exhaustivo es un procedimiento geomtrico de aproximacin a un resultado, con el cual el grado de precisin aumenta en la medida en que avanza el clculo. Tambin se lo conoce como: mtodo por agotamiento mtodo de exhauscin o mtodo de exhaucin.
El trmino proviene del ingls method of exhaustion (que podra ser traducido como mtodo por agotamiento, ya que la Real Academia Espaola no ha aceptado an el sustantivo exhauscin, a pesar de reconocer el adjetivo exhausto). El ingls exhaustion proviene del latn exhausti (agotamiento).
Historia: El sofista Antifonte (430 a. C.) trat de determinar el rea del crculo inscribiendo en l un mayor nmero de tringulos, cada vez ms pequeos, hasta que su rea se colmara. Un ejemplo ms famoso del mtodo exhaustivo o por agotamiento es el del clculo de la longitud de una circunferencia efectuado por Arqumedes. l utiliz dos mtodos: el mtodo de agotamiento, inscribiendo polgonos regulares en una circunferencia de radio unitario, y el mtodo de compresin, circunscribiendo polgonos a la circunferencia.
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 3 De este modo, al aumentar el nmero de lados de los polgonos, las figuras tendern a acercarse a la forma de la circunferencia, tanto que Arqumedes pudo obtener una medida bastante precisa del nmero .
El mtodo de agotamiento est descrito en el Mtodo, un libro de Arqumedes en el que se explica este procedimiento. Es la base de los conceptos que en el siglo XVII permitieron a Isaac Newton y a Leibniz unificar el clculo diferencial con el integral, lo cual conllev la posterior definicin rigurosa de lmite de una funcin por Bernard Bolzano, Cauchy y Weierstrass. El mtodo de agotamiento es el precursor del concepto de Suma de Riemann que permite definir con rigor la integral de una funcin en un intervalo.
Bsqueda Exhaustiva:
La bsqueda exhaustiva es una tcnica general de resolucin de problemas. Se realiza una bsqueda exhaustiva y sistemtica en el espacio de soluciones. Por ello, suele resultar ineficiente. La bsqueda se suele realizar recorriendo un rbol con el que se representan las posibles soluciones. Hay algunos mtodos de recorrido del rbol: Recorrido en anchura (consiste en visitar todos los elementos del rbol una sola vez, de la Forma que primero se visitan los elementos del nivel 0, luego los del nivel 1, y as sucesivamente. En cada nivel, se visitan los elementos de izquierda a derecha). Backtracking (el algoritmo realiza una bsqueda en profundidad en el rbol de soluciones del problema). Branch and Bound (ramificacin y acotacin).
La solucin de un problema se puede expresar como una tupla (x1, x2, ..., xn ), satisfaciendo unas restricciones P(x1, x2, ..., xn) y tal vez optimizando una cierta funcin objetivo. En cada momento, el algoritmo se encontrar en un cierto nivel k, con una solucin parcial (x1, ..., xk ). Cada conjunto de posibles valores de la tupla representa un nodo del rbol de soluciones. Se sigue hasta que la solucin parcial sea una solucin completa del problema, o hasta que no queden ms posibilidades por probar.
Se recorre un rbol de soluciones. Sin embargo, este rbol es implcito, no se almacena en ningn lugar.
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 4 El recorrido se hace en un cierto orden. Por ejemplo, con backtracking se hace en profundidad:
Los algoritmos de Backtracking y Branch and Bound se suelen aplicar en la resolucin de un gran nmero de problemas, muy especialmente en los de optimizacin. Estos algoritmos realizan una bsqueda exhaustiva y sistemtica en el espacio de soluciones del problema. Suelen ser muy ineficientes. Se utilizan para resolver problemas para los que no existe un algoritmo eficiente para resolverlos.
Backtracking Es una tcnica general de resolucin de problemas, que suele aplicarse sobre todo a juegos y problemas de ptimizacin. Realiza una bsqueda exhaustiva y sistemtica en el espacio de soluciones del problema. La solucin de un problema de backtracking se puede expresar como una tupla (x1,x2,,xn), que satisface una restricciones R(x1,x2,,xn) y a veces optimizando una funcin objetivo.
En cada momento el algoritmo se encontrar en un cierto nivel k, con una solucin parcial (x1,x2,,xk) (con k<=n). Si puede aadirse un elemento xk+1 a la solucin parcial se avanza al nivel k+1. Si no se prueban otros valores vlidos para xk. Si no existe ningn valor que sea vlido por probar, se retrocede al nivel anterior k-1. Se continua con este proceso hasta que la solucin parcial sea una solucin del problema o hasta que no queden ms posibilidades por probar (en el caso de que no se encuentre ninguna solucin o se busquen todas las soluciones del problema). En definitiva, el algoritmo realiza una bsqueda en profundidad en el rbol de soluciones del problema.
x 3
x 2
x 1
1 2 1 1 3 6 7 1 1 1 1 x 3
4 5 8 9 1 1 x 2
x 1
1 Por realizar una bsqueda exhaustiva en el espacio de soluciones del problema, los algoritmos de backtracking son bastante ineficientes.
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 5 En general, se tienen tiempos con rdenes de complejidad factoriales o exponenciales. Por esto, los algoritmos de backtracking se utilizan en problemas para los que no existen un algoritmo eficiente que los resuelva.
Problema N-Reinas
El problema de las N-Reinas consiste en colocar n reinas en un tablero de ajedrez de tamao n*n de forma que las reinas no se amenacen (una reina amenaza a otra si est en la misma la, columna o diagonal) segn las normas del ajedrez. Se busca encontrar una solucin o todas las soluciones posibles. Este problema puede resolverse utilizando un esquema de backtracking.
Cualquier solucin del problema estar formada por una n-tupla (x1,x2,,xn), dnde cada xi indica la columna donde la reina de la fila i-sima es colocada.
Las restricciones para este problema consisten en que dos reinas no pueden colocarse en la misma fila, ni en la misma columna ni en la misma diagonal.
Representacin del problema de la N Reinas: Para representar el problema, se podra plantear como una matriz de NxN enteros, donde un 1 signica que la reina est en esa posicin, y un 0 que la casilla est vaca. Resulta una representacin ineciente, ya que se usa ms espacio del necesario. Otra opcin es hacer uso de un vector de N enteros, donde cada posicin corresponde a una columna del tablero, y el entero representa la la en la que se encuentra la reina dentro de dicha columna.Ms eciente y ms sencilla de usar. Soluciones: Como cada posicin del vector representa una columna, no pueden situarse dos reinas en la misma columna.Si el vector tiene varios enteros iguales, quiere decir que esas reinas estn en la misma la, por lo que sera incorrecta la solucin. Queda el problema de las diagonales, ya que dos reinas estn en la misma diagonal si: Mismo valor de la - columna (Diagonal descendente) Mismo valor de la + columna (Diagonal ascendente)
Resolucin secuencial La solucin secuencial se podra plantear como un backtracking. La resolucin resulta poco eciente, para tamao grande del tablero dado que puede tardar demasiado. Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 6
Plantear la resolucin del problema de las N Reinas. Se puede tomar como modelo el siguiente planteo:
Ejercicio: Resolver el problema de las N Reinas utilizando la bsqueda exhaustiva con el mtodo de backtraking.
Backtracking paralelo
Esquema usado no es puramente paralelo, es un esquema utilizado en programacin secuencial que se intenta paralelizar. Esto supone que la ganancia de tiempo no sea tan elevada como se pudiera esperar a priori. Se intenta distribuir el espacio de bsqueda entre los distintos procesadores, de forma que cada uno busque la solucin del problema en un subespacio de soluciones distinto. As se exploran varias ramas del rbol de soluciones al mismo tiempo por distintos procesadores. Aumentan las posibilidades de encontrar la solucin del problema en menor tiempo.
1 1 7 8 9 1 1 1 1 1 1 Soluciones 6 5 4 3 2 1
P 0 P 1
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 7
Un factor crtico a la hora de formular un algoritmo de backtracking en paralelo es cmo se realizar la distribucin del espacio de bsqueda entre los distintos procesadores. Dos alternativas: Asignacin esttica Asignacin dinmica Un procesador expande el nodo raz y genera varios nodos. A cada procesador se le asigna un nmero de estos nodos. As se divide el espacio de bsqueda global entre los distintos procesadores. Cada procesador comienza a buscar la solucin en el espacio de bsqueda que le corresponda, siguiendo el proceso normal de backtracking. No se necesitan comunicaciones entre procesos. Un problema que surge es que no se sabe a priori si se divide el espacio de bsqueda equitativamente entre los distintos procesadores. Puede haber desequilibrio entre la carga de trabajo de los procesadores. A un procesador puede que se le asigne poco trabajo y est la mayor parte de tiempo inactivo. Backtracking Paralelo: con Asignacin esttica
P 1 P 0
P 0
P 1
Cada procesador trabaja en una parte del espacio de bsqueda. Cuando un procesador termina de trabajar, solicita ms trabajo a otro procesador que tiene ms trabajo. El Proceso: Cada procesador dispone una pila en su espacio local para guardar nodos no expandidos. Cuando un procesador expande un nodo, los nuevos nodos que se crean se introducen en la pila. Cuando la pila de un procesador esta vaca, el procesador solicita nodos de la pila de otro procesador. Al principio, el espacio total de bsqueda es asignado a un procesador y a los dems procesadores no se les asigna ningn trabajo. Ese procesador ser el encargado de distribuir inicialmente el trabajo cuando los dems procesadores se lo soliciten. A los procesos que envan trabajo se les denomina donadores y a los que lo solicitan y lo reciben se les denomina receptores. Un procesador puede estar en 2 estados: Activo: Est realizando algn trabajo. Inactivo: Al procesador no le queda ningn nodo por explorar en su pila y esta solicitando trabajo a otros procesadores.
Estado inactivo: El procesador selecciona un procesador donador y le enva una peticin de trabajo. Si recibe trabajo del donador, se activa y comienza a trabajar.
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 8 Si recibe un mensaje de reject (el procesador donador esta inactivo), selecciona a otro procesador donador para enviarle una peticin de trabajo. Este proceso se repite hasta que el procesador recibe trabajo del donador o hasta que todos los procesadores entran en estado inactivo.
Estado activo: El procesador realiza una cantidad de trabajo fijo (expande un n determinado de nodos). Cuando termina de realizar el trabajo, chequea si existen peticiones de trabajo a cargo de los dems procesadores. Si recibe alguna peticin de trabajo, el procesador donador particiona en dos partes su pila de nodos, y enva una parte al procesador que realizo la peticin. Cuando el procesador ha recorrido todo su espacio de bsqueda (su pila esta vaca), entra en estado inactivo.
Servicio pendiente de recibir mensajes Procesador Activo Realizar una cantidad de trabajo fija Seleccionar un procesador y solicitarle trabajo Servicio pendiente de recibir mensajes Comienza a trabajar Termina el trabajo Procesador I nactivo No existe trabajo disponible Enviar una peticin Cuando un procesador encuentra la solucin, enva un mensaje de broadcast a todos los procesadores para que estos paren la bsqueda. Si no se recibe este mensaje, el algoritmo terminar cuando todos los procesos estn en estado inactivo.
Los algoritmos paralelos de bsqueda en un rbol de soluciones tienen 2 caractersticas fundamentales que determinan su rendimiento: La estrategia utilizada para dividir el trabajo de un procesador cuando ste recibe una peticin de trabajo. El esquema usado para determinar el procesador donador cuando un procesador entra en estado inactivo.
Estrategia de Divisin del trabajo Cuando un procesador donador recibe una peticin de trabajo de otro procesador y tiene nodos su pila, el procesador donador divide su pila en dos y una de ellas se enva al proceso que realizo la peticin. Si se enva poco trabajo, el receptor rpidamente pasa a estar en estado inactivo. Si se enva demasiado trabajo, el donador entrar rpidamente en estado inactivo. Lo ideal sera dividir la pila en dos partes iguales de modo que el espacio de bsqueda representado por cada una sea el mismo.A este mtodo se le llama Divisin por la mitad. Pero la dificultad reside en estimar el tamao que tendrn los subrboles asociados a cada uno de los nodos que se encuentran en la pila. Normalmente los nodos cercanos al fondo de la pila (nodos con profundidad cercana al nodo raz del procesador) tienen ms posibilidades de generar rboles de mayor tamao. Los nodos ms cercanos al tope de la pila (nodos que estn a mayor profundidad) tienen ms posibilidades de generar rboles de menor tamao.
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 9 Para evitar mandar cantidades pequeas de trabajo, los nodos de la pila que estn ms all de una determinada profundidad no son enviados. A esta profundidad se le llama cota de profundidad. Algunas estrategias posible para la divisin del trabajo son: Enviar nodos cercanos al fondo de la pila Enviar nodos cercanos a la cota de profundidad. Enviar la mitad de los nodos que estn entre el fondo de la pila y la cota de profundidad. La idoneidad de una estrategia u otra depender de la naturalidad del espacio de bsqueda.
Esquemas de balanceo de carga Los esquemas de balanceo de carga se utilizan para decidir qu procesador donador se elige cuando un procesador entra en estado inactivo. Algunos esquemas posibles son los siguientes: Round Robin Asncrono Round Robin Global Seleccin aleatoria
Round Robin Asncrono Cada procesador mantiene una variable local llamada target. Cuando un procesador termina de trabajar, usa el valor de su variable target para determinar el procesador donador al que enviar la peticin de trabajo. Cada vez que se enva una peticin, se incrementa en una unidad el valor de la variable target del procesador: target = ((target+1) modulo p) El valor inicial de target ser: target0 = ((n procesador+1) modulo p) Round Robin Global Existe una nica variable target almacenada en el procesador P0. Cuando un procesador necesita trabajo, solicita y recibe el valor de la variable target de P0. Una vez que se sabe cual es el procesador donador, el procesador le enva una peticin de trabajo. Luego, P0 incrementa la variable target antes de responder a otra peticin. target = ((target+1) modulo p) Este esquema garantiza que sucesivas peticiones de trabajo se distribuyen uniformemente entre todos los procesadores. La desventaja principal de este esquema es que el procesador P0 debe gestionar todas las peticiones de acceso a la variable target, y esto puede convertirse en un cuello de botella. Seleccin aleatoria Es el esquema ms simple de todos. Cuando un procesador entra en estado inactivo, se elige un procesador al azar. Cada procesador tiene la misma probabilidad de ser seleccionado como donador. As se asegura que las peticiones se distribuyan uniformemente.
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 10
Deteccin de terminacin Cuando un procesador encuentra una solucin del problema se enva un mensaje de broadcast a todos los procesadores para indicarle que terminen. Pero cuando no se encuentra ninguna solucin. Cmo detectar cuando termina el proceso de bsqueda? Dos algoritmos para detectar la terminacin de la bsqueda. o Algoritmo de terminacin de Dijkstras. o Algoritmo de terminacin basado en rbol.
- Algoritmo de terminacin de Dijkstras Los procesadores se organizan en un anillo lgico y se irn pasando un token. Un procesador puede estar en dos estados: blanco o negro. Un token tambin puede estar en dos estados: blanco o negro. Inicialmente todos los procesadores estn en estado blanco. El algoritmo es el siguiente: Cuando P0 esta inactivo, el procesador crea un token y enva un token blanco al procesador P1. Si el procesador Pi enva trabajo al procesador Pj (i>j), el procesador Pi cambia a estado negro. Si el procesador Pi tiene el token y est inactivo, pasa el token al Pi+1. Si Pi est en estado negro, el color del token se establecer a negro antes de pasarlo a Pi+1. Si Pi esta en estado blanco, el token se pasa sin cambiarlo. Cuando Pi pasa el token a Pi+1 pasa a estado blanco. El algoritmo termina cuando a P0 le llega un token blanco.
- Algoritmo de terminacin basado en rbol Se asocia un peso a cada procesador. Inicialmente, P0 tiene todo el trabajo y se le asocia un peso de 1. Cuando Pi particiona y manda trabajo a otro procesador, Pi se queda con la mitad del peso y la otra mitad se la enva al otro procesador. Cuando un procesador termina su trabajo, se devuelve el peso al procesador del que se recibi el trabajo. El algoritmo termina cuando el peso del procesador P0 vuelve a ser 1.
w1=0.5 w3=0.2 w0=0.2 w0=0.5 w1=0.5 w0=1 Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 12
Branch and Bound Es una tcnica similar a Backtracking. Suele utilizarse en problemas de optimizacin. Esta tcnica puede verse como una mejora del esquema de backtracking. Al igual que en backtracking, el algoritmo realiza una bsqueda sistemtica en un rbol de soluciones. Pero Branch and Bound aade dos caractersticas nuevas: Estrategia de ramificacin: La bsqueda se guiar por estimaciones de beneficio que se harn en cada nodo. Estrategia de poda: Para eliminar nodos que no lleven a la solucin ptima. Estimacin de cotas de beneficio en cada nodo. Para cada nodo tendremos la siguiente informacin: Cota inferior (CI) y cota superior (CS) de beneficio que se puede obtener a partir del nodo. Determinan cuando se puede realizar una poda. Estimacin del beneficio que se puede encontrar a partir del nodo. Ayuda a decidir el orden de evaluacin de los nodos.
Estrategia de poda: Suponemos un problema de maximizacin. Se han recorrido varios nodos y ha estimado la cota inferior y superior de cada uno de ellos.
1
El nodo 2 puede podarse, ya que el nodo 5 tiene una cota inferior mayor que la cota superior del nodo 2.
Estrategia de ramificacin Se pueden utilizar distintas estrategias para recorrer el rbol de soluciones. Puede recorrerse en profundidad, en anchura, segn el beneficio estimado, etc. Se utiliza una lista de nodos vivos (contiene nodos generados y an no explorados). Algoritmo: Sacar un nodo de la lista de nodos vivos Generar sus descendientes Si no se podan, se introducen en la lista de nodos vivos. Qu criterio se utiliza para seleccionar el nodo que se saca de la lista de nodos vivos? Estrategia FIFO Estrategia LIFO Estrategia del menor costo 2 3 4 9 3 15 5 2 12 25 1 2 3 4 5 9 3 1 2 2 1 x Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 13
Complejidad El tiempo de ejecucin depende: Nmero de nodos recorridos. Tiempo gastado en cada nodo. En el caso promedio se suelen obtener mejoras respecto al algoritmo de backtracking. Pero en algunos casos, el tiempo puede ser peor. Se debe buscar un compromiso entre la exactitud de las cotas y el tiempo utilizado en calcularlas.
En general, el esquema de branch and bound suele obtener mejores resultados que el de backtracking. Sin embargo sigue siendo muy ineficiente.
Branch and Bound paralelo Al igual que suceda con backtracking, no es un esquema puramente paralelo. En el proceso secuencial, se necesita informacin global para poder hacer la poda de nodos. Se puede paralelizar distintos tipos de niveles. Tipos de niveles: Bsqueda paralela: ejecutando el algoritmo con distintos parmetros sobre el espacio global de bsqueda en varios procesadores. Clculo de cotas, de estimaciones, y criterio selec. Se paralelizan partes del algoritmo. La estructura del algoritmo no cambia. Por ejemplo, se expanden en paralelo los nodos. Se divide el espacio de bsqueda entre los procesadores. De la lista de nodos vivos se asignan nodos distintos a cada procesador. La distribucin del trabajo puede ser esttica o dinmica, del mismo modo que suceda con backtracking.
Asignacin esttica A cada procesador se le asigna un nmero fijo de nodos de la lista de nodos vivos. Los procesos pueden comunicarse la cotas o no. Si no se comunican las cotas: - Se necesitan pocas comunicaciones entre procesos. - Puede que se estudien nodos que se podan haber podado. Si se comunican las cotas: - Se evita que los procesadores estudien nodos innecesarios. - Se necesitan bastantes comunicaciones entre los procesos. Adems, al asignar los nodos estticamente puede darse un desbalanceo de carga de trabajo entre los procesadores.
Asignacin dinmica: Puede utilizarse una bolsa de tareas para asignar los nodos a los procesos de forma dinmica, como se haca con backtracking. Pero ahora tenemos la opcin de comunicar las cotas. Los procesadores toman los nodos y los exploran y depositan los descendientes de los nodos explorados en la bolsa de trabajo. Existen dos estrategias para depositar los nodos: inmediata o pospuesta. - Actualizacin inmediata Cuando se generan los descendientes de un nodo se introducen de inmediato en la bolsa. Se realizan muchas comunicaciones. - Actualizacin pospuesta Cuando se generan los descendientes de un nodo no se introducen de inmediato en la bolsa, se sigue generado descendientes a partir de estos. Cada cierto tiempo se introducen en la bolsa. Entre las ventajas encontramos que pueden podarse algunos nodos y no se accede tanto a la bolsa de tareas. Sistema de memoria compartida: se tiene una estructura centralizada de donde los procesadores toman e introducen tareas. Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 14
Sistema de memoria distribuida: se tienen bolsas de trabajo en uno o en varios procesadores. Las peticiones y el depsito de los trabajos conllevan comunicaciones. Se descentraliza la bolsa de tareas. La actualizacin es inmediata o pospuesta. Comunicacin de cotas: - Si se comunican las cotas con mucha frecuencia, se podrn podar ms nodos pero puede pederse eficiencia al realizar tantas comunicaciones. - Si no se comunican con mucha frecuencia, no se podarn tantos nodos pero no habr tantas comunicaciones. Una nica bolsa de trabajos: - Mayor contencin. - La bolsa puede convertirse en un cuello de botella. Varias bolsas de trabajos - Aumenta el desbalanceo de las tareas. Se trata de buscar un compromiso entre el desbalanceo y la contencin.
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 15 Algunos ejemplos: Suma de nmeros Dado un conjunto de numeros enteros {13, 11, 7}, encontrar si existe algn subconjunto cuya suma sea exactamente 20. La primera decisin a tomar: cmo es la forma del rbol? - Preguntas relacionadas: .Qu significa cada valor de la tupla solucion (x1, ..., xn)? Cmo es la representacin de la solucin al problema? Posibilidad 1) rbol binario: En cada nivel i decidir si el elemento i est o no en la solucin. Representacin de la solucin: (x1, x2, x3), donde xi= (0, 1).
Cada nodo representa un paso del algoritmo, una solucin parcial en cada momento dado. El rbol indica un orden de ejecucin (recorrido en profundidad) pero no se almacena en ningn lugar. Una solucin es un nodo hoja con valor de suma 20. Una posible mejora es que en cada nodo llevamos el valor de la suma hasta ese punto. Si el valor es mayor que 20: retroceder al nivel anterior.
Posibilidad 2) rbol combinatorio: En cada nivel i decidir que elemento se aade (1, 2 o 3). Representacin de la solucin (s1, ..., sm), donde m<=n y s pertenece a {1, 2, 3}.
Cada nodo es una posible solucin. Ser valida si la suma es 20. El recorrido es tambin en profundidad. Necesitamos funciones para generar los nodos, para descartar nodos y para saber si un nodo es solucin. La eficiencia del algoritmo, depende del nmero de nodos, por lo que seria conveniente tener algn criterio para eliminar nodos.
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 16 Tipos comunes de rboles: rboles binarios. rboles k-arios. rboles permutacionales. rboles combinatorios.
rboles binarios: s= (x1, x2, ..., xn), con xi {0, 1}
Tipo de problemas para los cuales pueden utilizarse: elegir ciertos elementos de entre un conjunto, sin importar el orden de los elementos.
rboles k-arios: s= (x1, x2, ..., xn), con xi pertenece a {1,..,k}
Tipo de problemas para los cuales pueden utilizarse: varias opciones para cada xi.
rboles permutacionales: s= (x1, x2, ..., xn), con xi pertenece a {1,..,n} y xi xj
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 17 Tipo de problemas: los xi no se pueden repetir.
rboles combinatorios: s= (x1, x2, ..., xm), con mn, xi pertenece a {1,..,n} y xi < xi+1
Tipo de problemas: los mismos que con rboles. binarios.
Cuestiones a resolver antes de programar: Qu tipo de rbol es adecuado para el problema? Cmo es la representacin de la solucin? Cmo es la tupla solucin? .Qu indica cada xi y qu valores puede tomar? Cmo generar un recorrido segn ese rbol? - Generar un nuevo nivel. - Generar los hermanos de un nivel. - Retroceder en el rbol. Qu ramas se pueden descartar por no conducir a soluciones del problema? (uso de variables auxiliares, que se modifican al moverse por el rbol) Poda por restricciones del problema. Poda segn el criterio de la funcin objetivo.
Backtracking Esquema general: Problema de satisfaccin de restricciones: buscamos cualquier solucin que cumpla cierta propiedad, y se supone que existe alguna.
Backtracking (var s: TuplaSolucin) nivel = 1 s = s INICIAL fin = false repetir Generar (nivel, s) si Solucin (nivel, s) entonces fin = true sino si Criterio (nivel, s) entonces nivel = nivel + 1 sino mientras NOT MasHermanos (nivel, s) hacer Retroceder (nivel, s) hasta fin
Variables: s: almacena la solucin parcial hasta cierto punto. s INICIAL : valor de inicializacin. nivel: indica el nivel actual en el que se encuentra el algoritmo. fin: valdr true cuando hayamos encontrado alguna solucin.
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 18
Uso de variables auxiliares para eliminacin de nodos o evitar clculos, por ejemplo, suele ser comn utilizar variables temporales con el valor actual (beneficio, peso, etc.) de la tupla solucin.
Funciones: Generar (nivel, s): genera el siguiente hermano, o el primero, para el nivel actual. Solucin (nivel, s): comprueba si la tupla (s[1], ..., s[nivel]) es una solucion valida para el problema. Criterio (nivel, s): comprueba si a partir de (s[1], ...,s[nivel]) se puede alcanzar una solucin valida. En otro caso se rechazaran todos los descendientes (poda). MasHermanos (nivel, s): devuelve true si hay mas hermanos del nodo actual que todavia no han sido generados. Retroceder (nivel, s): retrocede un nivel en el rbol de soluciones. Disminuye en 1 el valor de nivel, y posiblemente tendr que actualizar la solucin actual, quitando los elementos retrocedidos.
Backtracking: suma de nmeros Ejemplo, problema de subconjunto de nmeros que suma un valor P. Variables: Representacin de la solucin con un rbol binario. s: array [1..n] de {-1, 0, 1} s[i] = 0 , el numero i-esimo no se utiliza s[i] = 1 , el numero i-esimo si se utiliza s[i] = -1 , valor de inicializacion (numero i-esimo no estudiado) s INICIAL : (-1, -1, ..., -1) fin: valdr true cuando se haya encontrado solucin. suma: suma acumulada hasta ahora (inicialmente 0).
Funciones: Generar (nivel, s) s[nivel] += 1 si s[nivel]==1 entonces suma += num[nivel] Solucin (nivel, s) devolver (nivel==n) Y (suma==P) Criterio (nivel, s) devolver (nivel<n) Y (sumaP) MasHermanos (nivel, s) devolver s[nivel] < 1 Retroceder (nivel, s) suma -= num[nivel]*s[nivel] s[nivel] = -1 nivel -= 1
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Backtracking: variaciones Variaciones del esquema general: 1) .Y si no es seguro que exista una solucin? 2) .Y si queremos almacenar todas las soluciones (no solo una)? 3) .Y si el problema es de optimizacin (maximizar o minimizar)?
Si puede no existir solucion: Backtracking (var s: TuplaSolucin) nivel = 1 Prof. Ing. Daniela E. Daz Pgina: 19
s = s INICIAL
fin = false repetir Generar (nivel, s) si Solucion (nivel, s) entonces fin:= true sino si Criterio (nivel, s) entonces nivel = nivel + 1 sino mientras (nivel > 0) and NOT MasHermanos (nivel, s) hacer Retroceder (nivel, s) finsi hasta fin OR (nivel==0) Para poder generar todo el rbol de backtracking
Cuando queremos almacenar todas las soluciones: Backtracking (var s: TuplaSolucin) nivel = 1 s = s INICIAL
O bien, retroceder despus de encontrar una solucin En algunos problemas los nodos intermedios pueden ser soluciones fin = false repetir Generar (nivel, s) si Solucin (nivel, s) entonces Almacenar (nivel, s) si Criterio (nivel, s) entonces nivel := nivel + 1 sino mientras (nivel>0) AND NOT MasHermanos (nivel, s) hacer Retroceder (nivel, s) finsi hasta nivel==0
|
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 20
Cuestiones a considerar: - Modificar el programa nmeros.pl para que obtenga, de todos los subconjuntos que suman la cantidad dada, el que este formado por menos elementos. - Hacer un programa que resuelva esta versin de optimizacin del problema de la suma de nmeros siguiendo un esquema de backtracking. Comparar experimentalmente el tiempo de ejecucin de las dos versiones, justificando tericamente las diferencias.
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 21 Bsqueda Heurstica A qu se llama Bsqueda? La bsqueda es un mtodo computacional para resolver problemas. Qu problemas se pueden resolver a travs de bsquedas? single-agent path-finding: nico agente encuentra camino two-player games: juegos de dos jugadores constraint satisfaction: satisfaccin de restricciones Caractersticas: problemas difciles: NP-completos la solucin se calcula por enumeracin se supone que requieren inteligencia Inteligencia Artificial
Heurstica: EUREKA !!
Origen: heuriskein (encontrar en griego) Heurstica: procedimiento: criterio que puede resolver un problema pero que no hay garanta de que siempre lo resuelva. Funcin: estimacin del coste necesario para alcanzar una solucin desde el estado actual.
Los mtodos de bsqueda heurstica disponen de alguna informacin sobre la proximidad de cada estado a un estado objetivo, lo que permite explorar en primer lugar los caminos ms prometedores.
Son caractersticas de los mtodos heursticos: No garantizan que se encuentre una solucin, aunque existan soluciones. Si encuentran una solucin, no se asegura que sta tenga las mejores propiedades (que sea de longitud mnima o de coste ptimo). En algunas ocasiones (que, en general, no se podrn determinar a priori), encontrarn una solucin (aceptablemente buena) en un tiempo razonable.
Para resolver una bsqueda a travs de heurstica deben evaluarse dos efectos: positivo: ahorra esfuerzo de bsqueda negativo: coste de clculo de la heurstica en cada nodo Efecto neto positivo si: ahorro > coste
En general, los mtodos heursticos son preferibles a los mtodos no informados en la solucin de problemas difciles para los que una bsqueda exhaustiva necesitara un tiempo demasiado grande. Esto cubre prcticamente la totalidad de los problemas reales que interesan en Inteligencia Artificial.
El concepto de heurstica es difcil de aprehender. Newell, Shaw y Simon en 1963 dieron la siguiente definicin:
"Un proceso que puede resolver un problema dado, pero que no ofrece ninguna garanta de que lo har, se llama una heurstica para ese problema".
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 22
Si nos planteamos seguir concretando como aprovechar la informacin sobre el problema en sistemas de produccin, la siguiente idea consiste en concentrar toda la informacin heurstica en una nica funcin que se denomina funcin de evaluacin heurstica. Se trata de una funcin que asocia a cada estado del espacio de estados una cierta cantidad numrica que evala de algn modo lo prometedor que es ese estado para acceder a un estado objetivo. Habitualmente, se denota esa funcin por h(e).
La funcin heurstica puede tener dos interpretaciones. Por una parte, la funcin puede ser una estimacin de lo prximo que se encuentra el estado de un estado objetivo. Bajo esta perspectiva, los estados de menor valor heurstico son los preferidos. Pero en otros casos puede suceder que lo que convenga sea maximizar esa funcin.
Ejemplos de heursticas para algunos problemas concretos. Para el problema del 8-puzzle tenemos la siguientes heursticas: a) La basada en la distancia Manhattan (o distancia taxi). Se asocia a cada casilla un nmero que es la suma de las distancias horizontal y vertical a su posicin en el tablero objetivo (esto es, la suma de diferencias de sus coordenadas x e y). La funcin heurstica es la suma de las distancias de cada una de las casillas (excluyendo la que se encuentra vaca). 2 3 1 8 4 7 6 5 H(Ei)=2 (1 de la casilla 1 ms 1 de la casilla 8)
b) Otra heurstica, mucho ms simple, consiste en contar el nmero de casillas que estn fuera de su sitio (respecto al tablero objetivo). Es una heurstica ms pobre que la anterior, puesto que no usa la informacin relativa al esfuerzo (nmero de movimientos) necesario para llevar una pieza a su lugar.
Otra heurstica posible para el 8-puzzle, si el estado objetivo es el recogido en la figura anterior, es la siguiente: h(e) = 3 * seq(e), donde seq(e) cuenta 1 si hay un dgito central en e y 2 por cada dgito x no central que no es seguido (en el sentido de la agujas del reloj) por su sucesor x+1 (imponemos por convenio que 8 + 1 = 1). Podra realizarse el clculo del valor de esta heurstica para los estados que aparecen en la figura anterior.
El problema del viajante: Estado inicial: un viajante se encuentra en una capital de provincia. Estado meta: quiere viajar a otra capital por la mejor ruta posible (la ms corta)
Medios: Las capitales de provincia colindantes estn unidas por carreteras; se dispone de un mapa con la disposicin de las provincias y sus "coordenadas" en kilmetros respecto al "centro" (por ejemplo, Madrid, con coordenadas (0,0)). Una funcin heurstica para ese problema consiste en asignar a cada estado un valor que es la distancia area (en lnea recta) con el estado objetivo. Dicha distancia es la distancia eucldea entre las coordenadas de dos ciudades.
Se elige una ciudad como siguiente en el camino cuando la suma de la distancia a la ciudad actual ms la distancia area a la meta sea la menor
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 23 Una persona quiere viajar de Madrid a Santander considerando el mapa de carreteras de la figura.
Cuatro alternativas en la primera etapa: Cceres, Palencia, Zaragoza y Valencia.
Funcin heurstica considerando la distancia area: Distancia (Madrid, Santander)=Distancia(Madrid, Palencia)+Distancia area (Palencia, Santander) que es ms pequea que la obtenida a travs de Cceres Distancia (Madrid, Santander)=Distancia(Madrid, Cceres)+Distancia area (Cceres, Santander)
El problema del viajante (tambin conocido como problema del viajante de comercio o por sus siglas en ingls: TSP (Traveling Salesman Problem), es uno de los problemas ms famosos (y quizs el mejor estudiado) en el campo de la optimizacin combinatoria computacional. A pesar de la aparente sencillez de su planteamiento, el TSP es uno de los ms complejos de resolver y existen demostraciones que equiparan la complejidad de su solucin a la de otros problemas aparentemente mucho ms complejos que han retado a los matemticos desde hace siglos.
DEFINICIN: Sean N ciudades de un territorio. La distancia entre cada ciudad viene dada por la matriz D: NxN, donde d[x,y] representa la distancia que hay entre la ciudad X y la ciudad Y. El objetivo es encontrar una ruta que, comenzando y terminando en una ciudad concreta, pase una sola vez por cada una de las ciudades y minimice la distancia recorrida por el viajante. Es decir, encontrar una permutacin
P = {c,c1,...,c} 0n 1 tal que sea mnimo.
El TSP est entre los problemas denominados NP-Completos, esto es, los problemas que no se pueden resolverse en tiempo polinomial en funcin del tamao de la entrada (en este caso el nmero N de ciudades que el viajante debe recorrer). Sin embargo, algunos casos concretos del problema s han sido resueltos hasta su optimizacin, lo que le convierte en un excelente banco de pruebas para algoritmos de
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 24 optimizacin que pertenezcan a la misma familia (lo que en jerga matemtica se denominan problemas isomorfos). La solucin ms directa es la que aplica la fuerza bruta: evaluar todas las posibles permutaciones y quedarse con la mejor. No obstante, el nmero de posibles ciclos viene dado por el factorial del nmero de ciudades (N!) y esto hace que la solucin por fuerza bruta sea impracticable para valores de N incluso moderados. Por ejemplo, si un ordenador fuese capaz de calcular la longitud de cada ciclo en un microsegundo, tardara algo ms de 3 segundos en resolver el problema para 10 ciudades, algo ms de medio minuto en resolver el problema para 11 ciudades y. 77.146 aos en resolver el problema para slo 20 ciudades. Se puede demostrar que el requerimiento de volver a la ciudad de partida no cambia la complejidad computacional del problema. Dada la explosin combinatoria de las posibles soluciones, los algoritmos clsicos no son capaces de resolver el problema general. Por ello, a su solucin se han aplicado distintas tcnicas computacionales: heursticas, redes de Hopfield, etc. Sin embargo, desde el punto de vista terico, estas aproximaciones no suponen una resolucin real del TSP y slo ofrecen soluciones aproximadas suficientemente aceptables.
Hay algoritmos que se basan en una configuracin concreta del problema. Por ejemplo, algunos algoritmos de ramificacin y consolidacin se pueden utilizar para resolver problemas de entre 40 a 60 ciudades. Otros han mejorado a stos con tcnicas reminiscentes de la programacin lineal que permiten resolver el TSP para valores de N entre 120 y 200 ciudades. En el ao 2001 se utiliz una red de 110 ordenadores para resolver el TSP para las 15.112 poblaciones de Alemania y utilizando el equivalente computacional a 22,5 aos de un PC. En mayo del 2004 se aplicaron algunas de estas tcnicas para la resolucin del problema aplicado a las 24.978 poblaciones suecas en un ciclo de unos 72.500 Km (probndose adems que no se poda encontrar un ciclo ms corto). Los algoritmos genticos basados en heursticas no encuentran soluciones exactas, pero permiten encontrar aproximaciones suficientemente buenas (un 97% de optimizacin) y se pueden aplicar a conjuntos de ciudades muy grandes (redes con millones de nodos) con tiempos de ejecucin razonables en un superordenador (semanas o meses).
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 25 El problema tiene considerables aplicaciones prcticas, a parte de las ms evidentes en reas de logstica de transporte. Por ejemplo, en robtica, permite resolver problemas de fabricacin para minimizar el nmero de desplazamientos para conseguir realizar un nmero determinado de perforaciones en una plancha o en un circuito impreso.
Ejercicio: Hallar la ruta de distancia mnima que logre unir todas las capitales de provincias de la Repblica Argentina, utilizando un mtodo exhaustivo. Puede resolver el problema? Justificar.
Ejercicio: Hallar la ruta de distancia mnima que logre unir todas las capitales de provincias de la Repblica Argentina, utilizando la siguiente heurstica: Desde cada ciudad ir a la ciudad ms cercana no visitada. Presentar un mapa de la Repblica con el recorrido indicado. Adems indicar la ciudad de partida y la longitud del trayecto.
Ejercicio: Hallar la ruta de distancia mnima que logre unir todas las capitales de provincias de la Repblica Argentina, utilizando un algoritmo gentico. Comparar los resultados obtenidos con los del ejercicio anterior. Recomendaciones para el algoritmo: N = 50 Nmero de cromosomas de las poblaciones. M = 200 Cantidad de ciclos. Cromosomas: permutaciones de 23 nmeros naturales del 1 al 23 donde cada gen es una ciudad. Las frecuencias de crossover y de mutacin quedan a criterio del grupo.
Bsqueda informada: primero el mejor Funcin f(n): coste del nodo n Lista OPEN: nodos generados pero no testeados Primero el mejor: siguiente n con min f(x) x OPEN Rendimiento: mucho mejor que la bsqueda ciega
Algoritmo A* Heurstica: h(n) estima el coste de un camino ptimo de n a una solucin. g(n): es una medida del coste para ir desde el estado inicial hasta el nodo actual (suma de los costes o valores heursticos de todos los nodos). Es decir es el coste desde la raz hasta n. h(n) : admisible: si no sobreestima el coste ptimo. Es una estimacin del coste adicional necesario para alcanzar un nodo objetivo a partir del nodo actual, es decir, es una estimacin de lo que me queda por recorrer hasta la meta. A*: primero el mejor con f(n) = g(n) + h(n), h admisible
La funcin combinada f es una estimacin del coste necesario para alcanzar un estado objetivo por el camino que se ha seguido para generar el nodo actual (si se puede generar por varios caminos el algoritmo se queda con el mejor). Los nodos buenos deben poseer valores bajos.
En cada paso se selecciona el nodo ms prometedor que se haya generado hasta ese momento (funcin heurstica). A continuacin se expande el nodo elegido generando todos sus sucesores. Si alguna de ellos es meta el proceso acaba. Si no contino con el algoritmo.
Es parecido a la bsqueda en profundidad, pero si en una rama por la que estoy explorando no aparece la solucin la rama puede parecer menos prometedora que otras por encima de ella y que se haban ignorado. Podemos pues abandonar la rama anterior y explorar la nueva. Sin embargo la vieja rama no se olvida. Su ltimo nodo se almacena en el conjunto de nodos generados pero an sin expandir.
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 26
Usaremos para la resolucin dos listas de nodos (ABIERTA Y CERRADA) Abierta: nodos que se han generado y a los que se les ha aplicado la funcin heurstica, pero que an no han sido examinados (es decir, no se han generado sus sucesores) Es decir, es una cola con prioridad en la que los elementos con mayor prioridad son aquellos que tienen un valor ms prometedor de la funcin heurstica. Cerrada: nodos que ya se han examinado. Es necesaria para ver si cuando se genera un nuevo nodo ya ha sido generado con anterioridad. Algoritmo: 1. Empezar con ABIERTA conteniendo slo el nodo inicial. Poner el valor g de ese nodo a 0, su valor h al que corresponda, y su valor f a h+0, es decir, a h. 2. Inicializar CERRADA como una lista vaca. 3. Hasta que se encuentre una meta o se devuelva fallo realizar las siguientes acciones: 3.1 Si ABIERTA est vaca terminar con fallo; en caso contrario continuar. 3.2 Eliminar el nodo de ABIERTA que tenga un valor mnimo de f; llamar a este nodo m e introducirlo en la lista cerrada. 3.3 Si m es meta, abandonar el proceso iterativo iniciado en 2 devolviendo el camino recorrido (punteros a sus antepasados) 3.4 En caso contrario expandir m generando todos sus sucesores. 3.5 Para cada sucesor n de m: 1) Crear un puntero de n a m. 2) Calcular g(n)=g(m)+c(m,n), tal que c(a,b) es el coste de pasar de a a b. 3) Si n est en ABIERTA llamar n al nodo encontrado en dicha lista, aadirlo a los sucesores de m y realizar el siguiente paso: 3.1)Si g(n)<g(n), entonces redirigir el puntero de n a m y cambiar el camino de menor coste encontrado a n desde la raz; g(n)=g(n) y f(n)=g(n)+h(n). 4) Si n no cumple 3), comprobar si est en cerrada; llamar n al nodo encontrado en dicha lista y realizar las siguientes acciones: Si 3.1) no se cumple, abandonar 4); en caso contrario propagar el nuevo menor coste g(n) (por lo que tambin actualizarn los valores de f correspondientes(que llamaremos ni tal que i=1,2,, siendo sus costes anteriores g(ni )), realizando un recorrido en profundidad de stos, empezando en n y teniendo en cuenta las siguientes consideraciones: 4.1) Para los nodos descendientes ni cuyo puntero (que debe apuntar siempre al mejor predecesor hasta ese momento) conduzca hacia el nodo ni , actualizar g(ni )=g(ni) y f(ni)=g(ni)+h(ni) y seguir el recorrido hasta que se encuentre un ni que no tenga ms sucesores calculados o se llegue a un nodo en que ya ocurra que g(ni )=g(ni ), en cuyo caso se habra producido un ciclo y tambin habra que terminar la propagacin. 4.2) Para los nodos descendientes ni cuyo puntero no conduzca hacia el nodo n, comprobar si g(ni )< g(ni ), en cuyo caso se debe actualizar el puntero para que conduzca hacia el nodo n (mejor camino desde la raz encontrado hasta ese momento) y se contina el proceso de propagacin. 5) Si nno est en ABIERTA o en CERRADA, calcular h(n) y f(n)=g(n)+h(n), introducirlo en ABIERTA y aadirlo a la lista de sucesores de m.
Caractersticas: Es un mtodo completo de bsqueda, es decir, termina encontrando la solucin cuando sta exista para cualquier tipo de grafos. Es admisible. Es decir, no slo encuentra la solucin sino que la que encuentra es la optima si se cumple la siguiente condicin: Para todo n h(n) es menor o igual que h*(n), es decir, si la funcin heurstica que estima la distancia a la meta nunca puede superar la distancia real existente entonces A* garantiza encontrar la solucin ptima. Ventajas: Mtodo ms completo Solucin ptima Desventaja: El espacio: a menudo degenera en exponencial Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 27
Bsqueda con discrepancias rbol de bsqueda + heurstica: ordena los sucesores, izquierda. preferido a derecha
Discrepancia: ir en contra de la heurstica. IDEA1: si la heurstica casi siempre acierta, la solucin estar en una rama con pocas discrepancias. IDEA2: recorrer el rbol por orden creciente de discrepancias
Juegos Con dos jugadores, informacin perfecta. Programas campeones del mundo: damas, othello Programa con muy buen rendimiento: ajedrez Se le da importante: desde 1956, el ajedrez era un objetivo para IA. Deep Blue gano a Kasparov en 1997 quantity had become quality La cantidad se haba convertido en la calidad
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 28
Estrategia: bsqueda en un espacio de billones de nodos, profundizacin selectiva.
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 29
En sntesis: Bsqueda: es un mtodo computacional para resolver problemas Qu problemas podemos resolver? Resolucin por enumeracin
Espacio de estados, operadores, inicial, objetivo Bsqueda ciega Heurstica: funcin que estima el coste al objetivo Bsqueda informada, A* Bsqueda en memoria acotada Bsqueda con discrepancias Bsqueda para juegos Bsqueda en tiempo real Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO
Prof. Ing. Daniela E. Daz Pgina: 30
Indice
Buscando el ptimo: ..................................................................................... 1 Restriccin de Deriva Gentica ....................................................................... 1 Entornos ..................................................................................................... 2 Algoritmos de Bsqueda................................................................................ 2 Definicin de la palabra Bsqueda: ................................................................. 2 Mtodo exhaustivo ....................................................................................... 2 Bsqueda Exhaustiva:................................................................................... 3 Backtracking................................................................................................ 4 Problema N-Reinas ....................................................................................... 5 Resolucin secuencial.................................................................................... 5 Backtracking paralelo.................................................................................... 6 Backtracking Paralelo: con Asignacin esttica.................................................. 7 Estrategia de Divisin del trabajo.................................................................... 8 Esquemas de balanceo de carga ..................................................................... 9 Deteccin de terminacin ............................................................................ 10 Algunos ejemplos ....................................................................................... 15 Tipos comunes de rboles............................................................................ 16 Cuestiones a resolver antes de programar ..................................................... 17 Bsqueda Heurstica ................................................................................... 21 El problema del viajante:............................................................................. 22
Ctedra de Algoritmos Genticos Ao: 2013 Universidad Tecnolgica Nacional - FRRO