• No se han encontrado resultados

2. APLICACIÓN DEL MODELO DE INTEGRACIÓN DE TÉCNICAS DE

2.3 Nuevas propuestas de visualización e interacciones del usuario con el algoritmo

2.3.1 Visualizaciones e interacciones para JSP

• Visualizar en cada instante de la ejecución del algoritmo el recorrido de determinada hormigas elegida por el usuario.

La hormiga puede representarse como una tabla, donde las filas simbolizan los trabajos y las columnas las máquinas; cuando la cuadrícula ij es dibujada significa

que se realiza la tarea i en la maquina j y el orden de esta realización sería el

número de la misma (Ver Figura 2.2). Esto nos brinda la posibilidad de observar las tareas que van agregando las hormigas durante la construcción de su solución y analizar preferencias de las hormigas por seguir determinadas secuencias, lo que es proporcional a la cantidad de feromona en los arcos que las enlazan, así se puede decidir si determinada secuencia conviene o no, y luego modificar si se desea la matriz de feromonas mediante alguna interacción. En esta interacción el usuario debe tener la posibilidad de escoger cual hormiga de las existentes en la colonia visualizar por su orden o por su calidad hasta el momento y así poder observar cual es la peor o la mejor en la iteración en curso.

Figura 2.2: Visualización del recorrido de una hormiga.

• Clonar o eliminar la hormiga visible.

Esa interacción está asociada a la visualización anterior. Al clonar una hormiga, usualmente una con buena trayectoria, se elevan las posibilidades de obtener al final una mejor solución y al eliminando las hormigas que siguen una mala trayectoria probablemente se ahorraría tiempo explorando futuras malas soluciones. El usuario debe poder elegir en cualquier momento clonar una hormiga visible.

• Clonar cíclicamente varias hormigas dadas ciertas condiciones.

En esta interacción el usuario puede elegir clonar las k-mejores hormigas , así como el número de clones por hormiga y el número de pasos para iniciar esta clonación en cada iteración o solo en la iteración actual, esto beneficiaría sustancialmente la búsqueda al incorporar subsoluciones prometedoras que pudieran convertirse con mayor probabilidad en mejores soluciones.

• Visualizar e interactuar con la matriz de feromonas adicionando o eliminando un valor a la huella de feromona en determinados arcos.

Adicionar feromona en el arco que une los nodos i y j significa elevar la

al nodo j, de igual manera cuando se elimina feromona en un arco restringe en

mayor medida la elección de optar por dicho arco. Esta posibilidad es de vital importancia, pues la construcción de las soluciones de las hormigas y en general la solución del problema a optimizar, depende directamente de la matriz de huellas de feromona y de esta forma la construcción de las soluciones puede ser guiada por el usuario.

En la Figura 2.3 se muestra un ejemplo de visualización de una matriz de feromonas, donde las filas son los trabajos y las columnas las máquinas, los arcos son dibujados en tonalidades del color gris y representan el rastro de feromona en ellos. A mayor claridad del arco, menor cantidad de feromona y viceversa.

Figura 2.3: Visualización de la matriz de feromona.

• Filtrar el grafo donde se muestran los niveles de feromona mostrando solo los arcos cuya huella de feromona se encuentra en un determinado rango (Ver Figura 2.4). Esta interacción es importante ya que muestra con mayor claridad los arcos cuyos niveles de feromona se encuentran en un rango seleccionado. En otro caso se mostrarían todos los arcos (n2 - n), lo que dificultaría su análisis. Cuando visualizamos los arcos con mayor cantidad de feromona podemos detectar alguno

que no debiera aparecer en la solución y tomar la decisión de disminuirle el nivel de feromona, similar ocurre para arcos promisorios con bajos niveles de feromona a los que se les aumentarían.

Figura 2.4: Filtrar el grafo que representa la matriz de feromona.

• Modificar cíclicamente la matriz de feromonas.

Mediante esta interacción se puede lograr la intensificación de la exploración puesto que cada cierta cantidad de ciclos o en el ciclo actual el usuario puede “suavizar” la matriz de feromonas o fijar valores máximo y mínimo para acotar los niveles de feromona.

Por suavizar la matriz de feromonas se entiende el incremento de feromona en todos los arcos en un valor que está dado por su calidad, los arcos que menos feromona tienen recibirán mayor cantidad, según la fórmula:

Esta interacción es útil cuando el usuario nota visualmente que los niveles de feromonas se han estancado y la solución no mejora.

• Fijar un nodo inicial o una región de donde obtener el nodo inicial con el que las hormigas comienzan la construcción de su solución.

Es útil si se desea comenzar la construcción de la solución en algún nodo específico o nodo de una región específica, por alguna restricción o ventaja en el problema. • Brindar información sobre el costo y orden de cada tarea.

De esta forma el usuario puede visualizar el costo de cada tarea, además de su orden dentro de cada trabajo, esto sería equivalente a visualizar la matriz de costos y la matriz de orden (Ver Figura 2.5).

Figura 2.5: Filtrar el grafo que representa la matriz de feromona. • Visualizar las k-mejores soluciones halladas y filtrar según su calidad.

Nos permite comparar las soluciones terminadas con las que están construyendo las hormigas y así tener datos útiles para tratar de mejorar las soluciones en construcción de las hormigas.

Las soluciones podemos representarla como se muestra en la siguiente figura. Aquí se puede elegir una solución a mostrar entre las k-mejores soluciones encontrada, cada solución se muestra de un color diferente, en una escala que va desde el rojo al azul donde las de color más cercano al rojo serían las peores soluciones, mientras que las más próximas al azul serían las mejores.

• Variar la velocidad de corrida del algoritmo.

Posibilita observar con mayor detenimiento los datos o como varían las trayectorias de las hormigas en los instantes que se necesite, también permite tener mejor control del estado del algoritmo cuando se desea modificar algún parámetro sin que los demás cambien bruscamente.

• Detener el algoritmo.

De esta forma pueden analizarse los parámetros involucrados en el algoritmo sin que sean modificados durante el tiempo que consuma dicho análisis. Así puede hacerse una valoración más precisa de la situación y tomar las mejores decisiones para que el algoritmo pueda continuar su ejecución de una forma más eficiente, lo que en ocasiones compensaría el tiempo que estuvo detenido.

• Salvar y Cargar el estado del algoritmo.

Si el problema a resolver tuviera dimensiones muy grandes sería conveniente salvar el estado del algoritmo hacia un fichero binario, pues para encontrar una buena solución pudiera demorar horas, posteriormente se cargaría y comenzaría a ejecutar a partir del estado que tenía en el momento en que fue salvado.

• Cambiar la cantidad de hormigas en cualquier momento de la ejecución del algoritmo.

Cada hormiga en ejecución significa un intento por encontrar una buena solución, pero a su vez implica un mayor consumo de recursos de cómputo. Ambos indicadores deben balancearse apropiadamente dependiendo de las condiciones disponibles.

Además de lograrse la variación de la cantidad de hormigas por medio de la clonación y eliminación que explicamos anteriormente, aquí nos referimos a la modificación de esta cantidad eliminando o incrementando un lote de hormigas. Cuando se modifica la cantidad de hormigas, en un ciclo determinado, las hormigas de la presente iteración continúan normalmente, pero al inicio del próximo ciclo la

cantidad de hormigas en la colonia se incrementaría o decrecería tanto como el usuario haya decidido.

• Variar el tiempo de ejecución del algoritmo.

Según las dimensiones del problema y la disponibilidad de tiempo para encontrar una buena solución, puede ejecutarse el algoritmo el mayor tiempo posible o deseable. Un mayor tiempo de ejecución se traduce en un mayor número de iteraciones y paulatinamente en la obtención de mejores soluciones.

• Modificar la feromona inicial y la constante de evaporación.

De trabajos publicados se conocen algunos valores recomendados para estos parámetros (Gambardella et al., 1997, Alonso et al., 2003). El investigador está libre de experimentar modificando estos valores para sus problemas específicos con el objetivo de encontrar los más apropiados, lo cual brinda una conveniente flexibilidad al algoritmo.

• Modificar otros parámetros específicos del algoritmo.

De forma análoga al caso anterior, la posibilidad de variar estos parámetros brinda flexibilidad al algoritmo, y en la práctica permite afinar la metaheurística.

• Mostrar resultados numéricos del estado del algoritmo y salvar los resultados. La ejecución del algoritmo en cada momento va produciendo valores numéricos que pueden ser visualizados. Por medio de esta visualización, el usuario conoce el comportamiento de las variables, lo que le posibilita tomar las decisiones apropiadas. Hay que destacar que esta visualización es, por supuesto, aproximada, por lo que en cada momento debe existir la posibilidad de recuperar los datos reales que está produciendo el algoritmo. Permite además salvar los resultados del algoritmo para almacenarlos y compararlo con otras corridas, etc.

Documento similar