130592 - Inicio - Universidad de La Sabana

Anuncio
DISEÑO Y PROGRAMACIÓN DE UN ALGORITMO GENÉTICO PARA DAR SOLUCIÓN
A UN PROBLEMA DE TRANSPORTE
CAMILO ANDRES RODRIGUEZ BLANCO
VIVIANA ROMERO MONTOYA
UNIVERSIDAD DE LA SABANA
FACULTAD DE INGENIERÍA
CHIA, PUENTE DEL COMÚN
2004
27
DISEÑO Y PROGRAMACIÓN DE UN ALGORITMO GENÉTICO PARA DAR SOLUCIÓN
A UN PROBLEMA DE TRANSPORTE
CAMILO ANDRES RODRIGUEZ BLANCO
VIVIANA ROMERO MONTOYA
Proyecto de grado
Directores
Juan Carlos Villamizar
Maria Margarita Cervantes
UNIVERSIDAD DE LA SABANA
FACULTAD DE INGENIERÍA
CHIA, PUENTE DEL COMÚN
2004
27
Este trabajo está dedicado a mi mamá y mi hermano que sin su apoyo y paciencia no
hubiera sido posible.
Viviana
A mi papá, a mi mamá, a mi abuelita, a mi hermana y a Pao.
Camilo
27
LISTA DE TABLAS
pág.
Tabla 1. Costo del método de construcción de un ciclo25
Tabla 2. Comparación de las operaciones de los métodos y sus resultados26
Tabla 3. Formato UML Empresa de Repartos45
Tabla 4. Formato UML Datos Específicos 46
Tabla 5. Formato UML Operaciones47
Tabla 6. Formato UML Tiempo47
Tabla 7. Formato UML Lista de datos47
Tabla 8. Formato UML Vista47
Tabla 9. Formato UML Mostrar datos48
Tabla 10. Formato UML Distribuidoras48
Tabla 11. Datos iniciales del problema50
Tabla 12. Demanda de cada punto de venta50
Tabla 13. Capacidades de cada centro de distribución51
Tabla 14. Distancias entre los centros de distribución y los puntos de venta51
Tabla 15. Costos de envío entre los centros de distribución y los puntos de venta52
Tabla 16. Resultados del modelo por Algoritmo Genético con probabilidad de 53
cruce 99 y probabilidad de mutación 1
Tabla 17. Resultados del modelo por Algoritmo Genético con probabilidad de 53
cruce 99 y probabilidad de mutación 2
Tabla 18. Resultados del modelo por Algoritmo Genético con probabilidad de
cruce 98 y probabilidad de mutación 1
54
Tabla 19. Resultados del modelo por Algoritmo Genético con probabilidad de
cruce 98 y probabilidad de mutación 2
54
Tabla 20. Resultados del modelo por Algoritmo Genético con probabilidad de 55
cruce 95 y probabilidad de mutación 1
27
Tabla 21. Resultados del modelo por Algoritmo Genético con probabilidad de
cruce 85 y probabilidad de mutación 1
Tabla 22. Resultados de costos primera versión57
Tabla 23. Resultados de tiempo primera versión58
Tabla 24. Resultados de costos segunda versión59
Tabla 25. Resultados de tiempo segunda versión60
Tabla 26. Comparación de los costos entre las dos versiones del programa61
de algoritmos genéticos
Tabla 27. Comparación del tiempo entre las dos versiones del programa62
de algoritmos genéticos
27
56
LISTA DE FIGURAS
pág.
Figura 1. Planteamiento del método de la esquina noreste15
Figura 2. Solución óptima del método de la esquina noreste 16
Figura 3. Solución óptima del método del costo mínimo 17
Figura 4. Penalizaciones del método de Vogel 18
Figura 5. Operaciones del método de Vogel 19
Figura 6. Solución óptima del método de Vogel 19
Figura 7. Construcción de un ciclo 21
Figura 8. Operaciones del método de construcción de un ciclo 23
Figura 9. Continuación de las operaciones del método de construcción de un ciclo 24
Figura 10. Solución óptima del método construcción de un ciclo 25
Figura 11. Planteamiento del problema 38
Figura 12. Cadena genética 41
Figura 13. Representación de los genes dentro de la cadena genética 42
Figura 14. Punto de cruce en la cadena genética 43
27
LISTA DE GRAFICOS
pág.
Gráfico 1. Formato UML del programa de AG49
Gráfico 2. Costos primera versión 58
Gráfico 3. Tiempo primera versión 59
Gráfico 4. Costos segunda versión 60
Gráfico 5. Tiempo segunda versión 61
Gráfico 6. Variación de costos entre las dos versiones del programa62
Gráfico 7. Variación de tiempo entre las dos versiones del programa63
27
LISTA DE ANEXOS
pág.
Anexo A. Manual de funcionamiento del programa
Anexo B. Descripción del formato UML
75
27
68
RESUMEN
En este trabajo se propone una forma no tradicional de encontrar las soluciones óptimas
para un problema de transporte en el que inciden unas variables básicas como cantidad
de centros de distribución, distancia entre ellos, número de centros de demanda y
cantidad a transportar y otras igual de importantes como el costo de la gasolina,
situaciones imprevistas, salario de los conductores, entre otras.
Teniendo en cuenta que el transporte incide en un alto porcentaje sobre los costos
logísticos es importante encontrar soluciones cercanas a las óptimas; para esto se diseñó
y se planteó un Algoritmo Genético que busca encontrar estas soluciones por medio de
técnicas de optimización flexibles y robustas. Con ayuda del lenguaje computacional
JAVA se planteó un modelo al que se le aplicaron pruebas analizadas mediante
procedimientos estadísticos donde se determinaron las variables que permiten al
algoritmo arrojar soluciones confiables.
ABSTRACT
In this work a nontraditional form sets out to find the optimal solutions for a transport
problem which basic variables like amount of distribution centers affect, distances among
them, number of demand centers and other amount to transport and others with the same
importance like the cost of the gasoline, unexpected situations, drivers incomes, among
others.
Considering that the transport affects a high percentage the logistic costs it is important to
find solutions near the optimal ones; for this it was designed and considered a Genetic
Algorithm that it looks for these solutions by means of flexible and robust techniques of
optimization. With aid of computacional language JAVA a model was considered and
tests analyzed by means of statistical procedures were applied to it where the variables
were determined that allow the algorithm to throw reliable solutions.
27
CONTENIDO
pág.
INTRODUCCIÓN..............................................................................................................11
1
JUSTIFICACIÓN.......................................................................................................12
2
MARCO TEORICO ...................................................................................................13
2.1
METODOS DE OPTIMIZACIÓN PARA EL MODELO DE TRANSPORTE ........14
2.1.1
Método analítico ....................................................................................... 14
2.1.2
Métodos exhaustivos, aleatorios y heurísticos .......................................... 14
2.1.2.1
Método de solución inicial......................................................................14
2.1.2.2
Esquina Noroeste. .................................................................................15
2.1.2.3
Costo Mínimo. .......................................................................................17
2.1.2.4
Método De Vogel. ..................................................................................18
2.1.2.5
Método De Multiplicadores y construcción de un ciclo. ..........................20
2.1.3
Técnicas basadas en población................................................................ 27
2.1.4
Técnicas experimentales .......................................................................... 27
2.2
ALGORITMOS GENETICOS ............................................................................27
2.2.1
Computación Evolutiva ............................................................................. 27
2.2.2
Origen de los Algoritmos Genéticos.......................................................... 28
2.2.3
Definición de Algoritmo Genético.............................................................. 29
2.2.4
Características de los Algoritmos Genéticos............................................. 30
2.2.5
Selección.................................................................................................. 31
2.2.6
Cruce........................................................................................................ 33
2.2.7
Mutación................................................................................................... 34
2.3
EL MODELO DE TRANSPORTE Y SU RELACION CON LOS ALGORITMOS
GENETICOS ....................................................................................................................35
3
PLANTEAMIENTO DEL PROBLEMA .......................................................................38
4
MODELO DEL PROBLEMA......................................................................................41
4.1
FUNCIÓN DECODIFICACIÓN ..........................................................................41
4.2
FUNCIÓN OBJETIVO .......................................................................................41
4.3
SELECCIÓN .....................................................................................................43
4.4
CRUCE .............................................................................................................43
4.5
MUTACION.......................................................................................................43
4.6
DESARROLLO DEL MODELO EN CODIGO JAVA 2.0.....................................44
5
CASOS DE PRUEBA................................................................................................50
6
ANALISIS DE RESULTADOS...................................................................................57
7
CONCLUSIONES Y RECOMENDACIONES ............................................................64
BIBILOGRAFIA.................................................................................................................66
27
INTRODUCCIÓN
El método de transporte fue formulado por primera vez como un procedimiento especial
para encontrar el costo mínimo al distribuir unidades homogéneas de un producto desde
varios centros de distribución a varios puntos venta. Se han desarrollado muchos
métodos los cuales llevan a soluciones que satisfacen los problemas, pero para acercarse
más a la realidad es necesario involucrar nuevas variables. Por esto, para dar soluciones
óptimas a este tipo de problemas se utilizará una herramienta conocida como Algoritmos
Genéticos.
Los Algoritmos Genéticos desarrollados por John Holland son algoritmos de búsqueda
basados en los mecanismos de la selección natural; combinan la supervivencia de las
secuencias mejores adaptadas con cambios aleatorios de información. En cualquier
generación, se crea un nuevo conjunto de secuencias artificiales usando los mejores
genes de los individuos de la generación anterior; ocasionalmente, una parte de las
secuencias se cambia aleatoriamente. Cuando el algoritmo es capaz de resolver
eficientemente un problema con unos parámetros determinados, aunque estos se
modifiquen, el algoritmo sigue encontrando de forma eficaz la solución del problema.
En este trabajo se propone una forma no tradicional de encontrar las soluciones óptimas
para un problema de transporte en el que inciden unas variables básicas como cantidad
de centros de distribución, distancia entre ellos, número de centros de demanda y
cantidad a transportar y otras igual de importantes como el costo de la gasolina,
situaciones imprevistas, salario de los conductores, entre otras.
Teniendo en cuenta que el transporte incide en un alto porcentaje sobre los costos
logísticos es importante encontrar soluciones cercanas a las óptimas; para esto se
diseñará y se planteará un Algoritmo Genético que busca encontrar estas soluciones por
medio de técnicas de optimización flexibles y robustas. Con ayuda del lenguaje
computacional JAVA se planteará un modelo al que se le aplicarán pruebas, analizadas
mediante procedimientos estadísticos donde se determinarán las variables que permiten
al algoritmo arrojar soluciones confiables.
11
1
JUSTIFICACIÓN
“En la naturaleza todos los seres vivos se enfrentan a problemas que deben resolver con
éxito. La Computación Evolutiva interpreta la naturaleza como una inmensa máquina de
resolver problemas y trata de encontrar el origen de dicha potencialidad para utilizarla en
nuestros programas. Los Algoritmos Genéticos son una de las más conocidas y
originales técnicas de resolución de problemas dentro de lo que se ha definido como
Computación Evolutiva”1.
A medida que las variables aumentan, como en el caso de estructuras con capacidad
limitada, encontrar las soluciones, se vuelve mucho mas complicado y es necesario
utilizar un método metaheurístico como por ejemplo un algoritmo genético.
La aplicación más común de los algoritmos genéticos ha sido la solución de problemas de
optimización, en donde han mostrado ser muy eficientes y confiables.
La indiscutible necesidad actual en la búsqueda de soluciones propias para los problemas
de estructura de transporte hace que los métodos utilizados hasta el momento arrojen en
algunos casos soluciones poco fiables y que no garantizan exactitud, mientras que el
algoritmo genético "castiga" a las malas soluciones y "premia" a las buenas, de forma que
estas últimas son las que se propagan con mayor rapidez.
El objetivo de los AG es optimizar una función en un rango que es difícil de explorar por
métodos tradicionales. Solucionar el problema consistirá en encontrar la solución óptima,
y por tanto, los Algoritmos Genéticos son en realidad un método de búsqueda muy
especial, en el que las soluciones al problema son capaces de reproducirse entre sí,
combinando sus características y generando nuevas soluciones.
1
Inteligencia Artificial. Freddy Pérez. Universidad de Puerto Rico. 1998
12
2
MARCO TEORICO
El marco teórico que se desarrollará a continuación presenta una breve introducción
sobre el problema de transporte, los métodos principales para su optimización, una
sinopsis sobre los algoritmos genéticos que abarca desde su origen hasta sus
características y principales operadores y finalmente se indicará la aplicación de estos
algoritmos a diferentes problemas de transporte.
La investigación de operaciones pretende optimizar un problema de decisión con la
restricción de recursos limitados. En la investigación de operaciones existe una
clasificación de métodos, dentro de los que se encuentran los probabilísticos o
estocásticos, donde los datos se determinan a través de distribuciones de probabilidad y
los métodos heurísticos que se emplean para aumentar la velocidad del proceso para
alcanzar la optimización y para obtener una buena solución al problema.
A pesar de que los métodos tradicionales de optimización arrojan resultados satisfactorios
los algoritmos genéticos se encargan de desarrollar problemas más complejos, sin dejar a
un lado los simples, con resultados y procedimientos más eficientes, por medio de
criterios que le permiten comparar las opciones factibles. A continuación se presentarán
los diferentes métodos de optimización para problemas de transporte, así como una
introducción a la teoría de los AG.
“Los AGs han sido específicamente desarrollados para abordar problemas de
optimización de funciones y difieren de otros procedimientos de búsqueda
fundamentalmente en los cuatro puntos que siguen:
a) Trabajan con una codificación del conjunto de parámetros, no con los parámetros en si
mismos.
b) Buscan a partir de un conjunto de puntos -población- y no desde uno solo.
c) Usan como información la función objetivo en vez de otros conocimientos auxiliares.
d) Utilizan reglas de transición probabilística, no reglas deterministas”2.
La programación lineal es una herramienta de modelos cuantitativos para manejar
diferentes tipos de problemas y ayudar a la toma de decisiones.
Se debe considerar el modelo de transporte como un problema de optimización a través
del cual un administrador debe determinar la mejor forma de cómo hacer llegar los
productos de sus diversos almacenes a sus consumidores, con el fin de satisfacer a los
clientes, a un costo mínimo.
“El modelo busca determinar un plan de transporte de una mercancía de varias fuentes a
varios destinos. Entre los datos del modelo se cuenta:
2
PAREJO Carmen Cortés. Tesis Algoritmos Genéticos y problemas de visibilidad. Universidad de Sevilla. 1996.
13
1. Nivel de oferta en cada fuente y la cantidad de demanda en cada destino.
2. El costo de transporte unitario de la mercancía de cada fuente a cada destino”3.
3. La distancia entre los centros oferentes y la demanda
El modelo se utiliza para realizar actividades como control de inventarios, programación
del empleo, asignación de personal, flujo de efectivo, programación de niveles de
reservas entre otras.
2.1
METODOS DE OPTIMIZACIÓN PARA EL MODELO DE TRANSPORTE
Hay muchas formas de abordar problemas de optimización, a continuación se presentan
diferentes métodos.
2.1.1 Método analítico
“Si existe la función F y se puede derivar dos veces en todo su rango, se pueden hallar
todos sus máximos, sean locales o globales. Sin embargo, la mayoría de las veces no se
conoce la forma de la función F, y si se conoce, no tiene porqué ser diferenciable ni
siquiera una vez. Incluso el tratamiento analítico para funciones de más de una variable
es complicado”4.
2.1.2 Métodos exhaustivos, aleatorios y heurísticos
“Los métodos exhaustivos recorren todo el espacio de búsqueda, quedándose con la
mejor solución, y los heurísticos utilizan reglas para eliminar zonas del espacio de
búsqueda consideradas poco interesantes. En los métodos aleatorios, se va muestreando
el espacio de búsqueda acotando las zonas que no han sido exploradas; se escoge la
mejor solución, y, además, se da el intervalo de confianza de la solución encontrada”5.
A continuación se presentarán algunas aplicaciones de estos métodos.
2.1.2.1 Método de solución inicial.
Mediante el uso del método simplex se pueden resolver los modelos de transporte y de
cualquier otro tipo de problemas de programación lineal. Sin embargo debido a la
estructura especial de modelo de transporte, se puede utilizar otro método que se ha
diseñado para aprovechar las características de los problemas de transporte.
3
4
5
TAHA Hamdy, Investigación de operaciones, Quinta Edición, Editorial Alfaomega, España: 1995, 227p.
MARTI, Rafael. Algoritmos Genéticos, 1992.www.uv.es/~rmarti/genet.html. Agosto 23 de 2003
MARTINEZ José J. Introducción a la Informática Evolutiva. Editorial Universal. España: 1999, 10p.
14
2.1.2.2 Esquina Noroeste.
Este método se considera el más fácil, pero también el menos probable para dar una
buena solución inicial y de bajo costo porque ignora la magnitud relativa de los costos.
Antes de describir el procedimiento, es necesario establecer que el número de variables
básicas, en cualquier solución de un problema de transporte es una menos de la que se
espera. Normalmente, en los problemas de programación lineal, se tiene una variable
básica para cada restricción.
En los problemas de transporte con m recursos y n destinos el número de restricciones
funcionales es m + n. Sin embargo, el número de variables básicas es igual a m + n – 1.
El método de la esquina noreste comienza asignando la máxima cantidad posible a la
demanda X11, de manera que se satisfaga totalmente la demanda (columna) o se agote la
oferta (fila). Cuando se satisface la demanda se tacha la columna o cuando se agota la
oferta se tacha la fila, indicando que las variables son iguales a cero. Cuando se
satisfacen simultáneamente una fila o una columna se tacha sólo una de éstas. Esta
condición garantiza la ubicación automática de variables básicas cero si las hay.
El siguiente problema ejemplificará el método de la esquina noreste al igual que los otros
métodos a continuación.
Una empresa envía camiones cargados de granos desde tres silos a cuatro molinos. La
oferta (en camiones cargados) y la demanda (también en camiones cargados), junto con
los costos de transporte por carga de camión en las diferentes rutas, se resumen en la
figura 1. Los costos de transporte por unidad, cij, se muestran la esquina noreste de cada
cuadro. El propósito del modelo es determinar el costo mínimo del programa de envío
entre los silos y los molinos. Esto equivale a determinar la cantidad xij enviada del silo i al
molino j (i = 1,2,3; j = 1,2,3,4).
Figura 1. Planteamiento del método de la esquina noreste
Destino
1
2
10
3
0
4
20
Oferta
11
1
15
X11
Centro de
Demanda
12
X12
7
X13
9
X14
20
2
25
X21
0
X22
14
X23
16
X24
18
3
5
X31
Demanda
X32
5
X33
15
X34
15
10
45
Fuente: TAHA Hamdy, Investigación de operaciones, Sexta Edición, Editorial Alfaomega, España: 1995, 180p.
15
Los números en cada celda (parte superior derecha) indican el valor del transporte desde
un punto de un centro de demanda hasta un destino o centro oferente. El método debe
iniciarse en la esquina noreste por lo tanto en la celda X11 se asigna el valor de 5, pues el
lo máximo que se puede para satisfacer al menos la demanda, entonces esta columna se
debe tachar. La oferta excedente es de 10 unidades en la fila 1. En X12 se asignan 10
unidades para poder satisfacer la oferta y se tacha la fila 1. Falta satisfacer una demanda
de 5 unidades en la columna 2. Se pasa a X22, pues ni la fila ni la columna han sido
tachadas y se satisfacen las unidades de la demanda con 5. Por lo tanto se tacha la
columna 2 y la oferta excedente es de 20 en la fila 2.
En X23 se asignan 15 unidades y se satisface la demanda, es decir se tacha la columna 3.
La oferta excedente es de 5 unidades en la fila 2. Con 5 unidades en X24 se agota la
oferta y se tacha la fila 2. Falta satisfacer una demanda de 5 unidades en la columna 4.
En X34 se asignan 5 y se satisface simultáneamente la demanda y se agota la oferta. El
procedimiento está completo cuando queda exactamente una fila o una columna sin
tachar. Se debe tachar la fila 3 o la columna 5, así sólo uno de las dos queda sin tachar y
el proceso llega a su fin. Cuando se satisfacen al mismo tiempo una fila o una columna la
siguiente variable que se agregará a la solución básica debe ser cero.
El resumen de estas operaciones se puede apreciar en la siguiente figura.
Figura 2. Solución óptima del método de la esquina noreste
1
1
5
2
3
15
10
5
2
15
3
5
4
15
15
5
25
5
5
10
45
Fuente: TAHA Hamdy, Investigación de operaciones, Sexta Edición, Editorial Alfaomega, España: 1995, 182p.
Las variables básicas son X11 con 5 unidades, X12 con 10 unidades, X22 con 5, X23 con 15,
X24 con 5 y X34 con 5. Las variables restantes son no básicas en nivel cero. El costo de
transporte asociado es
5 x 10 + 10 x 0 + 5 x 7 + 15 x 9 + 5 x 20 + 5 x 18 = $ 410
16
2.1.2.3 Costo Mínimo.
Este es un procedimiento que se utiliza tomando como base a las rutas o desplazamiento
que tenga el menor costo. Se asigna el valor más grande posible a la variable con menor
costo unitario de toda la tabla (si se presenta un empate, éste se rompe arbitrariamente).
Se debe tachar la fila o columna satisfecha (como en el método de la esquina noroeste, si
una columna y una fila se satisfacen de manera simultánea, sólo una puede tacharse).
Después de ajustar la oferta y la demanda de todas las filas y columnas no tachadas, se
repite el proceso asignando el valor más grande posible a la variable con el costo unitario
no tachado más pequeño.
Continuando con el ejemplo del método de la esquina noreste se ejemplificará el método
del costo mínimo.
El menor costo unitario de la tabla corresponde a las celdas X12 y X31. Arbitrariamente se
escoge una de las dos, en este caso X12. Se asigna el máximo valor para satisfacer la
demanda o la oferta, es decir, 15 unidades y se tacha la columna 2 a pesar que
simultáneamente se satisface la fila 1 y la columna 2. Por lo tanto la oferta de la fila 1 es
cero. El siguiente costo unitario menor está en X31, se asignan 5 unidades y se tacha la
fila 3, por lo tanto la demanda en la columna 1 es cero. El siguiente elemento de menor
costo no tachado es X23 con 15 unidades, que satisface la columna 3 y faltan 10 unidades
de oferta en la fila 2.
Continuando con X11 por tener el menor costo no tachado se le asigna el valor de cero
pues la demanda de la columna 1 y la oferta de la fila 1 ya están satisfechas. Las otras
variables básicas que se obtienen con X14 = 0 y X24= 10. La solución óptima en cuanto a
costo es la siguiente.
0 x 10 + 15 x 0 + 0 x 11 + 15 x 9 + 10 x 20 + 5 x 0 = $ 335
Figura 3. Solución óptima del método del costo mínimo
1
2
10
1
0
12
3
0
15
20
7
9
2
0
3
4
15
14
16
11
0
10
15
20
18
25
5
5
5
15
15
10
45
Fuente: TAHA Hamdy, Investigación de operaciones, Sexta Edición, Editorial Alfaomega, España: 1995, 183p.
17
2.1.2.4 Método De Vogel.
“Este método es heurístico y suele producir una mejor solución inicial que los métodos
anteriores. De hecho, suele producir una solución inicial óptima, o próxima al nivel
óptimo”6. Los pasos del procedimiento son los siguientes:
1. Se evalúa una penalización para cada fila (columna) restando el menor elemento de
costo de la fila (columna) del elemento de costo menor siguiente en la misma fila
(columna).
2. Se identifica la fila o columna con mayor penalización, rompiendo empates en forma
arbitraria. Se asigna el mayor valor posible a las variables con el costo más bajo de la fila
o columna seleccionado. Se ajusta la oferta y la demanda y se tacha la fila o columna
satisfecha. Si un fila y una columna se satisfacen al mismo tiempo, sólo uno de ellos se
tacha y a la fila (columna) restante se le asigna una oferta (demanda) cero. Cualquier fila
o columna con oferta o demanda cero no debe utilizarse para calcular futuras
penalizaciones (en el paso 3).
3. Después de ajustar la oferta y la demanda se deben tener en cuenta las siguientes
consideraciones.
a) si sólo hay una fila o columna sin tachar, se debe parar.
b) si sólo hay una fila (columna) con oferta (demanda) positiva sin tachar, se determinan
las variables básicas de la fila (columna) a través del método de costo mínimo.
c) si todas las filas o columnas sin tachar tienen oferta y demanda cero asignadas, se
deben determinar las variables básicas cero a través del método de costo mínimo. Hacer
un alto.
d) de lo contrario, se calculan las penalizaciones de las filas y columnas no tachadas y
después se regresa al paso 2 (las filas y columnas con oferta y demanda cero asignadas
no deben utilizarse para determinar estas penalizaciones).
Estos pasos al igual que las penalizaciones se aprecian en la figura 4.
Figura 4. Penalizaciones del método de Vogel
1
2
3
10
0
Penalización
4
11
20
1
15
12
7
9
20
25
0
14
16
18
5
2
3
Penalización
5
15
15
10
10
7
7
7
10
2
14
45
Fuente: TAHA Hamdy, Investigación de operaciones, Sexta Edición, Editorial Alfaomega, España: 1995, 184p.
6
TAHA Hamdy, Investigación de operaciones, Quinta Edición, Editorial Alfaomega, España: 1995, 249p
18
Se selecciona la fila 3, pues es la que mayor penalización tiene y el costo de X31 es el
menor, entonces se le asignan 5 unidades y así la demanda y la oferta se satisfacen.
Arbitrariamente se escoge la columna uno para ser tachada y la oferta para la fila 3 es
cero. Nuevamente se penaliza la tabla, omitiendo la columna tachada y la fila 3 pues en
este caso ya está satisfecha.
Figura 5. Operaciones del método de Vogel
1
2
10
3
0
Penalización
4
20
11
1
12
7
0
14
2
3
11
15
15
9
20
16
18
25
2
5
-
5
Penalización
5
15
15
10
-
7
11
9
45
Fuente: TAHA Hamdy, Investigación de operaciones, Sexta Edición, Editorial Alfaomega, España: 1995, 184p.
La fila 1 y la columna tres tienen las mismas penalizaciones, arbitrariamente se
selecciona la columna 3 y se le asigna a X23 15 unidades para satisfacerla. Se tacha esta
columna y la oferta de la segunda fila debe ser ajustada a 10 unidades para satisfacerla.
Nuevamente es necesario realizar las penalizaciones.
Figura 6. Solución óptima del método de Vogel
Penalización
1
2
10
1
12
2
0
3
Penalización
3
0
5
10
4
20
7
9
15
14
5
11
10
16
15
11
25
13
5
-
20
18
0
5
15
15
10
-
7
11
9
45
Fuente: TAHA Hamdy, Investigación de operaciones, Sexta Edición, Editorial Alfaomega, España: 1995, 186p.
19
Si se continúa el proceso, los resultados que arroja el método son los siguientes. Se tacha
la fila 2 y en X22 se asignan 10 unidades, posteriormente se tacha la columna 2 con 5
unidades para X12, se tacha la fila 1 para X14 con 10 unidades y finalmente X34 con cero.
5 x 0 + 10 x 11 + 10 x 7 + 15 x 9 + 5 x 0 + 0 x 18 = $ 315
A pesar de este resultado el rompimiento de empates arbitrariamente puede arrojar otros
resultados no tan buenos.
2.1.2.5 Método De Multiplicadores y construcción de un ciclo.
El método de multiplicadores es un procedimiento secuencial que empieza con una
solución inicial factible del problema de transporte que es generada a partir de los
métodos anteriores para encontrar la solución óptima.
Para las variables básicas se asocian multiplicadores ui y vj con la fila i y la columna j; cij
corresponde al costo de cada celda ij. Estas variables deben satisfacer la ecuación
ui + vj = cij
Por lo general al multiplicador u1 se le asigna el valor de 0. Las variables no básicas están
dadas por la ecuación
pq
= up + vq - cpq
Los pasos son los siguientes:
1. Se utiliza la solución actual para crear una trayectoria única del paso secuencial.
2. Se aplica la ecuación para las variables básicas con el fin de hallar el valor de los
multiplicadores.
3. Se reemplaza este valor es la ecuación de las variables no básicas con el fin de hallar
la más positiva y ésta se selecciona como variable de entrada.
4. Se regresa al paso 1 hasta que todas las variables no básicas arrojen valores
negativos y así se encuentra la solución óptima.
Continuando con el mismo ejemplo de la Figura 1 se seguirán los pasos anteriores.
Las variables básicas son X11, X12, X22, X23, X24, X34 y las ecuaciones respectivas de
acuerdo con el método de la esquina noroeste son
X11: u1 + v1 = c11 = 10
X12: u1 + v2 = c12 = 0
20
X22: u2 + v2 = c22 = 7
X23: u2 + v3 = c23 = 9
X24: u2 + v4 = c24 = 20
X34: u3 + v4 = c34 = 18
Si se asume que u1 es cero, se pueden despejar los multiplicadores, entonces v1 = 10, v2
= 0, u2 = 7, v3 = 2, v4 = 13 y u3 = 5. Reemplazando estos valores en las ecuaciones de las
variables no básicas se obtiene
X13:
13
= u1 + v3 – c13 = 0 +2 - 20 = -18
X14:
14
= u1 + v4 – c14 = 0 +13 - 11 = 2
X21:
21
= u2 + v1 – c21 = 7 + 10 - 12 = 5
X31:
31
= u3 + v1 – c31 = 5 +10 - 0 = 15
X32:
32
= u3 + v2 – c32 = 5 +0 - 14 = -9
X33:
33
= u3 + v3 – c33 = 5 +2 - 16 = -9
X31 se selecciona como la variable que entra por ser la más positiva.
Posteriormente se debe construir un ciclo cerrado dentro de la matriz de asignación
empezando por la variable de entrada que se determinó con el método de multiplicadores.
Este método utiliza segmentos horizontales y verticales que se deben conectar en las
variables básicas como se muestra en la figura a continuación.
Figura 7. Construcción de un ciclo
1
2
10
1
4
0
20
7
9
11
+
5
2
3
3
12
10
20
25
18
5
+
0
+
5
15
14
16
5
15
5
5
15
15
10
45
Fuente: TAHA Hamdy, Investigación de operaciones, Sexta Edición, Editorial Alfaomega, España: 1995, 188p.
21
Se le asigna una variable a la celda X31 con un signo (+) y por medio de los segmentos
se asignan los signos intercalados. El valor que asume es el del menor número de
unidades, en este caso 5 y de acuerdo con el signo se suman o restan las unidades para
determinar el incremento. La solución básica es degenerada puesto que las variables X11,
X22 y X34 son cero; una de estas se escoge aleatoriamente para que salga y se calculan
nuevamente los multiplicadores.
Variables básicas
X11: u1 + v1 = c11 = 10; u1 0; v1 = 10
X12: u1 + v2 = c12 = 0; v2 = 0
X22: u2 + v2 = c22 = 7; u2 = 7
X23: u2 + v3 = c23 = 9; v3 = 2
X24: u2 + v4 = c24 = 20; v4 = 13
X31: u3 + v1 = c34 = 0; u3 = -10
Ahora se calcula el valor de las variables no básicas. La variable que sale es la menor
que tenga el signo (-).
X13:
13
= u1 + v3 – c13 = 0 +2 -20 = -18
X14:
14
= u1 + v4 – c14 = 0 +13- 11 = 2
X21:
21
= u2 + v1 – c21 = 7 + 10 -12 = 5
X32:
32
= u3 + v2 – c32 = -10 + 0 -14 = -24
X33:
33
= u3 + v3 – c33 = -10 + 2 - 16 = -24
X34:
34
= u3 + v4 – c34= -10 + 13 - 18 = -15
22
Figura 8. Operaciones del método de construcción de un ciclo
1
1
2
3
10
+
0
12
2
0
3
15
+
0
4
0
20
11
7
9
20
15
14
16
5
5
18
15
25
5
5
5
15
15
10
45
Fuente: TAHA Hamdy, Investigación de operaciones, Sexta Edición, Editorial Alfaomega, España: 1995, 189p.
La variable que entra es X21 y la que sale X11 (aleatoriamente). Las unidades asignadas
ahora a cada celda debe satisfacer tanto la demanda como la oferta.
Variables básicas
X12: u1 + v2 = c12 = 0; u1 0; v2 = 0
X21: u2 + v1 = c21 = 12; v1 = 5
X22: u2 + v2 = c22 = 7; u2 = 7
X23: u2 + v3 = c23 = 9; v3 = 2
X24: u2 + v4 = c24 = 20; v4 = 13
X31: u3 + v1 = c34 = 0; u3 = -5
Variables no básicas
X11:
11
= u1 + v1 – c11 = 0 + 5 - 10 = -5
X13:
13
= u1 + v3 – c13 = 0 +2 -20 = -18
X14:
14
= u1 + v4 – c14 = 0 +13- 11 = 2
X32:
32
= u3 + v2 – c32 = -5 + 0 -14 = -19
X33:
33
= u3 + v3 – c33 = -5+ 2 - 16 = -19
X34:
34
= u3 + v4 – c34= -5+ 13 - 18 = -10
23
Ahora la variable de entrada es X14 y la de salida es X24.
Figura 9. Continuación de las operaciones del método de construcción de un ciclo
1
2
10
1
12
2
0
3
15
+
0
3
4
0
20
11
7
9
20
15
14
16
10
5
18
15
25
5
5
5
15
15
10
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana.
Variables básicas
X12: u1 + v2 = c12 = 0; u1 0; v2 = 0
X14: u1 + v4 = c14 = 12; v4 = 11
X21: u2 + v1 = c21 = 12; v1 = 5
X22: u2 + v2 = c22 = 7; u2 = 7
X23: u2 + v3 = c23 = 9; v3 = 2
X31: u3 + v1 = c34 = 0; u3 = -5
Variables no básicas
X11:
11
= u1 + v1 – c11 = 0 + 5 - 10 = -5
X13:
13
= u1 + v3 – c13 = 0 +2 -20 = -18
X24:
24
= u2 + v4 – c24 = 7 +11- 20 = -2
X32:
32
= u3 + v2 – c32 = -5 + 0 -14 = -19
X33:
33
= u3 + v3 – c33 = -5+ 2 - 16 = -19
X34:
34
= u3 + v4 – c34= -5+ 11- 18 = -12
24
45
En este punto ninguna variable no básica arrojó un valor positivo, por lo tanto se ha
llegado a la solución óptima.
Figura 10. Solución óptima del método construcción de un ciclo
2
1
10
1
2
3
12
0
0
5
5
3
4
0
5
10
20
7
11
10
9
15
14
20
15
25
5
16
18
45
15
15
10
Fuente: TAHA Hamdy, Investigación de operaciones, Sexta Edición, Editorial Alfaomega, España: 1995, 190p.
El resumen del cuadro anterior es el siguiente. Este método permite determinar el número
de unidades que deben ser enviadas de determinado centro de demanda a su destino
para así multiplicar las unidades por el costo y constituir el gran total.
Tabla 1. Costo del método de construcción de un ciclo.
Centro de
oferta
1
1
2
2
2
3
Destino
Unidades
COSTO
2
4
1
2
3
1
5
10
0
10
15
5
$0
$ 110
$0
$ 70
$ 135
$0
$ 315
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana.
En la siguiente tabla de resultados se ilustran los métodos utilizados anteriormente con
sus respuestas, iteraciones, costo, complejidad entre otras con el fin de realizar un
paralelo entre los mismos. La complejidad estará determinada por alta, media y baja y
será calificada de acuerdo con el tiempo que se tarda en solucionar el problema y la
estructura en si del método.
25
Tabla 2. Comparación de las operaciones de los métodos y sus resultados.
METODO
Esquina noroeste
Costo mínimo
Vogel
Multiplicadores y
construcción de un
ciclo
ITERA
CIONES
CENTRO
DE
OFERTA
DESTINO
UNIDADES
6
1
1
2
2
2
3
1
2
2
3
4
4
5
10
5
15
5
5
6
1
2
2
3
2
3
4
1
15
15
10
5
6
1
1
2
2
3
2
4
2
3
1
5
10
10
15
5
4
1
1
2
2
3
2
4
2
3
1
5
10
10
15
5
COSTO
$ 410
$ 335
$ 315
$315
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana.
27
COMPLE
JIDAD EN EL
DESARROLLO
VENTAJAS
• Es el método más
sencillo pues utiliza
menos cálculos
Baja
Baja
Media
Alta
• Es un método sencillo y
se inicia por el menor
costo unitario
• Utiliza
penalizaciones
para llegar a la solución
óptima
• Se acerca a la solución
óptima pues tomando
las variables de entrada
calcula multiplicadores.
• Al buscar optimizar la
solución
toma
el
resultado más positivo
de la variable no básica,
de esta
manera se
acerca a la mejor
solución
DESVENTAJAS
• Arroja un resultado
poco confiable e
ineficiente porque no
considera el costo
de las entregas y es
poco flexible al no
considerar
otras
variables.
• A
pesar
de
considerar el menor
costo para asignar
las unidades es un
método poco flexible
al no considerar
otras variables.
• El
rompimiento
aleatorio de empates
puede
arrojar
resultados
suboptimos.
• A
pesar
de
presentar el menor
número
de
iteraciones
las
operaciones pueden
ser
extensas
y
confusas
2.1.3 Técnicas basadas en población
Este tipo de técnicas pueden ser versiones de cualquiera de las anteriores, pero en vez
de tener una sola solución, que se va alterando hasta obtener el óptimo, se persigue el
óptimo cambiando varias soluciones; de esta forma es más fácil escapar de los mínimos
locales tan temidos. Entre estas técnicas se hallan la mayoría de los algoritmos
evolutivos.
2.1.4 Técnicas experimentales
En algunos casos, el criterio de un experto es capaz de evaluar lo apropiada que es una
solución a un tema determinado, por ejemplo, en problemas de diseño o de calidad. En
este caso, se pueden utilizar cualquiera de las técnicas expuestas anteriormente, pero a
la hora de evaluar una solución, un experto tendrá que darle una puntuación.
2.2
ALGORITMOS GENETICOS
Los programas evolutivos en general y los algoritmos genéticos están siendo usados con
éxito en la solución de problemas de optimización ya que presentan características de
flexibilidad, robustez y adaptabilidad, pero para conocer a fondo este tema se presentará
una introducción a la computación evolutiva, el origen, la definición y características de los
algoritmos genéticos y sus principales operadores como lo son la selección, el cruce y la
mutación.
2.2.1 Computación Evolutiva
“La computación evolutiva parte de un hecho observado en la naturaleza: los organismos
vivos poseen una destreza consumada en la resolución de los problemas que se les
presentan, y obtienen sus habilidades, casi sin proponérselo, a través del mecanismo de
la evolución natural. La evolución se produce, en casi todos los organismos, como
consecuencia de dos procesos primarios: la selección natural y la reproducción sexual. La
primera determina qué miembros de la población sobrevivirán hasta reproducirse (es un
proceso sencillo: cuando un organismo falla una prueba de idoneidad, muere). La
reproducción sexual garantiza la mezcla y recombinación de genes en la descendencia de
un organismo”7.
Las condiciones que determinan un proceso evolutivo en la naturaleza son:
•
•
7
Existe una población de entidades o individuos con capacidad para reproducirse
Existe alguna diferencia o variedad entre estos individuos
MARTINEZ José J. Introducción a la Informática Evolutiva. Editorial Universal. España: 1999, 22p.
27
•
Esta variedad está relacionada con algunas diferencias en la habilidad para
sobrevivir
Los algoritmos genéticos se encuadran dentro de la clase de algoritmos que presentan
ciertas analogías con los procesos biológicos de la naturaleza. Están incluidos en el
marco de la bioinformática, área de especialización encargada de estudiar modelos y
técnicas basándose en patrones biológicos y aprovechando las metodologías y técnicas
informáticas. La bioinformática trata de dar solución a una gran variedad de problemas de
un amplio dominio científico.
Dentro de este campo, aparece la Computación Evolutiva, que es un enfoque alternativo
para abordar problemas complejos de búsqueda y aprendizaje a través de modelos
computacionales de procesos evolutivos. Las implementaciones concretas de tales
modelos se conocen como algoritmos evolutivos. El propósito de los algoritmos evolutivos
consiste en guiar una búsqueda estocástica haciendo evolucionar a un conjunto de
estructuras y seleccionando de modo iterativo las más adecuadas.
2.2.2 Origen de los Algoritmos Genéticos
Los Algoritmos Genéticos fueron introducidos por John Holland en 1970 inspirándose en
el proceso observado en la evolución natural de los seres vivos.
Cuando Holland se enfrentó a los algoritmos genéticos, los objetivos de su investigación
fueron dos:
•
•
imitar y explicar los procesos adaptativos de los sistemas naturales, y
diseñar sistemas artificiales (normalmente programas) que retengan los
mecanismos importantes de los sistemas naturales.
“Los algoritmos desarrollados por Holland inicialmente eran sencillos pero dieron buenos
resultados en problemas considerados difíciles. Los algoritmos genéticos están basados
en integrar e implementar eficientemente dos ideas fundamentales: las representaciones
simples como strings binarios de las soluciones del problema y la realización de
transformaciones simples para modificar y mejorar estas representaciones”8.
Para llevar a la práctica el esquema anterior y concretarlo en un algoritmo, hay que
especificar los siguientes elementos:
•
•
•
•
•
•
8
Una representación cromosómica
Una población inicial que suele ser generada aleatoriamente
Una medida de evaluación
Un criterio de selección / eliminación de cromosomas
Una o varias operaciones de recombinación
Una o varias operaciones de mutación
MARTI, Rogelio, Computación evolutiva, 1992, www.uv.es/~rmarti/genet.html, Agosto 23 de 2004
28
2.2.3 Definición de Algoritmo Genético
“Los algoritmos genéticos son métodos de optimización, que trata de resolver el mismo
conjunto de problemas que se ha contemplado anteriormente, es decir, hallar (xi,...,xn)
tales que F(xi,...,xn) sea máximo. En un algoritmo genético, tras parametrizar el problema
en una serie de variables, (xi,...,xn) se codifican en un cromosoma. Todos los operadores
utilizados por un algoritmo genético se aplicarán sobre estos cromosomas, o sobre
poblaciones de ellos. En el algoritmo genético va implícito el método para resolver el
problema; son sólo parámetros de tal método los que están codificados, a diferencia de
otros algoritmos evolutivos como la programación genética. Hay que tener en cuenta que
un algoritmo genético es independiente del problema, lo cual lo hace un algoritmo robusto,
por ser útil para cualquier problema, pero a la vez débil, pues no está especializado en
ninguno”9.
En la Naturaleza lo único que hay que optimizar es la supervivencia, y eso significa a su
vez maximizar diversos factores y minimizar otros. Un algoritmo genético, sin embargo, se
usará para optimizar habitualmente sólo una función, no diversas funciones relacionadas
entre sí simultáneamente. Este tipo de optimización, denominada optimización
multimodal, también se suele abordar con un algoritmo genético especializado.
Los algoritmos genéticos ocupan el lugar central dentro de la computación evolutiva. Las
razones de esto son tanto teóricas como prácticas, siendo las más importantes:
•
Los algoritmos genéticos constituyen el paradigma más completo de la
computación evolutiva.
•
Son muy flexibles, es decir, pueden adoptar con facilidad nuevas ideas, generales
o específicas, que surjan dentro del campo de la computación evolutiva. Además
se pueden hibridar fácilmente con otros paradigmas y enfoques, aunque no tengan
ninguna relación con la computación evolutiva.
•
Los algoritmos genéticos son el paradigma con mayor base teórica de entre los de
la computación evolutiva. Además, dicha base teórica es sencilla en su desarrollo
y con grandes posibilidades de ampliación.
•
De entre todos los paradigmas de la computación evolutiva son los que menos
conocimiento específico necesitan para su funcionamiento, y en consecuencia, los
más versátiles.
•
Son fácilmente implementables en computadores con capacidades medias,
proporcionando resultados aceptables, en cuanto a precisión y recursos
empleados, para una gran cantidad de problemas difícilmente solubles por otros
métodos.
“Se puede afirmar que la búsqueda es ciega porque no se dispone de ningún
conocimiento específico del problema, de manera que la búsqueda se basa
exclusivamente en los valores de la función objetivo. Es también una búsqueda
9
MARTI, Rogelio, Computación evolutiva, 1992, www.uv.es/~rmarti/genet.html, Agosto 23 de 2004
29
codificada, ya que no se trabaja directamente sobre el dominio del problema, sino con
representaciones de sus elementos; múltiple, porque busca simultáneamente entre un
conjunto de candidatos; y estocástica, referida tanto a las fases de selección como a las
de transformación, con lo que se obtiene control sobre el factor de penetración de la
búsqueda”10.
Todo esto hace que los algoritmos genéticos proporcionen una mayor robustez a la
búsqueda, esto es, más eficiencia sin perder generalidad.
Los algoritmos genéticos trabajan con una población; muchos otros métodos trabajan con
un único punto. De este modo, los algoritmos genéticos encuentran seguridad en la
cantidad. Al mantener una población de puntos bien adaptados se reduce la probabilidad
de alcanzar un falso óptimo.
Algunas veces los algoritmos genéticos consiguen gran parte de su amplitud ignorando la
información que sea la del objetivo. “Otros métodos se basan fuertemente en tal
información, y en problemas donde la información no está disponible o es difícil de
conseguir, estos otros métodos fallan. Los algoritmos genéticos son generales porque
explotan la información disponible en cualquier problema de búsqueda. Los algoritmos
genéticos procesan similitudes en el código subyacente junto con información proveniente
de la ordenación de las estructuras de acuerdo con sus capacidades de supervivencia en
el entorno actual. Al explotar una información tan fácilmente disponible, los algoritmos
genéticos se pueden aplicar en prácticamente cualquier problema”11.
2.2.4 Características de los Algoritmos Genéticos
Aunque muchos aspectos están todavía por discutir, existen unos principios generales
ampliamente aceptados por la comunidad científica con respecto a los algoritmos
genéticos.
1. La evolución opera en los cromosomas en lugar de operar en los individuos a los
que representan.
2. La selección natural es el proceso por el que los cromosomas con buenas
estructuras se reproducen más a menudo que los demás.
3. En el proceso de reproducción tiene lugar la evolución mediante la combinación de
los cromosomas de los progenitores. Se llama recombinación a este proceso en el
que se forma el cromosoma del descendiente. También hay que tener en cuenta
las mutaciones que pueden alterar dichos códigos.
4. La evolución biológica no tiene memoria en el sentido de que en la formación de
los cromosomas únicamente se considera la información del período anterior.
Los algoritmos genéticos presentan ventajas sobre otros algoritmos que los hacen
preferibles para determinado tipo de aplicaciones. Algunas de las características de los
algoritmos genéticos son:
10
11
MARTI, Rogelio, Computación evolutiva, 1992, www.uv.es/~rmarti/genet.html, Agosto 23 de 2004
Idem
30
•
Son algoritmos estocásticos. Dos ejecuciones distintas pueden dar dos soluciones
distintas. Esto es útil por el hecho de que hay gran cantidad de isómeros que
corresponden a soluciones válidas, por lo que es interesante que distintas
ejecuciones nos puedan dar isómeros distintos.
•
Son algoritmos de búsqueda múltiple, luego dan varias soluciones. Aunque
habitualmente las energías de los individuos de la población final es similar, los
individuos suelen ser distintos entre si. Se considera que, de todos los algoritmos
de optimización estocásticos, los algoritmos genéticos son de los más
exploratorios disponibles.
•
A diferencia de los otros algoritmos comentados, cuya convergencia y resultado
final son fuertemente dependientes de la posición inicial, en los algoritmos
genéticos, salvo poblaciones iniciales realmente degeneradas en las que el
operador de mutación va a tener mucho trabajo, la convergencia del algoritmo es
poco sensible a la población inicial si esta se escoge de forma aleatoria y es lo
suficientemente grande.
•
La optimización es función de la representación de los datos. Este es el concepto
clave dentro de los algoritmos genéticos, ya que una buena codificación puede
hacer la programación y la resolución muy sencillas, mientras que una codificación
errada obliga a estudiar que el nuevo genoma cumple las restricciones del
problema, y en muchos problemas se tendrá que abortar los que no cumplan las
restricciones, por ser estas demasiado complejas. Además, la velocidad de
convergencia va a estar fuertemente influenciada por la representación.
•
Es una búsqueda paramétricamente robusta. Eso quiere decir que se ha de
escoger realmente mal los parámetros del algoritmo para que no converja. Con
tasas razonables, va a converger mejor o peor en una solución razonablemente
buena si la representación es la adecuada. Esto es muy importante por la
naturaleza de la búsqueda.
•
Los algoritmos genéticos son intrínsecamente paralelos. Esto significa que,
independientemente de que lo se haya implementado de forma paralela o no,
buscan en distintos puntos del espacio de soluciones de forma paralela. Ese
paralelismo intrínseco permite que sean fácilmente paralelizables, es decir, que
sea fácil modificar el código para que se ejecute simultáneamente en varios
procesadores.
Existen tres operaciones simples que toman la población inicial y generan poblaciones
sucesivas que se esperan sean mejores a medida que avanza el tiempo. Estas
operaciones son la selección, cruce y mutación que se describen a continuación e ilustran
la manera de optimizar las funciones.
2.2.5 Selección
Para aplicar los operadores genéticos se tiene que seleccionar un subconjunto de la
población. Algunas de las técnicas son:
31
•
•
Selección directa: toma elementos de acuerdo a un criterio objetivo, como son los
x mejores, los x peores, y son empleados con mucha frecuencia cuando se
quieren seleccionar dos individuos distintos, y se selecciona el primero por un
método aleatorio o estocástico.
Selección aleatoria: puede ser realizado por selección equiprobable o selección
estocástica.
o
o
“Selección equiprobable: todos tienen la misma probabilidad de ser
escogidos.
Selección estocástica: la probabilidad de que un individuo sea escogido
depende de una heurística. Los distintos procedimientos estocásticos son:
Selección por sorteo: cada individuo de la población tiene asignado
un rango proporcional o inversamente proporcional a su adaptación.
Se escoge un número aleatorio dentro del rango global, y el
escogido es aquel que tenga dicho número dentro de su rango. La
probabilidad de ser escogido es proporcional o inversamente
proporcional al grado de adaptación del individuo.
Selección por escaños: se divide el rango del número aleatorio en
un número predeterminado de escaños. Los escaños se reparten de
acuerdo con la ley d'Hont, tomando como puntuación para repartir
los escaños el grado de adaptación. Es más probable escoger un
elemento de baja probabilidad por este método que en el de
selección por sorteo.
Selección por restos estocásticos: igual que el método de selección
de escaños, sólo que los escaños no asignados directamente se
asignan de forma aleatoria. La probabilidad de escoger un elemento
de muy baja probabilidad es más alta que en el de selección por
escaños.
Por ruleta: se define un rango con las características de la selección
por sorteo. El número al azar será un número aleatorio
forzosamente menor que el tamaño del rango. El elemento escogido
será aquel en cuyo rango esté el número resultante de sumar el
número aleatorio con el resultado total que sirvió para escoger el
elemento anterior. El comportamiento es similar al de una ruleta,
donde se define un avance cada tirada a partir de la posición actual.
Tiene la ventaja de que no es posible escoger dos veces
consecutivas el mismo elemento, y que puede ser forzado a que
sea alta la probabilidad de que no sean elementos próximos en la
población, salvo que algunos de los otros operadores genéticos
emplee un método de selección directa basado en la posición
relativa de los individuos de la población.
Por torneo: se escoge un subconjunto de individuos de acuerdo con
una de las técnicas anteriores, habitualmente, aleatoria o
estocástica y de entre ellos se selecciona el más adecuado por otra
técnica generalmente determinística de tipo el mejor o el peor. Esta
32
técnica tiene la ventaja de que permite un cierto grado de elitismo
pero sin producir una convergencia genética prematura”12.
2.2.6 Cruce
Se denomina técnica de cruce a la forma de calcular el genoma del nuevo individuo en
función del genoma del padre y de la madre. El operador de cruce es fuertemente
responsable de las propiedades del algoritmo genético, y determinará en gran medida la
evolución de la población.
Existen gran cantidad de técnicas de cruce. Las técnicas básicas son:
•
•
•
•
•
Cruce básico: se selecciona un punto al azar de la cadena. La parte anterior del
punto es copiada del genoma del padre y la posterior del de la madre.
Cruce multipunto: igual que el cruce básico, sólo que estableciendo más de un
punto de cruce.
Cruce segmentado: existe una probabilidad de que un cromosoma sea punto de
un cruce. Conforme se va formando la nueva cadena del descendiente, para cada
gen, se verifica si ahí se va producir un cruce.
Cruce uniforme: para cada gen de la cadena del descendiente existe una
probabilidad de que el gen pertenezca al padre, y otra de que pertenezca a la
madre.
“Cruces para permutación: Existe una familia de cruces específicas para los
problemas de permutación, siendo algunos de ellos:
o
o
o
Cruce de mapeamiento parcial: Se toma una subsecuencia del genoma del
padre y procura preservar el orden absoluto de los fenotipos, es decir,
orden y posición en el genoma; el resto del genoma es lo más parecido
posible de la madre.
Cruce de orden: Se toma una subsecuencia del genoma del padre y
procura preservar el orden relativo de los fenotipos del resto del genoma lo
más parecido posible de la madre.
Cruce de ciclo: Se toma el primer gen del genoma del padre, poniéndolo en
la primera posición del hijo, y el primer gen del genoma de la madre,
poniéndolo dentro del genoma del hijo en la posición que ocupe en el
genoma del padre. El fenotipo que está en la posición que ocupa el gen del
genoma del padre igual al primer gen del genoma de la madre se va a
colocar en la posición que ocupe en el genoma del padre, y así hasta
rellenar el genoma del hijo”13.
Es una buena idea que, tanto la codificación como la técnica de cruce, se hagan de
manera que las características buenas se hereden; o al menos, no sea mucho peor que el
peor de los padres.
12
SANTO ORCERO, David. Técnicas de Selección.1 997. www.orcero.Org/irbis//disertacion/ node200.html. Agosto 27 de
2003
13
Idem
33
2.2.7 Mutación
Se define mutación como una variación de las informaciones contenidas en el código
genético; es habitualmente, un cambio de un gen a otro producido por algún factor
exterior al algoritmo genético.
“Algunas de las razones que pueden motivar a incorporar mutaciones en los algoritmos
son:
•
•
•
•
Desbloqueo del algoritmo. Si el algoritmo se bloqueó en un mínimo parcial, una
mutación puede sacarlo al incorporar nuevos fenotipos de otras zonas del espacio.
Este problema no se ha resuelto con mutación, sino hibridizando con agregación
simulada, lo que ha dado resultados excelentes.
Acabar con poblaciones degeneradas. Puede ocurrir que, por haber un
cuasimínimo o porque en pasos iniciales apareció un individuo demasiado bueno
que acabó con la diversidad genética, la población tenga los mismos fenotipos. A
priori se pueden plantear algunas soluciones, como el escalamiento de la función
de adaptación; si ya se ha llegado a una población degenerada, es preciso que las
mutaciones introduzcan nuevos genomas.
Incrementar el número de saltos evolutivos. Los saltos evolutivos (aparición de un
fenotipo especialmente valioso o salida de un mínimo local) son muy poco
probables en un genético puro para un problema genérico. La mutación permite
explorar nuevos subespacios de soluciones, por lo que, si el subespacio es bueno
en términos de adaptación, se producirá un salto evolutivo después de la mutación
que se expandirá de forma exponencial por la población.
Enriquecer la diversidad genética. Es un caso más suave que el de una población
degenerada (por ejemplo, que la población tenga una diversidad genética pobre),
la mutación es un mecanismo de prevención de las poblaciones degeneradas”14.
Sin embargo, si la tasa de mutación es excesivamente alta se tiene la deriva genética.
Una estrategia muy empleada es una tasa de mutación alta al inicio del algoritmo, para
aumentar la diversidad genética, y una tasa de mutación baja al final del algoritmo, para
conseguir que converja.
Existen varias técnicas distintas de mutación. Algunas de éstas son:
•
•
•
•
14
Mutación de gen: existe una única probabilidad de que se produzca una mutación
de algún gen. De producirse, el algoritmo toma aleatoriamente un gen, y lo
invierte.
Mutación multigen: cada gen tiene una probabilidad de mutarse o no, que es
calculada en cada pasada del operador de mutación multigen.
Mutación de cromosoma: igual que la mutación de gen, solamente que, en vez de
cambiar un gen, cambia un cromosoma completo. Puede sumar un valor aleatorio,
un valor constante, o introducir un cromosoma aleatorio nuevo.
Mutación multicromosoma: igual que la mutación de multigen, solamente que, en
vez de cambiar un conjunto de genes, cambia un conjunto de cromosomas. Puede
PAREJO Carmen Cortés. Tesis Algoritmos Genéticos y problemas de visibilidad. Universidad de Sevilla. 1996.
34
•
•
2.3
sumar un valor aleatorio, un valor constante, o introducir un cromosoma aleatorio
nuevo. Esta mutación es la que se produce implícitamente en la implementación
de cruce.
“Mutación de intercambio: existe una probabilidad de que se produzca una
mutación. De producirse, toma dos genes/cromosomas aleatoriamente y los
intercambia.
Mutación de barajado: existe una probabilidad de que se produzca una mutación.
De producirse, toma dos genes/cromosomas aleatoriamente y baraja de forma
aleatoria los genes/cromosomas comprendidos entre los dos”15.
EL MODELO DE TRANSPORTE Y SU RELACION CON LOS ALGORITMOS
GENETICOS
La planificación del transporte pasa por diferentes etapas, desde la percepción de alguna
falla o vacío en determinada área, la recolección de información relacionada con el área
mencionada, el procesamiento de esa información, el diagnóstico de la situación actual, la
identificación de los problemas, la concepción de probables soluciones, su análisis
incluyendo prediseños y estudios de prefactibilidad, para al final efectuar las
recomendaciones correspondientes.
Una de las primeras preocupaciones es contar con la información dentro de un sistema de
datos, que le permita en todo momento recurrir a ella para sacar información específica o
general dependiendo de lo que se busca.
La utilización de modelos computarizados de transporte para estudios de redes, era en
una época un instrumento muy requerido en las actividades de planificación de
transporte, por lo que tuvieron un enorme desarrollo y aplicación en su momento. Sin
embargo, la construcción de estos modelos resulta costosa y consumía mucho tiempo de
recopilación de información y posterior calibración. A favor de estos modelos se puede
mencionar que una vez construidos y calibrados resultan de gran ayuda en los análisis de
diferentes situaciones y alternativas, actuales y futuras, reduciendo los tiempos de
análisis.
Por esto el uso de modelos computacionales de transporte será apropiado dentro de las
disponibilidades y la profundidad del estudio, lo que permitirá obtener soluciones factibles
y reales.
No se puede dejar de mencionar que los modelos computarizados de antes han seguido
evolucionando de tal manera que en la actualidad reducen los recursos humanos y
financieros, además del tiempo que las modelaciones involucraban. Es decir que los
modelos computarizados de transporte son herramientas de trabajo que se utilizan para
15
SANTO ORCERO, David. Técnicas de Selección.1 997. www.orcero.Org/irbis//disertacion/ node200.html. Agosto 27 de
2003
35
simular situaciones reales; el éxito de su utilización depende del mayor grado de
aproximación.
“Entre las herramientas de optimización más versátiles y eficientes, se cuenta con los
algoritmos de evolución, entre ellos, los algoritmos genéticos. Estos algoritmos de
optimización y el progreso notable de las tecnologías informáticas han logrado en años
recientes, resolver problemas muy complejos que en el pasado eran inmanejables”16.
Algunas aplicaciones de estas herramientas en el campo de la logística y el transporte
son entre otras: la optimización del transporte de productos desde diversos puntos de
suministro a destinos, almacenes y modalidades alternativas de transporte, la
optimización de la distribución de productos, la óptima planificación de la producción y
gestión de una flotilla, la óptima gestión de un almacén, obtención de mínimos recorridos,
y otros diversos problemas asociados a la minimización de costos o maximización de
beneficios, secuencias óptimas, mínimos tiempos de entrega, calendarios óptimos, etc.
A continuación se presenta una aplicación de algoritmos genéticos a la solución de un
problema de ruteo. Específicamente determinar nuevas rutas de transporte público,
aplicando la estrategia desarrollada a la ciudad de Los Ángeles, Chile17. Se presentan las
restricciones asociadas al problema y la forma como se adecuaron las técnicas existentes
al problema particular.
La gran variedad de objetivos, recursos y restricciones que suelen tener los problemas de
transporte, en general, hacen difícil su tratamiento con métodos de optimización exactos.
Esta aplicación presenta una aproximación a la resolución del problema de búsqueda de
recorridos óptimos para líneas de transporte de pasajeros. La formulación del problema,
por su naturaleza, fue planteada como un problema multiobjetivo, ya que en ella fueron
incorporados de manera explícita tanto los beneficios para los operadores de las líneas
como los beneficios de los usuarios de dichas líneas de transporte.
El problema se ha enfrentado con el uso de algoritmos genéticos y se discuten los
resultados obtenidos con el software desarrollado, al aplicarlo sobre la ciudad de Los
Angeles, Chile. Para la implementación del software se eligió Microsoft Visual Basic 6.0,
por su flexibilidad y capacidad gráfica.
Este estudio se centra en el transporte de personas o transporte público al que se accede
mediante el pago de una tarifa fija y que se lleva a cabo con servicios regulares
establecidos en rutas señaladas, horarios determinados y paradas específicas.
En la red de transporte se requiere un equilibrio entre la oferta y la demanda por
transporte. La oferta está conformada por la red de caminos con sus costos asociados, los
que están determinados en función de distancias, velocidad de flujo libre, capacidad y
relación velocidad-flujo. La red de transporte público contiene especificaciones adicionales
de los servicios ofrecidos en términos de sus rutas, capacidades y frecuencias.
16
WINTER, Gabriel,Optimizacion Global en Logística,2000. http://ceani.ulpgc.es/reports/logistica/ceanilogistica.html.
Septiembre 30 de 2003
17
PINNINGHOFF, Maria Angelica. Recorridos Optimos de Líneas de Transporte Público Usando Algoritmos Genéticos
http://www.inf.udec.cl/revista/down09.html. Septiembre 2 de 2003
36
La demanda está conformada por el número de viajes por unidad de tiempo entre
orígenes y destinos y el modo de transporte que podría ser utilizado para un nivel de
servicio dado. El nivel de servicio está definido principalmente por el tiempo de viaje, tarifa
y comodidad. Si el nivel del servicio disminuye, se puede esperar una reducción en la
demanda, cambios de destino, modos, etc.
Los objetivos considerados en esta aplicación corresponden a la maximización del
beneficio neto privado del operador, la maximización del beneficio neto de los usuarios del
sistema de transporte, o una combinación de ambos, en cuyo caso se tratará del beneficio
neto del sistema.
Es necesario considerar dos funciones objetivo: la del público usuario que desea
minimizar el costo del transporte, en cuanto a dinero y tiempo, y la del operador que
pretende obtener el mayor ingreso al menor costo.
Al aplicar los algoritmos genéticos se determinó que la población inicial está formada por
una cantidad fija de rutas válidas. Para la selección se eligió como mecanismo la Ruleta.
Para el cruce, se eligió el método simple. En este problema, la variación en un elemento
del cromosoma significa fragmentar la ruta más que buscar la variabilidad. Por ello, se usó
el reemplazo de un cromosoma completo, elegido al azar, con una probabilidad del 1%. El
cromosoma reemplazante es generado de la misma forma de la población inicial.
Los datos de entrada para el programa son:
• La matriz de adyacencia
• Descripción de los arcos (nombres de las calles)
• Matriz de vecindad para los nodos
• Datos adicionales (tarifa, velocidad de caminata, etc.)
• Descripción de las líneas de transporte actualmente en uso
Los resultados obtenidos por el programa son:
• Ruta o rutas que satisfacen los requerimientos
• Distancia recorrida, tiempo de viaje, ausencia, ingreso operador, costo operador,
costo usuario y bondad de la ruta
• Nombre de las calles que conforman la ruta
• Recorrido de cada línea funcionando en la actualidad
En conclusión esta aplicación de algoritmos genéticos arroja que una ruta que favorece al
operador de la línea de transporte es una ruta más extensa, que invierte un poco más de
tiempo, pero que aumenta sus ingresos porque evita zonas de gran ausencia de
pasajeros, lo que permite mantener los precios en las tarifas de los usuarios. Este ejemplo
es sólo uno de las múltiples opciones que se tienen con los algoritmos genéticos y que
permite tener versatilidad y flexibilidad a la hora de plantear los modelos.
37
3
PLANTEAMIENTO DEL PROBLEMA
El problema que se plantea es básicamente llevar productos desde uno o varios centros
de distribución a uno o varios puntos de venta, determinando la mejor forma de hacer
llegar los productos de diversos almacenes u oferentes a los consumidores, con el fin de
satisfacer a los clientes a un costo mínimo.
El modelo de transporte es un problema de optimización de redes donde debe
determinarse cómo hacer llegar los productos desde los puntos de distribución hasta los
puntos de venta, minimizando los costos de envío. En la siguiente figura se puede
apreciar gráficamente lo anterior.
Figura 11. Planteamiento del problema
PV1
CD 1
PV4
CD 2
PV2
CD 3
PV5
PV3
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
CD Centro de distribución
PV Punto de venta
Las variables son el punto de partida para el desarrollo de los problemas y considerando
el tema de transporte las más relevantes de entrada serán:
•
•
•
•
la distancia entre los centros y los puntos de venta
la capacidad de producción de los centros de distribución
la demanda de los puntos de venta
los costos de envío
38
•
la capacidad de cada camión
La variable de salida será la cantidad que debe entregar cada centro de distribución a
cada punto de venta.
Las restricciones son aquellas características que limitan los problemas y están definidas
para el transporte por:
•
•
•
•
los costos de envío por unidad, donde éstos deben ser mayores que cero
la cantidad de unidades de unidades enviadas debe ser menor a o igual a la
capacidad de producción de los centros de distribución
la cantidad que llega a los puntos de venta no debe ser menor a la que demanden
la cantidad de camiones disponibles para cada uno de los centros de distribución
debe ser mayor que cero.
A partir de la anterior descripción se formuló la siguiente función objetivo.
Min
nd
pv
i =1
j =1
Cu Ce
ij
×
ij
+
nd
pv
i =1
j =1
nviajes × dis
km / galón
ij
ij
∗ Pg
Sujeto a,
Ce > 0
Cu Ctd
Cadi > 0
Cd Ctd
ca de
Donde,
nd = Número de centros de distribución
pv = Número de puntos de venta
de = demanda
Cu = Cantidad de unidades enviadas desde el centro de distribución hasta el punto de
venta
ca = capacidad de producción
Ce = Costos unitarios de envío
nviajes = Número de viajes
39
dis = Distancia desde el centro de distribución al punto de venta
Ctd = Capacidad total de producción del centro de distribución
Cadi = Camiones disponibles
Cd = Cantidad de unidades demandadas por el punto de venta
Pg = Precio por galón
Es decir, que la función objetivo busca minimizar el costo de envío de las unidades
demandadas desde cada centro de distribución a cada punto de venta, adicionando la
razón que existe entre el número de viajes por camión por la distancia que recorre cada
camión desde cada centro de distribución hasta cada punto de venta y una constante que
representa el rendimiento de un galón de combustible por kilómetro, por el precio de cada
galón.
La función objetivo está sujeta a unas restricciones tales como: los costos unitarios de
envío que deben ser mayores que cero; la cantidad de unidades enviadas desde el centro
de distribución debe ser menor o igual a la capacidad total del centro de distribución; los
camiones disponibles para los centro de distribución debe ser mayor que cero; la
capacidad de producción mayor o igual a la demanda, y finalmente la cantidad de
unidades demandadas por el punto de venta debe ser menor o igual a la capacidad total
del centro de distribución.
40
4
MODELO DEL PROBLEMA
La cadena genética está compuesta por un número de cromosomas que representa en
código binario, la cantidad que debe ser enviada desde un centro de distribución a un
punto de venta. Es decir, que la cantidad de cromosomas dependerá del número de estos
centros y puntos, y sus posibles combinaciones, teniendo en cuenta que sólo será posible
enviar de un centro de distribución a un punto de venta.
Figura 12. Cadena genética
Gen 1 Gen 2
1
0
Gen n
1
1
0
1
CROMOSOMA 1
Centro de distribución 1
a Punto de venta 1
0
1
1
0
0
CROMOSOMA 2
Centro de distribución 1
a Punto de venta 2
1
.
.
1
0
0
1
1
1
CROMOSOMA n
Centro de distribución n
a Punto de venta n
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana.
Los cromosomas estarán compuestos por un número de genes, los cuales representan
las posibles unidades a enviar generándose de manera aleatoria, y se determinan a partir
del máximo número de unidades que se puedan enviar de un centro a un punto de venta,
transformando el número entero a binario.
Las dos funciones básicas, decodificación y objetivo, son las encargadas de determinar
las cantidades desde cada centro de distribución hacia los puntos de venta, y el costo
relacionado con las variables y las restricciones respectivamente.
4.1
FUNCIÓN DECODIFICACIÓN
Debido a que las cantidades que representan los diferentes cromosomas que constituyen
cada individuo están en código binario, se tendrá una función decodificación, la cual
permitirá generar los valores enteros de las diferentes cantidades agrupándolos en una
matriz. Las cantidades corresponden a los envíos desde cada centro de distribución a
cada punto de venta.
4.2
FUNCIÓN OBJETIVO
A partir de la matriz generada por la función decodificación se debe determinar la
incidencia de las variables y las restricciones en el costo de transporte. Es decir, que se
debe cumplir con ciertas restricciones, como los costos de envío por unidad, donde éstos
41
deben ser mayores que cero; la cantidad de unidades enviadas debe ser menor a o igual
a la capacidad de producción de los centros de distribución; y la cantidad que llega a los
puntos de venta no debe ser menor a la que demanden; y la cantidad de camiones
disponibles para cada uno de los centros de distribución debe ser mayor que cero.
El desarrollo de la cadena genética, la población inicial, la selección, el cruce y la
mutación se realizó de la siguiente manera.
En líneas generales los algoritmos genéticos operan del siguiente modo: inicialmente
generan aleatoriamente valores numéricos en código binario (entre 0 y 1) a cada gen que
interviene en la solución del problema. El conjunto formado por estos valores no será la
solución al problema, pero conforman en los algoritmos genéticos un candidato inicial (en
el tiempo o en la iteración cero) a ser la solución óptima del problema. A un candidato
postulado a solución se le denomina individuo, los cuales operan en paralelo, es decir
consideran en cada iteración del proceso un conjunto de soluciones a ser las mejores
soluciones del problema que se resuelve y todas éstas configurarán una primera
población genética de individuos.
A partir de la población inicial, se generan las sucesivas poblaciones aplicando
operadores denominados operadores genéticos de selección, cruce y mutación sobre los
individuos de la generación o población anterior. Estos operadores tienen asignados
distintos tipos de probabilidades, que caracterizan a los algoritmos genéticos como
algoritmos heurísticos, no deterministas. Éste carácter es el que le da la gran
potencialidad a los algoritmos genéticos, que los diferencia de métodos deterministas en
que con los primeros se encuentran óptimos globales frente a óptimos locales de los
métodos deterministas. Los algoritmos genéticos operan considerando un símil a la
adaptación de los individuos al entorno y al principio de Darwin de la supervivencia de los
mejores individuos. La supervivencia de las mejores soluciones está relacionada con
seleccionar soluciones con buenos valores de la función objetivo del problema.
En caso que el problema de optimización sea de minimización, es decir el problema a
resolver trata de minimizar una función objetivo, el mejor individuo o solución óptima
global será aquello cuyo valor de la función sea el de menor valor respecto a todas las
otras posibles soluciones en el espacio total de búsqueda o conjunto total dónde se
encuentra la solución óptima del problema, para el caso del modelo de transporte se
busca minimizar el costo de envío desde los centros de distribución a los puntos de venta.
Figura 13. Representación de los genes dentro de la cadena genética
0
1
0
0
0
1
1
0
Aleatorio entre 0 y 1
1
1
0
0
.
.
Gen n
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana.
42
4.3
SELECCIÓN
Para la selección del mejor individuo se tuvo en cuenta el costo en que cada individuo de
la población incurre al enviar la cantidad determinada. Utilizando el método de la ruleta se
realizó esta selección, considerando la aptitud como el resultado de la resta del mayor
costo entre todos los individuos y el costo correspondiente al de cada uno; esto llevará a
que el de mayor aptitud corresponda al que tenía menor costo. El método de la ruleta,
consiste en crear una ruleta en la que cada cromosoma tiene asignada una fracción del
área total que es proporcional a su aptitud. Debido a que los individuos más aptos tienen
asignada una mayor área de la ruleta, sus posibilidades de ser seleccionados para el
paso siguiente son mejores que aquellos que tienen un área menor. Para este caso, fue
necesario invertir el método, es decir tomar el mayor costo que es a su vez la mayor
probabilidad y sustraerlo de la otras con el fin de variar las áreas y aumentar la
probabilidad en el menor costo.
4.4
CRUCE
El punto de cruce se determinó realizando un cruce básico, es decir, aleatoriamente y
dependiendo de la probabilidad que se le asigne. Se eligió al azar un punto entre 1 y n (el
largo del padre); se buscaron las conexiones en el cromosoma madre, entonces el hijo o
la siguiente generación hereda desde el comienzo hasta el punto de corte del cromosoma
la información del padre, y desde esa conexión hasta el final la información de la madre.
Si no hay conexión se repite el proceso hasta encontrarla. Luego, se repite el proceso,
pero comenzando con el cromosoma madre para encontrar el segundo hijo. Finalmente,
se comparan los padres con sus generaciones y se eligen sólo los mejor evaluados.
Figura 14. Punto de cruce en la cadena genética
1
1
0
0
0
1
0
1
PC 1 PC 2
1
1
0
1
.
.
PC n
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana.
4.5
MUTACION
La mutación se realizó de manera aleatoria dependiendo de la probabilidad asignada. Si
existe una mutación del centro de distribución 1 al punto de venta 1 se deben mutar todos
los puntos de venta hasta n con el fin de que no se modifique la cantidad que se va a
enviar.
43
4.6
DESARROLLO DEL MODELO EN CODIGO JAVA 2.0
El desarrollo del modelo de transporte en código Java 2.0 se conformó principalmente por
8 clases u objetos que son los encargados de darle el correcto funcionamiento al
programa. Para desarrollar el programa del algoritmo fue necesario mejorar una primera
versión que no involucraba la capacidad que cada camión podía transportar.
El programa gráficamente se puede apreciar en el Anexo A., y se desarrolló un manual de
funcionamiento para éste en el Anexo B.
La primera clase solicita al usuario los datos iniciales de entrada como el número de
individuos, el número de centros de distribución y puntos de venta y el número de
generaciones. O también existe la opción de traer la información real de una base de
datos que alimenta al programa.
La segunda clase pide los datos específicos o puntuales necesarios para el problema
tales como la demanda de los puntos de venta; la capacidad de producción de los centros
de distribución; las distancias entre centros y puntos de venta; los costos de envío que
incluyen el flete por unidad más los sueldos y seguros del conductor y sus ayudantes; la
cantidad de kilómetros que se recorren en promedio por camión; y las probabilidades de
cruce y mutación.
De esta clase se derivan algunas otras. La siguiente clase es la capacidad de los
camiones en donde se especifica por cada centro de distribución la cantidad de camiones
disponibles y la capacidad que tienen con el fin de determinar si es necesario realizar uno
o más viajes.
La cuarta clase es la lista de datos que arroja el número de generaciones solicitadas
indicando en cual de ellas está la matriz ideal. El quinto objeto es el de los resultados
propiamente dichos, pues al seleccionar la matriz ideal se puede ver la solución. Aquí se
aprecia la cadena genética y los costos desde cada centro de distribución a cada punto de
venta, al igual que el número de viajes por cada punto de venta y el costo total del
problema.
La sexta clase calcula el tiempo de ejecución del programa en milésimas de segundo, es
decir desde el momento en que se solicita que inicie, hasta cuando se desarrollan las
operaciones del algoritmo genético.
La siguiente clase, llamada vista, muestra los avisos ejecutando y detenido para
determinar el momento en que el programa está desarrollando el algoritmo. Las anteriores
clases eran clases gráficas.
La última clase es la de operaciones que se desarrolla por medio de programación
concurrente o multihilo. Las demandas por punto de venta se reparten de manera
aleatoria en cada una de las distribuidoras. A partir de esto se hace la conversión de
entero a binario para poder tener una cadena genética. Las cantidades solicitadas por los
puntos de venta son constantes, varían son las cantidades que cada centro de
distribución envía a los puntos de venta para minimizar los costos.
44
Con la cadena genética conformada se realizan todas las operaciones de los algoritmos
genéticos. A partir de la primera generación se calculan los costos de los individuos, así
se puede realizar por la selección por el método de la ruleta invertida. El punto de cruce
se determina de manera aleatoria y el cruce se da de acuerdo con la probabilidad
asignada. La mutación también es aleatoria y varia de acuerdo con la probabilidad
asignada.
A continuación se presenta la descripción de las clases en formato UML. En el Anexo B
se presenta la descripción.
Tabla 3. Formato UML Empresa de Repartos
Fuente: Autores RODRIGUEZ Camilo, ROMERO, Viviana.
45
Tabla 4. Formato UML Datos Específicos
Fuente: Autores RODRIGUEZ Camilo, ROMERO, Viviana.
46
Tabla 5. Formato UML Operaciones
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
Tabla 6. Formato UML Tiempo
Fuente: Autores RODRIGUEZ Camilo, ROMERO, Viviana.
Tabla 7. Formato UML Lista de datos
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
47
Tabla 8. Formato UML Vista
Fuente: Autores RODRIGUEZ Camilo, ROMERO, Viviana.
Tabla 9. Formato UML Mostrar Datos
Fuente: Autores RODRIGUEZ Camilo, ROMERO, Viviana.
Tabla 10. Formato UML Distribuidoras
Fuente: Autores RODRIGUEZ Camilo, ROMERO, Viviana.
48
El formato UML del programa se aprecia gráficamente a continuación.
Gráfico 1. Formato UML del programa de AG
UML
EMPRESA REPARTOS
DATOS ESPECIFICOS
DISTRIBUIDORAS
signal
OPERACIONES
TIEMPO
VISTA
LISTA DE DATOS
Clase en 1 estado
Clase en 1 estado
MOSTRAR DATOS
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
49
5
CASOS DE PRUEBA
Al desarrollar las dos versiones del programa se pudo apreciar que en la segunda los
costos mejoraron mientras que el tiempo de ejecución aumentó.
Se realizaron varios casos de prueba con la información de la base de datos que tiene
registrada el programa que se muestra en los cuadros a continuación. Para el programa
de simulación estudiantil fueron introducidos los mismos datos y el costo único fue de
$2.517.850.
A continuación se mostrarán los resultados más representativos de que arrojaban las
versiones del programa al variar las probabilidades de cruce y mutación.
Tabla 11. Datos iniciales del problema
Cantidad de Individuos
Centros de distribución
Puntos de venta
Generaciones
50
20
15
100
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
Tabla 12. Demanda de cada punto de venta
Tabla de demanda
Punto de venta
Demanda
1
800
2
750
3
650
4
850
5
900
6
200
7
300
8
150
9
600
10
450
11
400
12
350
13
500
14
550
15
700
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
50
Tabla 13. Capacidades de cada centro de distribución
Tabla capacidad planta
Distribuidora
Capacidad
1
2000
2
2500
3
2100
4
2300
5
2000
6
2500
7
1500
8
2200
9
1900
10
2800
11
3000
12
2300
13
2900
14
2200
15
2400
16
2700
17
2800
18
2500
19
2100
20
2600
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
Tabla 14. Distancias entre los centros de distribución y los puntos de venta
Tabla de distancias (m)
Distribuidora
1
PV1 PV2 PV3 PV4 PV5 PV6 PV7 PV8 PV9 PV10 PV11 PV12 PV13 PV14 PV15
20
24
8
2
18
3
19
13
30
14
7
9
26
2
3
13
12
20
19
13
3
19
18
3
20
17
6
18
5
10
9
12
12
9
17
7
2
18
6
4
4
21
3
5
19
9
3
11
15
13
20
5
18
40
5
4
13
19
13
20
14
17
14
6
14
5
9
15
12
10
12
18
18
3
6
15
3
11
11
7
9
6
20
14
17
9
16
10
4
10
17
5
16
18
16
8
7
11
17
5
2
14
9
4
15
5
18
20
19
3
9
9
18
8
1
12
12
8
14
7
3
8
19
18
19
10
18
10
25
16
8
9
15
5
10
16
19
5
19
3
14
5
4
11
18
4
9
14
15
6
19
20
8
2
6
17
11
6
7
12
7
16
7
14
4
11
18
13
3
6
18
19
19
17
6
13
2
17
4
17
13
17
19
32
6
13
7
19
5
20
14
14
8
1
12
17
24
18
3
14
5
16
12
6
3
8
17
51
5
35
14
5
16
35
13
6
19
6
2
4
14
13
6
3
15
1
8
8
2
2
18
8
14
9
10
15
18
13
1
19
16
16
8
11
5
6
14
6
12
11
20
3
16
10
3
18
17
16
10
6
15
9
16
13
17
1
10
10
11
1
3
3
18
16
19
14
9
7
16
14
17
13
7
19
7
3
2
7
19
6
36
11
3
19
1
16
4
16
17
18
11
3
16
2
20
16
3
17
4
1
2
8
17
1
12
17
11
7
11
14
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
Tabla 15. Costos de envío entre los centros de distribución y los puntos de venta
Tabla de costos de envío ($)
Distribuidora
PV1 PV2 PV3 PV4 PV5 PV6 PV7 PV8 PV9 PV10 PV11 PV12 PV13 PV14 PV15
1
374 381
389 397
405 413 421
430 438
447
456
465
474
484
493
2
345 352
359 366
373 381 389
396 404
412
421
429
438
446
455
3
305 311
317 324
330 337 343
350 357
365
372
379
387
395
402
4
300 306
312 318
325 331 338
345 351
359
366
373
380
388
396
5
450 459
468 478
487 497 507
517 527
538
549
560
571
582
594
6
372 379
387 395
403 411 419
427 436
445
453
463
472
481
491
7
350 357
364 371
379 386 394
402 410
418
427
435
444
453
462
8
397 405
413 421
430 438 447
456 465
474
484
494
503
514
524
9
374 381
389 397
405 413 421
430 438
447
456
465
474
484
493
10
378 386
393 401
409 417 426
434 443
452
461
470
479
489
499
11
365 372
380 387
395 403 411
419 428
436
445
454
463
472
482
12
398 406
414 422
431 439 448
457 466
476
485
495
505
515
525
13
401 409
417 426
434 443 452
461 470
479
489
499
509
519
529
14
321 327
334 341
347 354 361
369 376
384
391
399
407
415
424
15
423 431
440 449
458 467 476
486 496
506
516
526
536
547
558
16
386 394
402 410
418 426 435
443 452
461
471
480
490
499
509
17
379 387
394 402
410 418 427
435 444
453
462
471
481
490
500
18
422 430
439 448
457 466 475
485 494
504
514
525
535
546
557
19
450 459
468 478
487 497 507
517 527
538
549
560
571
582
594
20
370 377
385 393
400 409 417
425 434
442
451
460
469
479
488
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
Los resultados obtenidos después de ingresar los datos al modelo de transporte por
algoritmo genético son los siguientes.
Tabla 16. Resultados del modelo por Algoritmo Genético con probabilidad de cruce 99 y
probabilidad de mutación 1
52
99
Probab. Cruce
Algoritmo Genético
1
Primera versión
Probab.mutación
Costo total
Tiempo duración (miliseg)
Ejecución 1
$ 3.716.224
154547
Ejecución 2
$ 3.707.796
154422
Ejecución 3
$ 3.717.536
148250
Ejecución 4
$ 3.721.915
149359
Ejecución 5
$ 3.713.102
154460
Promedio
$ 3.715.315
15,22 s
Rango
$ 14.119
0,6297 s
99
Probab. Cruce
Algoritmo Genético
1
Segunda versión Probab.mutación
Costo total
Tiempo duración (miliseg)
Ejecución 1
$ 3.702.974
1535472
Ejecución 2
$ 3.694.546
1532122
Ejecución 3
$ 3.704.286
1475804
Ejecución 4
$ 3.708.665
1499397
Ejecución 5
$ 3.699.852
1541022
Promedio
$ 3.702.065
151,68 s
Rango
$ 14.119
6,52 s
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
Tabla 17. Resultados del modelo por Algoritmo Genético con probabilidad de cruce 99 y
probabilidad de mutación 2
99
Probab. Cruce
Algoritmo Genético
2
Primera versión
Probab.mutación
Costo total
Tiempo duración (miliseg)
Ejecución 1
$ 3.715.570
146453
Ejecución 2
$ 3.715.656
150203
Ejecución 3
$ 3.702.436
145875
Ejecución 4
$ 3.721.640
149258
Ejecución 5
$ 3.709.690
146111
Promedio
$ 3.716.198
14,76 s
Rango
$ 19.204
0,4328 s
99
Probab. Cruce
Algoritmo Genético
2
Segunda versión Probab.mutación
Costo total
Tiempo duración (miliseg)
Ejecución 1
$ 3.704.110
1468931
Ejecución 2
$ 3.704.196
1512582
Ejecución 3
$ 3.690.976
1478153
53
Ejecución 4
Ejecución 5
Promedio
Rango
$ 3.710.180
$ 3.698.230
$ 3.701.538
$ 19.204
1522582
1475216
149,15 s
5,37 s
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
Tabla 18. Resultados del modelo por Algoritmo Genético con probabilidad de cruce 98 y
probabilidad de mutación 1
98
Probab. Cruce
Algoritmo Genético
1
Primera versión
Probab.mutación
Costo total
Tiempo duración (miliseg)
Ejecución 1
$ 3.722.759
153421
Ejecución 2
$ 3.721.367
147212
Ejecución 3
$ 3.718.671
152489
Ejecución 4
$ 3.711.845
151139
Ejecución 5
$ 3.721.556
156321
Promedio
$ 3.719.240
15,21 s
Rango
$ 10.914
0,9109 s
98
Probab. Cruce
Algoritmo Genético
1
Segunda versión Probab.mutación
Costo total
Tiempo duración (miliseg)
Ejecución 1
$ 3.711.213
1532217
Ejecución 2
$ 3.709.821
1485212
Ejecución 3
$ 3.703.125
1493489
Ejecución 4
$ 3.700.299
1532113
Ejecución 5
$ 3.710.010
1556321
Promedio
$ 3.706.894
151,99 s
Rango
$ 10.914
7,11 s
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
Tabla 19. Resultados del modelo por Algoritmo Genético con probabilidad de cruce 98 y
probabilidad de mutación 2
98
Probab. Cruce
Algoritmo Genético
2
Primera version
Probab.mutación
Costo total
Tiempo duración (miliseg)
Ejecución 1
$ 3.724.111
155238
Ejecución 2
$ 3.725.544
152149
54
Ejecución 3
Ejecución 4
Ejecución 5
Promedio
Rango
$ 3.722.667
$ 3.724.330
$ 3.728.178
$ 3.724.966
$ 5.511
151489
148214
148845
15,12 s
0,7024 s
98
Probab. Cruce
Algoritmo Genético
2
Segunda version Probab.mutación
Costo total
Tiempo duración (miliseg)
Ejecución 1
$ 3.712.565
1532654
Ejecución 2
$ 3.713.998
1495261
Ejecución 3
$ 3.711.121
1518489
Ejecución 4
$ 3.712.784
1458213
Ejecución 5
$ 3.716.632
1488835
Promedio
$ 3.713.420
149,87 s
Rango
$ 5.511
7,44 s
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
Tabla 20. Resultados del modelo por Algoritmo Genético con probabilidad de cruce 95 y
probabilidad de mutación 1
95
Probab. Cruce
Algoritmo Genético
1
Primera version
Probab.mutación
Costo total
Tiempo duración (miliseg)
Ejecución 1
$ 3.729.002
149250
Ejecución 2
$ 3.728.418
148515
Ejecución 3
$ 3.729.773
149568
Ejecución 4
$ 3.728.990
152456
Ejecución 5
$ 3.727.709
147389
Promedio
$ 3.728.778
14,94 s
Rango
$ 2.064
0,5067 s
95
Probab. Cruce
Algoritmo Genético
1
Segunda version Probab.mutación
Costo total
Tiempo duración (miliseg)
Ejecución 1
$ 3.717.456
1549252
Ejecución 2
$ 3.716.872
1548629
Ejecución 3
$ 3.718.227
1549368
Ejecución 4
$ 3.717.444
1531646
Ejecución 5
$ 3.716.163
1494389
Promedio
$ 3.717.232
153,47 s
Rango
$ 2.064
5,50 s
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
55
Tabla 21. Resultados del modelo por Algoritmo Genético con probabilidad de cruce 85 y
probabilidad de mutación 1
85
Probab. Cruce
Algoritmo Genético
1
Primera version
Probab.mutación
Costo total
Tiempo duración (miliseg)
Ejecución 1
$ 3.738.911
150047
Ejecución 2
$ 3.733.961
153214
Ejecución 3
$ 3.737.984
154921
Ejecución 4
$ 3.736.694
152553
Ejecución 5
$ 3.736.058
149528
Promedio
$ 3.736.722
15,21 s
Rango
$ 4.950
0,5393 s
85
Probab. Cruce
Algoritmo Genético
1
Segunda version Probab.mutación
Costo total
Tiempo duración (miliseg)
Ejecución 1
$ 3.727.365
1510647
Ejecución 2
$ 3.722.415
1521456
Ejecución 3
$ 3.726.438
1565489
Ejecución 4
$ 3.725.148
1532478
Ejecución 5
$ 3.724.512
1474686
Promedio
$ 3.725.176
152,10 s
Rango
$ 4.950
9,08 s
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
56
6
ANALISIS DE RESULTADOS
El algoritmo genético diseñado muestra como el costo y el tiempo de ejecución del
programa varían de acuerdo a la probabilidad de mutación, de cruce y la cantidad de
generaciones que desde un principio se definen.
El tiempo de ejecución varía de acuerdo con el número de generaciones debido a que
entre más generaciones se requieran hay mayor numero de individuos factibles en
operación; esto se debe a que el programa debe realizar la selección, el cruce y la
mutación para toda la población y todas las generaciones.
Al ejecutar el programa del Algoritmo Genético el costo fue más alto comparando con el
lenguaje de simulación estudiantil, esto se debe a que el primero involucra más variables
las cuales son necesarias para la aproximación a una solución real. Si se suprimen las
distancias, el precio de la gasolina, y los galones por kilómetro el resultado suele ser muy
similar al simulado por el método estudiantil. Es decir que la base de ambos programas
se considera la misma pero se hace más real teniendo en cuenta todas las nuevas
variables que se involucran.
Cuando el programa estaba corriendo y se desarrollaron los casos de prueba se pudo
apreciar que la validación de las restricciones están bien ejecutadas; es decir que el
programa verifica que se cumplan todas las restricciones.
Con la segunda versión se pudo escoger el número de camiones y la capacidad que cada
uno de ellos podía transportar. Los cambios en costos fueron evidentes, menos costos
teniendo en cuenta los tipos de camiones y sus capacidades, pero el tiempo de ejecución
aumentó, pues estuvo entre cuarenta segundos y dos minutos veinte segundos.
Versión 1
Tabla 22. Resultados de costos primera versión
Costo ($)
Probabilidad cruce
Probabilidad mutación
1
2
3
85
90
95
97
$ 3.736.722
$ 3.738.242
$ 3.739.245
$ 3.731.216
$ 3.732.108
$ 3.732.760
$ 3.728.778
$ 3.730.018
$ 3.730.800
$ 3.721.556
$ 3.721.998
$ 3.722.628
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
Gráfico 2. Costos primera versión
57
98
99
$ 3.719.240 $ 3.715.315
$ 3.724.966 $ 3.716.198
$ 3.725.578 $ 3.716.570
Costos Primera Versión
Prob mut 1
Prob mut 2
Prob mut 3
$ 3.745.000
($)
$ 3.740.000
$ 3.735.000
$ 3.730.000
$ 3.725.000
$ 3.720.000
$ 3.715.000
$ 3.710.000
85
90
95
97
98
99
(Prob. cruce)
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
Tabla 23. Resultados de tiempo primera versión
Tiempo (s)
Probabilidad cruce
Probabilidad mutación
1
2
3
85
90
95
97
98
99
15,21
15,17
15,06
15,29
15,11
15,24
14,94
15,02
15,46
14,86
15,22
15,06
15,21
15,12
14,98
15,22
14,76
15,17
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
58
Gráfico 3. Tiempo primera versión
Tiempo Primera Versión
Prob mut 1
Prob mut 2
Prob mut 3
15,60
15,40
(s)
15,20
15,00
14,80
14,60
14,40
85
90
95
97
98
99
(Prob. cruce)
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
Versión 2
Tabla 24. Resultados de costo segunda versión
Costo ($)
Probabilidad cruce
Probabilidad mutación
1
2
3
85
90
95
$ 3.725.176 $ 3.721.100
$ 3.725.801 $ 3.721.425
$ 3.726.213 $ 3.722.645
97
$ 3.717.232 $ 3.715.842
$ 3.717.616 $ 3.716.794
$ 3.718.756 $ 3.717.646
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
59
98
99
$ 3.706.894 $ 3.702.065
$ 3.713.420 $ 3.701.538
$ 3.715.574 $ 3.702.858
Gráfico 4. Costos segunda versión
Costos Segunda Versión
Prob mut 1
Prob mut 2
Prob mut 3
$ 3.730.000
$ 3.725.000
($)
$ 3.720.000
$ 3.715.000
$ 3.710.000
$ 3.705.000
$ 3.700.000
$ 3.695.000
85
90
95
97
98
99
(Prob. cruce)
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
Tabla 25. Resultados de tiempo segunda versión
Tiempo (s)
Probabilidad cruce
Probabilidad mutación
1
2
3
85
90
95
97
98
99
152,10
153,26
152,41
150,25
151,89
153,22
153,47
151,54
152,80
151,69
152,45
152,67
151,99
149,87
152,42
151,68
149,15
151,62
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
60
Gráfico 5. Tiempo segunda versión
Tiempo Segunda Versión
Prob mut 1
Prob mut 2
Prob mut 3
154,00
153,00
(s)
152,00
151,00
150,00
149,00
148,00
85
90
95
97
98
99
(Prob. cruce)
Se evidencia con el resumen de los resultados que a menor probabilidad de cruce mayor
es el costo; referente al tiempo la variación no fue mucha, pues se manejó el mismo
número de generaciones. A pesar de haber obtenido estas tendencias en los resultados
no se puede concluir que a menor probabilidad de cruce, mayor será el costo pues sería
necesario realizar un análisis estadístico profundo.
A continuación se presentaran dos tablas donde se comparan los resultados de las dos
versiones frente a la variable costo y al tiempo
Tabla 26. Comparación de los costos entre la dos versiones del programa de algoritmos
genéticos
Costo ($)
Probabilidad de cruce
95
97
90
1
-0,309%
-0,271%
-0,310%
2
-0,333%
-0,286%
3
Promedio
-0,349%
-0,330%
-0,271%
-0,276%
Probabilidad
mutación
85
Promedio
98
99
-0,154%
-0,332%
-0,357%
-0,289%
-0,332%
-0,140%
-0,310%
-0,394%
-0,299%
-0,323%
-0,322%
-0,134%
-0,142%
-0,269%
-0,303%
-0,369%
-0,373%
-0,286%
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana.
61
Tabla 27. Comparación de los tiempos entre las dos versiones del programa de algoritmos
genéticos
Probabilidad
mutación
Tiempo
(s)
Probabilidad de cruce
95
97
98
99
Promedio
85
90
1
900,28%
882,67%
926,97%
920,79%
899,15%
896,51% 904,395%
2
910,28%
905,23%
908,92%
901,64%
891,28%
910,63% 904,665%
3 912,02% 905,38% 888,36% 913,75% 917,49% 899,47% 906,077%
Promedio 907,527% 897,759% 908,082% 912,061% 902,641% 902,205%
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
Gráfico 6. Variación del costo entre las dos versiones del programa
Variación de costos entre las versiones
Promedio
0,00%
-0,05%
85
90
95
97
-0,10%
-0,15%
-0,20%
-0,25%
-0,30%
-0,35%
-0,40%
Prob cruce
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
62
98
99
Grafico 7. Variación de tiempo entre las dos versiones del programa.
Variación de tiempo entre las versiones
Promedio
915,0%
910,0%
905,0%
900,0%
895,0%
890,0%
85
90
95
97
98
99
Prob cruce
Fuente: Autores RODRIGUEZ, Camilo, ROMERO, Viviana
A partir de los resultados obtenidos anteriormente se comprueba la mejora en la segunda
versión del programa. Los costos se redujeron en promedio entre 0.15 y 0.35%, mientras
que el tiempo de ejecución del programa aumentó casi en un 1000%, lo que se puede
interpretar como ineficiencia pero si se consideran la cantidad de generaciones, al igual
que las dimensiones del problema, es razonable que su ejecución sea de 2 minutos en
promedio.
Al comparar los diferentes resultados obtenidos se determinó que para que éstos fueran
más confiables la probabilidad de cruce no debía ser menor a 80%. Y se verificó que la
probabilidad de mutación no debía ser mayor a 10%. La probabilidad de mutación más
recomendable está en el rango de 1 - 3%, debido a que así se garantiza el eficiente
funcionamiento del algoritmo al variar el individuo de una manera progresiva.
El lenguaje de simulación estudiantil evalúa el problema teniendo en cuenta tres
diferentes métodos, el resultado mediante el método de Vogel es aproximado al del
programa del algoritmo genético, evidenciándose así que aunque es más real es muy
aproximado a uno ideal, lo que hace pensar que tiene resultados mas óptimos.
Al realizar las diferentes pruebas al algoritmo de pudo determinar que la función objetivo
evalúa cada individuo de una manera adecuada, es fácil su ejecución y es flexible para
adoptar nuevas variables. Además el programa resulto ser claro y explicito para su uso.
63
7
CONCLUSIONES Y RECOMENDACIONES
Los algoritmos genéticos son técnicas de optimización muy flexibles y robustas que imitan
los procesos de evolución natural de organismos complejos y tienen una gran capacidad
para explorar en paralelo el espacio de soluciones en lugar de trabajar sobre un punto
único, como hacen los algoritmos basados en el cálculo. Estos algoritmos establecen
primero una relación entre una solución concreta y su codificación, después se crea una
población inicial de soluciones y se le somete a procesos cíclicos de selección, cruce y
mutación, mejorando la calidad de las soluciones en las próximas generaciones hasta
alcanzar una solución óptima del problema.
Las diferencias que existen entre los algoritmos genéticos y los métodos tradicionales
tales como la esquina noreste, costo mínimo, método de Vogel, método de los
multiplicadores entre otros se pueden resumir en cuatro aspectos: los AG trabajan con
una codificación del conjunto de parámetros, no con los propios parámetros; buscan en
una población de puntos, no en un solo punto; usan la información del resultado de cada
evaluación (función objetivo), no sus derivadas; y utilizan reglas de transición
probabilísticas no determinísticas.
Para este modelo de transporte asociado al tipo de optimización del sistema de una red
de centros de distribución y puntos de venta se determinaron algunas variables básicas
representadas en parámetros de entrada tales como la capacidad de producción de los
centros de distribución; la demanda exigida por los puntos de venta; la distancia entre
estos centros de distribución y puntos de venta; la cantidad y capacidad de los camiones;
y los costos de envío.
La función de selección de los individuos se realizó por medio del método de la ruleta que
consiste en crear una ruleta en la que cada cromosoma tiene asignada una fracción del
área total que es proporcional a su aptitud. Debido a que los individuos más aptos tienen
asignada una mayor área de la ruleta, sus posibilidades de ser seleccionados para el
paso siguiente son mejores que aquellos que tienen un área menor. En el caso de
minimizar como es en este modelo de transporte se utilizó el método pero de manera
invertida, es decir, se restó el mayor de costo de todos los demás con el fin de tener una
mayor probabilidad con el menor costo.
La función de decodificación del modelo de transporte permitió generar los valores
enteros de las cantidades que representan los diferentes cromosomas que constituyen
cada individuo en código binario, agrupándolos en una matriz. Las cantidades
corresponden a los envíos desde cada centro de distribución a cada punto de venta. La
evaluación de esta función se realiza por medio de la comprobación de las cantidades
solicitadas por los puntos de venta a cada centro de distribución.
La función objetivo del modelo del problema buscaba minimizar el costo de envío de las
unidades demandadas desde cada centro de distribución a cada punto de venta,
adicionando la razón que existe entre el número de viajes por camión por la distancia que
recorre cada camión desde cada centro de distribución hasta cada punto de venta y una
constante que representa el rendimiento de un galón de combustible por kilómetro, por el
64
precio de cada galón. Esta función está sujeta a unas condiciones que se deben cumplir
tales como los costos unitarios de envío que deben ser mayores que cero; la cantidad de
unidades enviadas desde el centro de distribución debe ser menor o igual a la capacidad
total del centro de distribución; el número de camiones disponibles para los centros de
distribución debe ser mayor que cero y finalmente la cantidad de unidades demandadas
por el punto de venta debe ser menor o igual a la capacidad total del centro de
distribución.
Los operadores genéticos empleados para el desarrollo del modelo fueron el cruce y la
mutación que por medio de asignaciones aleatorias permitieron obtener generaciones
óptimas.
El modelo de transporte se desarrolló en código Java 2.0 y estuvo conformado por
algunas clases u objetos. Una de ellas solicita al usuario la cantidad de individuos, el
número de centros de distribución, el número de puntos de venta, al igual que el número
de generaciones que se desee; se puede también utilizar la información real de una base
de datos. Los datos específicos se deben introducir tales como demandas de puntos de
venta, capacidad de producción de los centros de distribución, distancia entre éstos,
costos de envío, cantidad y capacidad de los camiones para cada centro de distribución, y
otros datos auxiliares como el precio del combustible y las probabilidades de los
operadores entre otros. Se deben acceder los datos y ejecutar el programa que en un
tiempo determinado arrojará la solución óptima frente a costos dentro de las generaciones
solicitadas.
Con este modelo de transporte se pueden realizar diversas pruebas variando las
probabilidades de cruce y mutación; se determinó que a menor probabilidad de cruce
mayor será el costo. A pesar de la tendencia de los resultados hacia la disminución de
costos, es necesario realizar un análisis estadístico profundo que permita concluir las
variaciones con respecto a las probabilidades.
Si se comparan estos resultados del algoritmo genético con otros de un programa de
simulación estudiantil se obtienen mayores costos en el primero debido a que éste
involucra distancias, por ende los costos de combustible, al igual que las capacidades y
cantidades de los camiones que permiten optimizar los envíos, es decir, contemplar la
opción de hacer más viajes en los camiones para cumplir con las demandas de los puntos
de venta. A partir de esto se puede sugerir subcontratar el servicio de transporte pues se
cubren los costos de envío sólo hasta los puntos de venta y no ida y regreso, a pesar que
sea necesario realizar varios viajes de los camiones.
La aplicación que pueden tener los algoritmos genéticos a los problemas de transporte
pueden ser diversas; su complejidad está determinada por el número de variables y las
condiciones que se deseen involucrar en el modelo. Para el caso de este proyecto se
consideraron algunas que permitieron comparar resultados y obtener soluciones óptimas
y cercanas a la realidad, pero el ideal sería poder involucrar el mayor número variables y
de gran importancia tales como el tiempo, las especificaciones de los productos a
transportar, imprevistos, entre otras. Igualmente, el uso de técnicas computarizadas
facilita los cálculos y reduce el tiempo de estos mismos; para el caso de este proyecto de
grado el programa desarrollado fue eficiente y de uso sencillo y claro.
65
BIBILOGRAFIA
CAMPOS, Javier. Algoritmos Genéticos, 1999. www.lsi.upc.es/~iea/transpas/9_geneticos/.
Septiembre 5 de 2003
Cómo
funciona
el
algoritmo
genético?,
2000.
http://www.geocities.com/aguilar_2000/ALGORITMOS_GENETICOS/algoritmo_genetico.h
tml. Septiembre 10 de 2003
CONDARCO,Primitivo,
Algoritmos
Genéticos,
2001.
www.bv.umsanet.edu.bo/revistas/ingenieria/numero01/articulos/modelos.htm. Septiembre
10 de 2003
COSTA, Carlos, Algoritmos Genéticos, 1997.ccp.servidores.net/genetico.html. Agosto 25
de 2003
ENCICLOPEDIA LIBRE UNIVERSAL, 1997. http://enciclopedia.us.es/wiki.phtml?title=
Algoritmos+gen% E9ticos. Septiembre 2 de 2003
MARTI, Rafael. Algoritmos Genéticos, 1992.www.uv.es/~rmarti/genet.html. Agosto 23 de
2003
MARTINEZ José J. Introducción a la Informática Evolutiva. Editorial Universal. España:
1999, 10-50p.
MERELO, Juan J. Algoritmos Genéticos, 1994.http://geneura.ugr.es/~jmerelo. Agosto 22
de 2003
PAREJO Carmen Cortés. Tesis Algoritmos Genéticos y problemas de visibilidad.
Universidad de Sevilla. 1996.
PÉREZ Freddy. Inteligencia Artificial. Universidad de Puerto Rico. 1998
PINNINGHOFF, Maria Angélica. Recorridos Óptimos de Líneas de Transporte Público
Usando Algoritmos Genéticos http://www.inf.udec.cl/revista/down09.html. Septiembre 2 de
2003
REVISTA UNIVERSIDAD DE MEDELLÍN, Volumen 23, Enero – Marzo 77, Artículo
Modelo de transporte oficina de planeamiento vial de Venezuela.
SANTO ORCERO, David. Técnicas de Selección.1 997. www.orcero.Org/irbis//disertacion/
node200.html. Agosto 27 de 2003
SCHULTZ, Alan C, Algoritmos Genéticos, 2001, http://www.aic.nrl.navy.mil/galist.
Septiembre 10 de 2003
TAHA, Hamdy, Investigación de operaciones, Sexta Edición, Editorial Alfaomega, España:
1995, Capitulo 5.
66
WINTER,
Gabriel,
Optimización
Global
en
Logística,
http://ceani.ulpgc.es/reports/logistica/ceanilogistica.html. Septiembre 30 de 2003
67
2000.
ANEXO A. MANUAL DE FUNCIONAMIENTO DEL PROGRAMA
Ventana 1
Al ejecutar el programa desde el JCreator se abre la primera ventana la cual permite
ingresar por pantalla la cantidad de individuos que se deseen, la cantidad de centros de
distribución al igual que la cantidad de puntos de venta. Por último se debe escribir la
cantidad de generaciones.
El botón llamado “Caso real” trae la información de una base de datos creada en Access
para no tener que ingresar todos los datos cada vez que se requiera.
Para continuar se debe dar clic en el botón iniciar.
68
Ventana 2
Cuando no se requiera el caso real, se deben ingresar los datos por pantalla, para este fin
la ventana 2 debe ser utilizada. Esta ventana está dividida en seis tablas.
Tabla de demanda: Se debe ingresar la demanda para cada punto de venta, el total de
estos fue ingresado mediante la ventana 1
Tabla de capacidad de la planta: Se debe ingresar la capacidad de cada punto de venta;
se deben tener en cuenta las restricciones.
Tabla de camiones disponibles: Para cada centro de distribución se deben escribir la
cantidad total de los camiones que se tienen disponibles. Posteriormente haciendo clic en
el botón “capacidad camiones” se podrán ingresar para cada camión su capacidad
respectiva.
Tabla de distancias: Esta tabla funciona como una matriz; el tamaño está determinado por
la cantidad de centros de distribución y el número de puntos de venta, donde cada
posición es la distancia que existe desde un centro de distribución a un punto de venta
determinado.
Tabla de costos de envío: Tiene las mismas características de la Tabla de distancias pero
se debe ingresar los costos unitarios de envió.
Información adicional: En estos campos se debe digitar los Km que el camión alcanza a
recorrer con un galón de combustible, el precio del galón del combustible.
Para la probabilidad de cruce se aconseja escribir un valor mayor de 80% y para la
probabilidad de mutación debe ser máximo 10%.
Una vez ingresada esta información se debe dar clic en el botón “Accesar datos”.
Una vez realizado el paso anterior se activa el botón “Ejecutar” y se hace clic para correr
el programa.
Cuando el programa está en ejecución en la parte superior derecha el programa se indica
esta acción con letras rojas. También, si es necesario detener la ejecución se tiene
activado dicho botón.
Cuando el programa detiene su ejecución se activan dos nuevos botones, botón
“Solución” y “Renombrar”.
69
Al hacer clic en el botón “Solución” se activa la ventana 3.
Ventana 3
Se observa una lista de datos para cada generación y dos botones, “Cerrar” y “Ver
solución”. El primero cierra la ventana, el segundo abre la siguiente ventana.
70
Ventana 4
La ventana solución muestra en 4 tablas los resultados de la ejecución del algoritmo.
Tabla genética: muestra la cantidad a enviar desde cada centro de distribución a cada
punto de venta pero sin codificar, es decir, muestra el cromosoma.
Tabla de carga: muestra en números enteros la cantidad a enviar.
Tabla de costos: En esta tabla se puede observar el costo en que se incurre para enviar la
cantidad de la tabla de carga.
Tabla de viajes: Muestra cuantos recorridos tiene que realizar cada camión para cumplir
con la demanda.
En la parte superior se observa el costo de transporte, el costo de envío y por ende los
costos totales.
71
Se tiene la opción de guardar esta información; para este proceso se cuenta con la
ventana 5, en donde se guardan los datos en pantalla de D.O.S.
72
Cuando el botón “Renombrar” está activado en la ventana 2 se puede recurrir a esta
opción la cual permite volver a ejecutar el programa incluso cambiando algunos datos.
73
ANEXO B. DESCRIPCION DEL FORMATO UML
UML (LENGUAJE DE MODELADO UNIFICADO)
Es un lenguaje de modelado visual que tiene como propósito el modelado orientado a
objetos y es utilizado para especificar, visualizar, construir y documentar un sistema de
software; también se utiliza para entender, diseñar, configurar, mantener y controlar la
información sobre los sistemas construidos.
Existían diversos métodos y técnicas orientadas a objetos, con muchos aspectos en
común pero utilizando distintas notaciones, lo que traía como consecuencia algunos
inconvenientes para el aprendizaje, aplicación, construcción y uso de herramientas; esto
generó la creación del UML como estándar para el modelamiento de sistemas de software
principalmente, pero con posibilidades de ser aplicado a todo tipo de proyectos.
Objetivos del UML
•
•
•
UML es un lenguaje de modelado de propósito general que pueden usar todos los
modeladores. No tiene propietario y está basado en el común acuerdo de gran
parte de la comunidad informática.
Ser tan simple como sea posible pero manteniendo la capacidad de modelar toda
la gama de sistemas que se necesita construir. UML necesita ser lo
suficientemente expresivo para manejar todos los conceptos que se originan en un
sistema moderno.
Imponer un estándar mundial.
Los conceptos y modelos de UML pueden agruparse en las siguientes áreas
conceptuales:
•
•
•
•
•
Estructura estática
Comportamiento dinámico
Construcciones de implementación
Organización del modelo
Mecanismos de extensión
La estructura utilizada para la descripción del algoritmo genético programado corresponde
a la estática, en donde se debe tener bien definido su universo, centrándose en los
conceptos claves de la aplicación, sus propiedades internas, y las relaciones entre cada
una de ellas. Los conceptos de la aplicación son modelados como clases, cada una de las
cuales describe un conjunto de objetos que almacenan información y se comunican para
implementar un comportamiento. La información que almacena es modelada como
atributos; la estructura estática se expresó mediante diagrama de clases.
74
En el gráfico 1 se observa un individuo por fuera del universo lo que indica que es un
actor principal representando una persona que utiliza el programa.
El cubo que encierra las señales representa el ambiente computacional en donde se
desarrolló el algoritmo genético. Las diferentes clases están representadas por los
rectángulos en donde cada uno está dividido en tres partes; la primera parte contiene el
nombre de la clase, la segunda contiene las variables que se utilizaron en esta clase y la
tercera parte nombra las funciones.
Las clases están unidas por:
Líneas continúas
Líneas continúas con terminación en flecha
Sucesión de líneas con terminación en flecha.
Las líneas continuas representan la asociación que tiene una clase con la otra, es decir,
una conexión bidireccional entre ellas; las líneas continuas con terminación en flecha
representan la dependencia que tiene una clase con otra. Por último, la sucesión de
líneas con terminación en flecha representa el requerimiento solicitado por una clase
hacia la otra.
La palabra “signal” hace relación a la señal que se le debe transmitir para que la siguiente
clase funcione. Una clase puede llamarse a si misma como es evidente en el caso de la
clase “mostrar datos”.
El gráfico 1 es en resumen, una vista estática de las clases que tiene el algoritmo genético
diseñado y programado en un lenguaje orientado a objetos, además, muestra la relación
que existe entre las diferentes clases utilizadas.
75
Descargar