23.07.2013 Views

Un Algoritmo Genético H´ıbrido Paralelo para Instancias Complejas ...

Un Algoritmo Genético H´ıbrido Paralelo para Instancias Complejas ...

Un Algoritmo Genético H´ıbrido Paralelo para Instancias Complejas ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Intercambio<br />

Ind. Original 1 2 3 4 5 6 7 8<br />

Ind. Mutado<br />

1 2 5 4 3 6 7 8<br />

Inserción<br />

Ind. Original 1 2 3 4 5 6 7 8<br />

Ind. Mutado<br />

1 2 3 5 6 7 4 8<br />

Fig. 4. Los operadores de mutación.<br />

Inversión<br />

1 2 3 4 5 6 7 8<br />

1 2 6 5 4 3 7 8<br />

Dispersión<br />

1 2 3 4 5 6 7 8<br />

1 2 6 7 3 4 5 8<br />

toriamente. En este caso, todos los clientes deben<br />

pertenecer a la misma ruta.<br />

• Inserción. Consiste en insertar un cliente seleccionado<br />

aleatoriamente en otro lugar del cromosoma<br />

del individuo también aleatorio, perteneciente a la<br />

misma ruta o a otra.<br />

• Dispersión. Es similar al operador de inserción,<br />

pero aplicado a una sub-ruta (conjunto de clientes)<br />

en lugar de un único cliente.<br />

Búsqueda Local. El método de búsqueda consiste<br />

en aplicar hasta 50 pasos de búsqueda por 1-<br />

Intercambio [16], y después se aplican hasta 50 pasos<br />

de 2-Opt [17] a cada ruta de la solución obtenida tras<br />

el 1-Intercambio. El método de 1-Intercambio consiste<br />

en intercambiar un cliente de una ruta por otro<br />

perteneciente a otra ruta, o insertar un cliente de<br />

una ruta en otra ruta distinta. Por otro lado, 2-Opt<br />

trabaja siempre dentro de cada ruta, y consiste en<br />

eliminar dos ejes de una ruta y conectar los clientes<br />

en la otra forma posible (ver Figura 5). Como estos<br />

dos métodos de búsqueda local son deterministas, la<br />

búsqueda <strong>para</strong> en el caso de que no se haya logrado<br />

mejorar la solución en un paso del algoritmo. Esto<br />

nos permitirá reducir considerablemente el tiempo<br />

de ejecución.<br />

a b a b<br />

d c d c<br />

Fig. 5. El operador 2-Opt.<br />

IV. Experimentación<br />

Recientemente, Li, Golden y Wasil presentaron<br />

en [10] un nuevo conjunto de instancias del problema<br />

CVRP caracterizado fundamentalmente por el elevado<br />

número de clientes de que estaban compuestas.<br />

Este conjunto de problemas fue llamado VLSVRP,<br />

acrónimo de Very Large Scale VRP, que se puede<br />

traducir como VRP de escala muy grande. El tamaño<br />

de las instancias propuestas por los autores<br />

en VLSVRP oscila entre los 560 y los 1200 clientes,<br />

mientras que los conjuntos de instancias más aceptados<br />

y utilizados en la comunidad científica hasta<br />

entonces estaban formados por instancias de entre 50<br />

y 199 clientes en el caso de CMT [15], o problemas<br />

desde 200 a 483 clientes en el caso de las propuestas<br />

en [4] por Golden et al. Algunas características<br />

importantes adicionales de VLSVRP es que se ha<br />

creado utilizando un generador de instancias, por lo<br />

que resulta sencillo obtener instancias de mayor tamaño<br />

(<strong>para</strong> más detalles acerca de este generador de<br />

instancias, consulte [10]). Además, las instancias generadas<br />

son geométricamente simétricas, siguiendo<br />

un patrón circular. Esto nos permite sin mucho esfuerzo<br />

obtener una estimación visual de la mejor solución<br />

al problema. Todas las instancias de VLSVRP<br />

incluyen restricciones en la longitud máxima de las<br />

rutas.<br />

TABLA I<br />

Parametrización utilizada en PEGA.<br />

Tamaño de Población Islas: 100 Individuos (10 × 10)<br />

Total: 400 Individuos (4 islas)<br />

Vecindario NEWS<br />

Selección de Padres Torneo Binario + Individuo Actual<br />

Recombinación generic crossover [12], pc = 1,0<br />

Mutación de<br />

Individuos<br />

Intercambio (pint = 0,05),<br />

Inversión (pinv = 0,1),<br />

Inserción (pins = 0,05),<br />

y Dispersión (pdisp = 0,15)<br />

Reemplazo Reemplazar si es Mejor<br />

Búsqueda Local 1-Intercambio + 2-Opt,<br />

50 Pasos de Optimización por Método<br />

Frec. de Migración Cada 10 4 Evaluaciones<br />

Condición de Parada 500000 Evaluaciones en Cada Isla<br />

PEGA ha sido diseñado con la idea de ser utilizado<br />

<strong>para</strong> resolver las instancias que forman VLSVRP.<br />

Debido a la dificultad y gran tamaño de estos problemas,<br />

decidimos ejecutar PEGA en un entorno grid<br />

compuesto por un máximo de 125 ordenadores de<br />

diversas características, como por ejemplo PCs o estaciones<br />

de trabajo Sun. El algoritmo está codificado<br />

utilizando Java y la biblioteca ProActive <strong>para</strong> gestionar<br />

el entorno grid. La <strong>para</strong>metrización utilizada<br />

en nuestro algoritmo <strong>para</strong> las pruebas realizadas<br />

se detalla en la Tabla I. En concreto, como ya se<br />

avanzó en la Sección III, hemos descentralizado el<br />

algoritmo en 4 islas en anillo, que intercambian sólo<br />

un individuo con una única isla vecina cada 10 4 evaluaciones.<br />

En cada una de estas islas se ejecuta un<br />

cGA como el descrito en la Sección III-A, que trabaja<br />

sobre una rejilla de 10 × 10 individuos. <strong>Un</strong>o<br />

de los padres es seleccionado mediante torneo binario<br />

dentro del vecindario del individuo actual (que<br />

está compuesto por los individuos situados al norte,<br />

sur, este, oeste –NEWS). El otro padre es el propio<br />

individuo actual. Ambos padres se recombinan<br />

con una probabilidad del 100 % usando el operador<br />

generic crossover, y el individuo resultante se muta<br />

utilizando uno de los operadores de intercambio,<br />

inversión, inserción, y dispersión con probabilidades<br />

0.05, 0.1, 0.05, y 0.15, respectivamente [12]. Posteriormente,<br />

se le aplica al descendiente un método

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!