ProyectoDeGradoAG

Anuncio
FORMULACIÓN DE UN ALGORITMO GENÉTICO PARA EL
PROBLEMA DE PROGRAMACIÓN DE ÓRDENES DE TRABAJO
DE UNA EMPRESA DE ARTES GRÁFICAS
PROYECTO DE GRADO
JAVIER MAURICIO GAMBOA SALGADO
Código: 544004
JOHN ALEXANDER GÓMEZ MARULANDA
Código: 553019
FUNDACIÓN UNIVERSITARIA KONRAD LORENZ
FACULTAD DE INGENIERÍA
IX SEMESTRE DE INGENIERÍA DE SISTEMAS
BOGOTÁ
1
FORMULACIÓN DE UN ALGORITMO GENÉTICO PARA EL
PROBLEMA DE PROGRAMACIÓN DE ÓRDENES DE TRABAJO
DE UNA EMPRESA DE ARTES GRÁFICAS
PROYECTO DE GRADO
JOHN ALEXANDER GÓMEZ MARULANDA
Código: 553019
JAVIER MAURICIO GAMBOA SALGADO
Código: 544004
Proyecto investigativo para optar al título de Ingeniero de Sistemas
Director de proyecto de grado
Ingeniero JUAN CARLOS GALEANO HUERTAS
FUNDACIÓN UNIVERSITARIA KONRAD LORENZ
FACULTAD DE INGENIERÍA
IX SEMESTRE DE INGENIERÍA DE SISTEMAS
BOGOTÁ
2
NOTA DE ACEPTACIÓN
_____________________________________________
_____________________________________________
_____________________________________________
_____________________________________________
_____________________________________________
_____________________________________________
_____________________________________________
_______________________________
Presidente del Jurado
_______________________________
Jurado
_______________________________
Jurado
3
A los futuros individuos Konradistas.
4
AGRADECIMIENTOS
A mi familia, especialmente a mis padres, Enrique y Clara, y a mi esposa, Carolina,
por la compresión y aliento inagotables.
Javier Gamboa
A Dios porque en él está mi vida, a mi esposa, Heidi, porque sin ella no habría
empezado esta parte del camino que hoy culmina y a mi hijo, Jiordie, porque en él
retomo fuerzas.
Alexander Gómez
5
CONTENIDO
Pág.
1
EXISTE UN PROBLEMA .............................................................................. 12
1.1 DEFINICIÓN DE ENTRADAS DEL PROBLEMA ......................................... 13
1.1.1
Orden de Producción. ................................................................... 13
1.1.2
Proceso. ...................................................................................... 14
1.1.3
Centro de Producción. .................................................................. 14
1.1.4
Orden de Trabajo ........................................................................ 15
1.2 ¿CUAL ES LA PROPUESTA PARA SOLUCIONARLO? ................................. 17
2 PARA COMENZAR CON ALGORITMOS GENÉTICOS ...................................... 20
2.1 ¿QUÉ SON LOS ALGORITMOS GENÉTICOS? .......................................... 20
2.2 DESCRIPCIÓN DEL FUNCIONAMIENTO DE LOS AG ................................ 21
2.2.1
Problema de optimización ............................................................. 22
3 MODELAMIENTO DEL ALGORITMO GENETICO ............................................ 36
3.1 TRABAJOS REALIZADOS ...................................................................... 36
3.1.1
Programación de tienda abierta. ................................................... 36
3.1.2
Programación de producción ........................................................ 36
3.1.3
Secuenciación dinámica................................................................ 37
3.2 DEFINICIONES PROPIAS DEL ALGORITMO GENÉTICO ........................... 37
3.2.1
Individuos ................................................................................... 38
3.2.2
Cromosomas ............................................................................... 38
3.2.3
Alelos .......................................................................................... 38
3.3 GENERACIÓN DE LA POBLACIÓN INICIAL ............................................. 39
3.4 PROCESO DE SELECCIÓN..................................................................... 40
3.5 PROCESO DE CRUCE............................................................................ 40
3.6 PROCESO DE MUTACIÓN ..................................................................... 42
3.7 DEFINICIÓN DE LA FUNCIÓN DE EVALUACIÓN (FITNESS) ..................... 43
3.7.1
Cumplimiento (C )........................................................................ 43
3.7.2
Colisiones (T ) ............................................................................. 43
3.7.3
Ocupación de centros de producción (P ) ...................................... 43
3.8 FUNCIÓN DE EVALUACIÓN (FITNESS) .................................................. 44
4 EVALUACIÓN DE PROTOTIPOS .................................................................. 45
4.1 CONDICIONES PARA LA GENERACIÓN DE PROTOTIPOS ........................ 45
4.1.1
Datos de trabajo .......................................................................... 45
4.1.2
Proceso de selección .................................................................... 45
4.1.3
Probabilidades de cruce y mutación .............................................. 46
4.2 PROTOTIPO 01.................................................................................... 46
4.2.1
Condiciones del algoritmo............................................................. 46
4.2.2
Resultados del prototipo 01 .......................................................... 47
6
5
6
7
8
4.2.3
Análisis de la situación en el prototipo 01. ..................................... 47
4.2.4
Acciones para el siguiente prototipo. ............................................. 48
4.2.5
Consideraciones para tener en cuenta en el próximo prototipo. ...... 48
4.3 PROTOTIPO 02.................................................................................... 49
4.3.1
Condiciones del algoritmo............................................................. 49
4.3.2
Resultados del prototipo 02 .......................................................... 49
4.3.3
Análisis de la situación en el prototipo 02. ..................................... 50
4.3.4
Acciones para el siguiente prototipo. ............................................. 50
4.4 PROTOTIPO 03.................................................................................... 51
4.4.1
Condiciones del algoritmo............................................................. 51
4.4.2
Resultados del prototipo 03. ......................................................... 51
4.4.3
Análisis de la situación en el prototipo 03. ..................................... 52
4.4.4
Acciones para el siguiente prototipo. ............................................. 52
4.5 PROTOTIPO 04.................................................................................... 53
4.5.1
Condiciones del algoritmo............................................................. 53
4.5.2
Resultados del prototipo 04. ......................................................... 54
4.5.3
Análisis de la situación en el prototipo 04. ..................................... 55
4.5.4
Acciones para el siguiente prototipo. ............................................. 56
4.6 PROTOTIPO 05.................................................................................... 56
4.6.1
Condiciones del algoritmo............................................................. 56
4.6.2
Resultados del prototipo 05. ......................................................... 57
4.6.3
Análisis de la situación en el prototipo 05. ..................................... 57
4.6.4
Acciones para el siguiente prototipo. ............................................. 58
4.7 COMPARACIÓN DEL PROTOTIPO 05 ..................................................... 58
EVALUACIÓN Y COMPARACIÓN DE RESULTADOS ....................................... 60
5.1 TIEMPO DE EJECUCIÓN ....................................................................... 62
5.1.1
Comparación en tiempo de ejecución. ........................................... 62
5.2 MEJOR INDIVIDUO .............................................................................. 63
5.2.1
Comparación del mejor individuo. ................................................. 63
5.3 PROMEDIO DE EVALUACIÓN ................................................................ 64
5.4 GENERACIÓN MEJOR INDIVIDUO ......................................................... 65
5.5 CUMPLIMIENTO................................................................................... 66
5.5.1
Comparación del cumplimiento ..................................................... 66
5.6 COLISIONES........................................................................................ 67
5.6.1
Evaluación de las colisiones. ......................................................... 67
CONCLUSIONES ........................................................................................ 68
SUGERENCIAS........................................................................................... 70
REFERENCIAS ........................................................................................... 71
7
LISTA DE ILUSTRACIONES
Pág.
Ilustración 1 - Pasos para solucionar analíticamente el problema de programación
de planta de producción................................................................................... 18
Ilustración 2 - Esquema general del funcionamiento de un AG ........................... 21
Ilustración 3 - Gráfica de la función a optimizar ................................................. 22
Ilustración 4 - Modelo general del AG propuesto................................................ 37
Ilustración 5 – Vista previa de la ejecución del prototipo 01 ............................... 47
Ilustración 6 – Vista previa de la ejecución del prototipo 02 ............................... 49
Ilustración 7 - Vista previa de la ejecución del prototipo 04 ................................ 54
Ilustración 8 - Vista previa de la tabla de resultados obtenida en la ejecución del
prototipo 04 .................................................................................................... 55
Ilustración 9 - Vista previa de la ejecución del prototipo 05 ................................ 57
8
RESUMEN
En el desarrollo del presente trabajo se propone generar una solución al problema
de programación de planta de producción mediante la utilización de algoritmos
genéticos, usándolos como técnica que permita no sólo cubrir las necesidades que
ya abordan soluciones analíticas sino ir mas allá proponiendo una nueva
organización de los recursos y de los trabajos a realizar, y permitiendo a través de
ellos explorar al máximo el universo de posibilidades que se pueden presentar para
solucionarlo. Se plantea un enfoque práctico que guía al lector por la
conceptualización y el modelamiento de un algoritmo genético elemental, para
luego proponer un modelo que represente una solución del problema planteado.
9
INTRODUCCION
Procesar alrededor de trescientos pedidos diarios de clientes que necesitan cada
uno el suyo sin retraso, cada pedido con una serie de pasos que deben ser
ejecutados minuciosamente para cumplir con los requerimientos exigidos,
contando sólo con noventa máquinas para llevar a cabo los procesos, es una tarea
que de entrada suena titánica.
Adicionalmente, si a lo anterior se agrega que las tareas deben ser ejecutadas en
un orden específico, que dependen en cierta proporción de la mano de obra y que
día a día están llegando nuevos pedidos de clientes que exigen el mismo
cumplimiento y una excelente calidad, el procesamiento de los pedidos se
convierte en una tarea bastante compleja.
Durante mucho tiempo se han solucionado estos y otros problemas de igual o
mayor envergadura realizando análisis complejos o aplicando una metodología que
pocas personas se atreven a modificar y mucho menos tratan de cuestionar la
idoneidad o la obtención de una mejor solución. Un escenario bastante
desalentador se vislumbra cuando se verifica que obtener una solución a estos
problemas puede demandar grandes cantidades de tiempo y recursos tanto
técnicos como humanos.
Es por esto que se realiza un algoritmo genético que pueda ser utilizado en la
programación de planta de producción de una empresa de artes gráficas. En el
desempeño de esta labor, es necesario realizar una representación válida de los
elementos que componen el problema y una función que permita evaluar cada una
de las soluciones obtenidas. De igual forma, es prioritario evaluar la calidad de las
soluciones obtenidas respecto a la utilizada en una empresa del sector productivo
objeto del presente trabajo.
10
El anterior panorama, plantea entonces la utilización de la tecnología representada
en elementos de hardware y software como una herramienta para modelar este
tipo de procesos complejos, de modo que sus resultados puedan llegar a ser tan
confiables, que la administración y organización de los recursos de producción se
puedan dejar prácticamente en sus manos.
11
1 EXISTE UN PROBLEMA1
El sector manufacturero transforma materias primas en productos mediante la
ejecución de procesos manuales o automáticos. De este sector se divide un grupo
de empresas que se dedican a elaborar productos a la medida de las necesidades,
es decir, las especificaciones, materias primas a utilizar y condiciones entre otras
características son definidas por el cliente, lo que hace que cada producto sea
totalmente nuevo a la hora de producirlo; las empresas de artes gráficas se
encuentran en este grupo.
Al no tener productos que se elaboren de la misma forma y en cantidades
regulares, es necesario hacer una programación dinámica de la planta de
producción en la cual se asegure el cumplimiento de los compromisos adquiridos
con el cliente.
Esta programación debe tener en cuenta todos los procesos que se deben ejecutar
para terminar la elaboración de un producto, los tiempos que se toma para
terminar cada proceso, la complejidad del mismo a la hora de ejecutarlo y el
proceso que debe estar terminado antes de poder empezar uno nuevo.
El problema consiste en hacer la programación de la planta de producción de una
empresa de artes gráficas considerando las situaciones expresadas anteriormente,
permitiendo optimizar los recursos que se utilizan para la ejecución de los procesos
y cumpliendo los compromisos adquiridos.
1
La información de este capítulo es obtenida a partir de la experiencia de los autores en el sector
manufacturero, específicamente en empresas de artes gráficas.
12
1.1
DEFINICIÓN DE ENTRADAS DEL PROBLEMA
Es de vital importancia realizar una buena definición de las entradas que influyen
en su problema, dado que con base en ellas se desarrollará el proceso que
intentará solucionar el problema específico. Para este problema se definen las
variables especificadas a continuación.
1.1.1 Orden de Producción.
La orden de producción (OP) corresponde a la orden que el área de ingeniería de
producto o planeación hace a la planta de producción, en la cual consigna todas
las especificaciones técnicas necesarias para llevar a cabo la producción del
producto según lo acordado previamente con el cliente. Adicionalmente, en la OP
se ingresan los datos correspondientes a cantidades, fechas de entrega,
condiciones de negociación y aspectos técnicos adicionales de relevancia para el
proceso productivo.
De acuerdo a lo anterior y según el conocimiento y la experiencia de la industria
gráfica y manufacturera, el área de ingeniería de producto o planeación plasma en
la orden de producción la respuesta a las preguntas: ¿qué se hace? y ¿cómo se
hace?
1.1.1.1
Características de la orden de producción.
A continuación se presentan las características de la orden de producción que se
tendrán en cuenta para el desarrollo del algoritmo propuesto.
 Cantidad: Es la cantidad de ejemplares o productos completos que la
planta de producción debe elaborar.
 Fecha de entrega: La fecha de entrega corresponde al día en que se debe
terminar de procesar la orden de producción en la planta para preparar la
entrega del producto terminado al cliente.
13
1.1.2 Proceso.
Es la acción o actividad que se ejecuta durante el proceso productivo sobre una
orden de producción o parte de ella, en consecuencia, el proceso siempre es
ejecutado por un centro de producción.
En cualquier planta de producción un proceso debe poder ser ejecutado por al
menos un centro de producción, sin importar si la acción se desempeña de forma
manual o automática.
1.1.2.1
Características del proceso.
A continuación se presentarán las características del proceso que se tendrán en
cuenta para el desarrollo del algoritmo propuesto.
 Predecesor:
Esta
característica
es
de
vital
importancia
para
la
programación de la planta de producción ya que corresponde al proceso
que debe ser ejecutado antes de realizarse el proceso actual. Para este
trabajo se define que un proceso sólo puede tener un predecesor, aunque
no necesariamente deba tener uno.
1.1.3 Centro de Producción.
Como centro de producción (CP) puede catalogarse el lugar específico en el que se
desarrolla uno o más procesos. La naturaleza de los CP está dada por la forma
como se llevan a cabo las actividades dentro de él. Por lo tanto pueden ser de tipo
manual, que corresponde a una persona o grupo de ellas que se dedica a realizar
actividades manuales sobre una orden de producción o automático en el que una
máquina ejecuta acciones o actividades sobre una orden de producción.
Con base en los anteriores conceptos, se puede concluir que el CP es la máquina,
persona o grupo de personas que ejecutan una serie de procesos sobre la orden
14
de producción para lo cual pueden consumir o transformar una materia prima
determinada.
Un CP debe ejecutar una serie de procesos secuencialmente. Sin embargo, si un
centro de producción ejecuta dos procesos simultáneamente sobre una OP, éstos
deben ser agrupados y nombrados como uno solo para que se puedan llevar a la
programación en la planta.
1.1.3.1
Características del centro de producción.
A continuación se presentarán las características del centro de producción que se
tendrán en cuenta para el desarrollo del algoritmo propuesto.
 Disponibilidad:
Es
una
variable
sumamente
importante
para
la
programación de la planta ya que expresa el tiempo en horas al día que el
centro de producción está disponible para ejecutar los procesos.
 Procesos que ejecuta: Esta es una lista de los procesos que pueden ser
ejecutados en el centro de producción. En cada uno de los procesos se debe
especificar su rendimiento.
 Rendimiento por proceso: Corresponde a la cantidad de unidades que el
centro de producción puede hacer por hora ejecutando un proceso
determinado.
1.1.4 Orden de Trabajo
La orden de trabajo (OT) es la especificación técnica en cuanto a la ejecución de
los procesos, los tiempos en que deben ser ejecutados y las cantidades que deben
salir al fin de la ejecución.
Una orden de trabajo corresponde a un solo centro de producción y a un único
proceso a ser ejecutado en dicho centro, por lo tanto se crean tantas órdenes de
trabajo por orden de producción como procesos se empleen para realizarla.
15
Las órdenes de trabajo se crean de acuerdo a la explosión de procesos que se
hace en la ingeniería de producto o planeación.
1.1.4.1
Características de la orden de trabajo.
A continuación se presentarán las características de la orden de trabajo que se
tendrán en cuenta para el desarrollo del algoritmo propuesto.
 Orden de producción: Orden de producción a la cual pertenece la orden
de trabajo.
 Proceso: Identifica el proceso que se debe ejecutar en la orden de trabajo.
 Centro de producción: Así como el proceso, esta característica identifica
el centro de producción que ejecutará el proceso correspondiente.
 Prioridad: La prioridad es puesta por defecto desde ingeniería de producto
o planeación con el mismo nivel para todas las órdenes de trabajo nuevas,
sin embargo, el programador de la planta de producción puede modificar la
prioridad en caso de que se deba ejecutar una orden de trabajo en cierto
orden específico, dando una prioridad mayor a esta en el proceso de
programación.
 Cantidad: Contrario a lo que se puede pensar, la cantidad de la OT no
siempre corresponde a la cantidad de la orden de producción. Con mayor
exactitud, en la OT la cantidad refleja el número de unidades que se deben
procesar. En la mayoría de los procesos, la cantidad a ejecutar es mayor a
la cantidad de la orden de producción, dado que se agregan desperdicios o
en algunos casos de acuerdo al proceso, este se debe ejecutar dos o más
veces.
 Se debe aclarar que esta cantidad es determinada por el proceso de
ingeniería de producto o planeación de la orden de producción.
 Eficiencia: Corresponde a la eficiencia con que el centro de producción
ejecuta un proceso en una orden de trabajo determinada, por defecto, la
16
eficiencia es definida en planeación, pero igualmente el programador puede
cambiar la eficiencia de acuerdo a las condiciones físicas del trabajo a
realizar.
 Tiempo: De acuerdo al rendimiento que tiene el centro de producción
configurado para ejecutar un proceso, a la cantidad que se debe ejecutar y
a la eficiencia con que esté configurada la orden de trabajo, se calcula el
tiempo que se va a tardar para procesar la cantidad requerida. Esta
característica se ingresa durante el proceso de programación ya que es allí
cuando se conoce el tiempo de ejecución.
 Fecha de inicio: De acuerdo al proceso de programación esta variable es
calculada y corresponde a la fecha y hora en que el centro de producción
debe empezar a procesar la orden de trabajo.
 Fecha final: Es el resultado de sumar a la fecha de inicio de ejecución del
proceso, el tiempo que se tarda en realizarse el mismo, es decir,
corresponde a la fecha y hora en que el centro de producción debe finalizar
la ejecución de la orden de trabajo.
1.2 ¿CUAL ES LA PROPUESTA PARA SOLUCIONARLO?
La ilustración 1 muestra la forma analítica de solucionar el problema, tal y como se
hace en varias empresas de artes gráficas:
17
Ilustración 1 - Pasos para solucionar analíticamente el problema de programación de planta de producción
En las soluciones analíticas del problema, resulta bastante complicado agregar
variables de decisión, tales como dividir el trabajo para que sea ejecutado
paralelamente, o ejecutar el trabajo utilizando un recurso más eficiente o por lo
menos diferente al inicialmente configurado.
18
De igual forma, cuando el número de órdenes de producción crece o se introducen
nuevas variables, hacer el análisis se vuelve una tarea dispendiosa y complicada.
Debido al anterior panorama, se propone dar solución al problema mediante la
utilización de la técnica de algoritmos genéticos.
19
2 PARA COMENZAR CON ALGORITMOS GENÉTICOS
2.1 ¿QUÉ SON LOS ALGORITMOS GENÉTICOS?
Los algoritmos genéticos (AG) son métodos utilizados para resolver problemas
complejos
de
búsqueda
y
optimización,
inspirados
en
la
naturaleza
y
específicamente en el proceso evolutivo de los seres vivos.
Según Charles Darwin [7], a lo largo de las generaciones, las poblaciones
evolucionan en la naturaleza de acorde con los principios de la selección natural y
la supervivencia de los más aptos. El medio ambiente ejerce una presión sobre las
especies de tal forma que algunos individuos sobreviven y otros no. Aquellos seres
que sobreviven tienen la oportunidad de reproducirse y al hacerlo se dice que sus
características pasan a la siguiente generación. Estas características son
transmitidas por los padres a sus hijos a través de los genes.
Por imitación de este proceso, los AG son capaces de ir creando soluciones para
problemas del mundo real. La evolución de dichas soluciones hacia valores óptimos
del problema, depende en buena medida de una adecuada evaluación de las
mismas.
Goldberg en [1] define los algoritmos genéticos de la siguiente manera. “Los
algoritmos genéticos, AG, con algoritmos de búsqueda basados en mecanismos de
selección y de genética natural. Ellos combinan la ley del más fuerte entre
estructuras de cadenas con intercambio de información estructurada y aleatoria
para formar un algoritmo de búsqueda con algunas de las innovadoras bondades
de la búsqueda humana. En cada generación, es creado un nuevo conjunto de
criaturas artificiales usando bits y partes de los más fuertes de las anteriores
20
generaciones; una nueva parte opcional es asumida para una buena medida.
Mientras combinan, los AG no son una simple ruta aleatoria. Ellos eficientemente
explotan la información histórica para especular en nuevos puntos de búsqueda
con una mejora esperada en la ejecución.”
2.2 DESCRIPCIÓN DEL FUNCIONAMIENTO DE LOS AG
De acuerdo a lo planteado en [2], es posible observar el esquema general del
funcionamiento de un algoritmo genético a través de la ilustración 2.
Ilustración 2 - Esquema general del funcionamiento de un AG
21
Cada uno de los elementos, operadores y procesos que componen un AG son
ilustrados a continuación mediante un ejemplo práctico.
2.2.1 Problema de optimización
En [2] se encuentra el siguiente problema en el cual se desea maximizar la
siguiente función:
Ilustración 3 - Gráfica de la función a optimizar
𝑴𝒂𝒙𝒊𝒎𝒊𝒛𝒂𝒓 𝒇(𝒙𝟏 , 𝒙𝟐 ) = 𝟐𝟏. 𝟓 + 𝒙𝟏 𝐬𝐢𝐧(𝟒𝝅𝒙𝟏 ) + 𝒙𝟐 𝐬𝐢𝐧(𝟐𝟎𝝅𝒙𝟐 )
Como parámetros iniciales se asignan los siguientes intervalos de las variables para
reducir el espacio de búsqueda de solución:
−𝟑. 𝟎 ≤ 𝒙𝟏 ≤ 𝟏𝟐. 𝟏
𝟒. 𝟏 ≤ 𝒙𝟐 ≤ 𝟓. 𝟖
22
2.2.1.1
Representación del problema
La representación del problema es el proceso que permite establecer la forma
como un dato va a ser procesado a través del algoritmo. Para describir mejor esta
etapa es necesario utilizar los conceptos de genotipo y fenotipo. El genotipo es la
forma utilizada para representar las características de un elemento, mientras que
el fenotipo es el conjunto de características de ese organismo.
Para este caso se decide representar el problema en cadenas binarias. La longitud
de cada cadena depende de la precisión requerida en la solución. Por ejemplo, el
dominio de la variable xj es [aj , bj] y la precisión requerida es de cinco posiciones
decimales después del punto. Este parámetro de precisión implica que el rango de
dominio de cada variable debería estar dividida en por lo menos (bj - aj) x 105
tamaños. Los bits requeridos (mj ) para una variable se calcula como se muestra a
continuación:
2𝑚𝑗−1 < (𝑏𝑗 − 𝑎𝑗 ) × 105 ≤ 2𝑚𝑗 − 1
Una representación de una cadena binaria para un número real de la variable xj
es:
𝑥𝑗 = 𝑎𝑗 + 𝑑𝑒𝑐𝑖𝑚𝑎𝑙(𝑠𝑢𝑏𝑠𝑡𝑟𝑖𝑛𝑔𝑗 ) ×
(𝑏𝑗 − 𝑎𝑗 )
2𝑚𝑗 − 1
donde 𝑑𝑒𝑐𝑖𝑚𝑎𝑙(𝑠𝑢𝑏𝑠𝑡𝑟𝑖𝑛𝑔𝑗 ) representa el valor decimal de 𝑠𝑢𝑏𝑠𝑡𝑟𝑖𝑛𝑔𝑗 .
Si se supone que la precisión se estima en cinco posiciones después del punto
decimal, los bits requeridos para las variables x1 y x2 se calculan así:
Para x1:
(𝑏𝑗 − 𝑎𝑗 ) × 105 = (12.1 − (−3.0)) × 10000 = 𝟏𝟓𝟏𝟎𝟎𝟎
217 < 151000 ≤ 218 → 𝑚1 = 18
23
Para x2:
(𝑏𝑗 − 𝑎𝑗 ) × 105 = (5.8 − 4.1) × 10000 = 𝟏𝟕𝟎𝟎𝟎
214 < 17000 ≤ 215 → 𝑚2 = 15
𝒎 = 𝒎𝟏 + 𝒎𝟐 = 𝟑𝟑
Por lo tanto la longitud del cromosoma es de 33 bits y se representa de la
siguiente forma:
33 bits
𝑣𝑗 000001010100101001 101111011111110
18 bits
15 bits
Para ver la representación de las variables x1 y x2 , los valores correspondientes de
las mismas y su conversión a números reales, están dados los siguientes
procedimientos:
Variable
Cadena binaria
Número decimal
x1
000001010100101001
5417
x2
101111011111110
24318
𝑥1 = −3.0 + 5417 ×
(12.1 − (−3.0))
= −2,687969
218 − 1
24
𝑥2 = 4.1 + 24318 ×
2.2.1.2
(5.8 − 4.1)
= 5,361653
215 − 1
Población inicial
Una población es una representación abstracta de un segmento o conjunto de
individuos. Para el caso específico de los AG, existe una serie de poblaciones que
se van generando en la medida en que el algoritmo se ejecuta. La población inicial
es aquella que se toma como base para iniciar el proceso evolutivo. Con el paso
del tiempo, se espera que los individuos de las nuevas generaciones tengan genes
o características de los mejores individuos de las poblaciones anteriores.
Para el ejemplo, la población inicial consta de diez (10) individuos generados de
forma aleatoria tal y como se muestra a continuación:
𝑣1 = [000001010100101001101111011111110]
𝑣2 = [001110101110011000000010101001000]
𝑣3 = [111000111000001000010101001000110]
𝑣4 = [100110110100101101000000010111001]
𝑣5 = [000010111101100010001110001101000]
𝑣6 = [111110101011011000000010110011001]
𝑣7 = [110100010011111000100110011101101]
𝑣8 = [001011010100001100010110011001100]
𝑣9 = [111110001011101100011101000111101]
𝑣10 = [111101001110101010000010101101010]
donde sus respectivos valores reales son:
𝑣1 = [𝑥1 , 𝑥2 ] = [−2.687969, 5.361653]
𝑣2 = [𝑥1 , 𝑥2 ] = [0.470141, 4.170144]
𝑣3 = [𝑥1 , 𝑥2 ] = [10.419457, 4.661461]
𝑣4 = [𝑥1 , 𝑥2 ] = [6.159951, 4.109598]
𝑣5 = [𝑥1 , 𝑥2 ] = [−2.301286, 4.477282]
𝑣6 = [𝑥1 , 𝑥2 ] = [11.788084, 4.174346]
𝑣7 = [𝑥1 , 𝑥2 ] = [9.342067, 5.121702]
𝑣8 = [𝑥1 , 𝑥2 ] = [−0.330256, 4.694977]
𝑣9 = [𝑥1 , 𝑥2 ] = [11.671267, 4.873501]
𝑣10 = [𝑥1 , 𝑥2 ] = [11.446273, 4.171908]
25
2.2.1.3
Evaluación
La evaluación es el proceso que permite determinar el valor de un individuo dada
una función de comparación denominada función de evaluación.
La definición acertada de la función de evaluación es uno de los elementos
cruciales en el comportamiento de los AG. Idealmente interesa construir funciones
objetivo con “ciertas regularidades” en cuanto a su comportamiento, es decir,
funciones objetivo que verifiquen que para dos individuos que se encuentren
cercanos en el espacio de búsqueda, sus respectivos valores en las funciones
objetivo sean similares.
Un problema habitual en las ejecuciones de los AG surge debido a la velocidad con
la que el algoritmo converge, es decir, el tiempo que tarda el algoritmo en
estabilizar los valores de evaluación. En algunos casos la convergencia es muy
rápida, lo que suele denominarse convergencia prematura, en la cual el algoritmo
converge hacia óptimos locales, mientras que en otros pasos el problema es justo
el contrario, es decir se produce una convergencia lenta del algoritmo. Una posible
solución a estos problemas pasa por efectuar transformaciones en la función
objetivo.
El proceso de evaluación de un cromosoma consiste en los siguientes tres pasos:
 Convertir el genotipo del cromosoma a su fenotipo. En otras palabras, esto
significa convertir la cadena de caracteres a sus valores reales.
𝑥 𝑘 = (𝑥1𝑘 , 𝑥2𝑘 ), 𝑘 = 1,2, … . , 𝑡𝑎𝑚𝑎ñ𝑜 𝑑𝑒 𝑙𝑎 𝑝𝑜𝑏𝑙𝑎𝑐𝑖ó𝑛
 Evaluar la función objetivo con los valores anteriormente obtenidos.
𝑓(𝑥 𝑘 )
 Convertir el valor de la función objetivo en un valor valido para realizar una
evaluación y una posterior comparación. En el caso de este ejercicio, cabe
anotar que se utiliza como función de evaluación la misma función objetivo.
26
𝑒𝑣𝑎𝑙(𝑣𝑘 ) = 𝑓(𝑥 𝑘 ), 𝑘 = 1,2, … . , 𝑡𝑎𝑚𝑎ñ𝑜 𝑑𝑒 𝑙𝑎 𝑝𝑜𝑏𝑙𝑎𝑐𝑖ó𝑛
Los valores de evaluación de cada cromosoma se muestran a continuación:
𝑒𝑣𝑎𝑙(𝑣1 ) = 𝑓(−2.687969, 5.361653) = 19.805119
𝑒𝑣𝑎𝑙(𝑣2 ) = 𝑓(0.470141, 4.170144) = 17.370896
𝑒𝑣𝑎𝑙(𝑣3 ) = 𝑓(10.419457, 4.661461) = 9.590546
𝑒𝑣𝑎𝑙(𝑣4 ) = 𝑓(6.159951, 4.109598) = 29.406122
𝑒𝑣𝑎𝑙(𝑣5 ) = 𝑓(−2.301286, 4.477282) = 15.686091
𝑒𝑣𝑎𝑙(𝑣6 ) = 𝑓(11.788084, 4.174346) = 11.900541
𝑒𝑣𝑎𝑙(𝑣7 ) = 𝑓(9.342067, 5.121702) = 17.958717
𝑒𝑣𝑎𝑙(𝑣8 ) = 𝑓(−0.330256, 4.694977) = 19.763190
𝑒𝑣𝑎𝑙(𝑣9 ) = 𝑓(11.671267, 4.873501) = 26.401669
𝑒𝑣𝑎𝑙(𝑣10 ) = 𝑓(11.446273, 4.171908) = 10.252480
De acuerdo a la anterior evaluación es simple ver que el cromosoma v4 es el más
fuerte, mientras que el cromosoma v3 es el más débil.
2.2.1.4
Selección
La selección es la encargada de transmitir y conservar aquellas características de
las soluciones que se consideran valiosas a lo largo de las generaciones. Existen
diversos métodos de selección dentro de los más usados están la selección por
ruleta y por torneo. En la ruleta, la probabilidad que tiene un individuo de
reproducirse es proporcional a su valor de función de evaluación, es decir, a su
adaptación.
Si consideramos la población Q que consta de n individuos y a fi como el valor de
evaluación de un individuo i que es miembro de Q, la probabilidad pi de seleccionar
un individuo i, está dada por:
𝑝𝑖 =
𝑓𝑖
∑𝑛1 𝑓𝑖
La selección por torneo reporta un valor computacional muy bajo debido a su
sencillez. Se selecciona un grupo de t individuos (normalmente t = 2, torneo
27
binario) y se genera un número aleatorio entre 0 y 1. Si este número es menor
que un cierto umbral K (usualmente K = 0,75), se selecciona para reproducirse al
individuo con mejor adaptación, y si este número es menor que K, se selecciona,
por el contrario, al individuo con peor adaptación.
En la mayoría de casos, es adoptada la rueda de ruleta como método de selección;
con esto se logra una selección proporcional de la evaluación y se puede
seleccionar una nueva población con respecto a la distribución de probabilidad
basada en los valores de evaluación. Para el ejemplo, la rueda de ruleta puede ser
construida de la siguiente forma:
 Calcular los valores de evaluación eval(vk) de cada cromosoma vk.
𝑒𝑣𝑎𝑙(𝑣𝑘 ) = 𝑓(𝑥), 𝑘 = 1,2, … . , 𝑡𝑎𝑚𝑎ñ𝑜 𝑑𝑒 𝑙𝑎 𝑝𝑜𝑏𝑙𝑎𝑐𝑖ó𝑛
 Calcular la evaluación total de la población.
𝑡𝑎𝑚𝑎ñ𝑜 𝑝𝑜𝑏
𝐹=
∑
𝑒𝑣𝑎𝑙(𝑣𝑘 )
𝑘=1
 Calcular la probabilidad de selección pk de cada cromosoma vk.
𝑝𝑘 =
𝑒𝑣𝑎𝑙(𝑣𝑘 )
, 𝑘 = 1,2, … . , 𝑡𝑎𝑚𝑎ñ𝑜 𝑑𝑒 𝑙𝑎 𝑝𝑜𝑏𝑙𝑎𝑐𝑖ó𝑛
𝐹
 Calcular la probabilidad de selección acumulada qk para cada cromosoma vk.
𝑘
𝑞𝑘 = ∑ 𝑝𝑗 , 𝑘 = 1,2, … . , 𝑡𝑎𝑚𝑎ñ𝑜 𝑑𝑒 𝑙𝑎 𝑝𝑜𝑏𝑙𝑎𝑐𝑖ó𝑛
𝑗=1
El proceso de selección inicial lanzando la rueda de ruleta n veces, donde n es
igual al tamaño de la población; cada vez que se lance la ruleta, un cromosoma
simple es seleccionado para una nueva población de la siguiente forma:
28
 Generar un número aleatorio r dentro del rango [0, 1].
 Si 𝑟 ≤ 𝑞1 , entonces se selecciona el cromosoma v1; en caso contrario se
selecciona el kesimo cromosoma 𝑣𝑘 (2 ≤ 𝑘 ≤ 𝑡𝑎𝑚𝑎ñ𝑜 𝑑𝑒 𝑙𝑎 𝑝𝑜𝑏𝑙𝑎𝑐𝑖ó𝑛) tal que
𝑞𝑘−1 < 𝑟 ≤ 𝑞𝑘 .
La evaluación total de la población es:
10
𝐹 = ∑ 𝑒𝑣𝑎𝑙(𝑣𝑘 ) = 178.135372
𝑘=1
La probabilidad de selección pk para cada cromosoma vk(k=1,2,…,10) es la
siguiente:
p1 = 0.111180
p2 = 0.097515
p3 = 0.053839
p4 = 0.165077
p5 = 0.088057
p6 = 0.066806
p7 = 0.100815
p8 = 0.110945
p9 = 0.148211
p10 = 0.057554
La probabilidad de selección acumulada qk para cada cromosoma vk(k=1,2,…,10)
es la siguiente:
q1 = 0.111180
q2 = 0.208695
q3 = 0.262534
q4 = 0.427611
q5 = 0.515668
q6 = 0.582475
q7 = 0.683290
q8 = 0.794234
q9 = 0.942446
q10 = 1.000000
Ahora se lanza diez veces la rueda de ruleta, y con cada lanzamiento se selecciona
un cromosoma simple para la nueva población. Una secuencia aleatoria de diez
números entre el rango [0,1] se muestra a continuación:
0.301431
0.322062
0.766503
0.881893
0.350871
0.583392
0.177618
0.343242
0.032685
0.197577
29
El primer número aleatorio r1 = 0.301431 es más grande que la probabilidad
acumulada q3 y es más pequeño que q4, lo que significa que el cromosoma v4 es
seleccionado para la nueva población; el segundo número aleatorio r2 = 0.322062
es más grande que q3 y es más pequeño que q4, con lo cual nuevamente el
cromosoma v4 es seleccionado para la nueva población. Una vez realizado el
análisis de los diez números aleatorios la nueva población está conformada de la
siguiente forma:
𝑣′1 = [100110110100101101000000010111001] (𝑣4 )
𝑣′2 = [100110110100101101000000010111001] (𝑣4 )
𝑣′3 = [001011010100001100010110011001100] (𝑣8 )
𝑣′4 = [111110001011101100011101000111101] (𝑣9 )
𝑣′5 = [100110110100101101000000010111001] (𝑣4 )
𝑣′6 = [110100010011111000100110011101101] (𝑣7 )
𝑣′7 = [001110101110011000000010101001000] (𝑣2 )
𝑣′8 = [100110110100101101000000010111001] (𝑣4 )
𝑣′9 = [000001010100101001101111011111110] (𝑣1 )
𝑣′10 = [001110101110011000000010101001000] (𝑣2 )
2.2.1.5
Cruce
El operador de cruce permite realizar una exploración de toda la información
almacenada hasta el momento en la población y combinarla para crear mejores
individuos.
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. Para lo anterior no se tiene un modo formal para
seleccionar la técnica de mejor adaptación a un problema específico, sin embargo
es recomendable analizar la naturaleza de la cadena y los genes del individuo, con
el fin de conocer que elementos se pueden cruzar para lograr la creación de un
individuo que combine las mejores características de los padres.
30
Para realizar el cruce entre parejas de cromosomas se utiliza el método de “un
punto de corte” en el cual se selecciona aleatoriamente un punto de corte con
rango [1, tamaño del cromosoma] y se intercambian las partes derechas de los
padres para generar dos cromosomas hijos. Como ejemplo se toman los
cromosomas v1 y v2 de la población inicial, si el punto de corte se estableció en el
gen 17 el proceso de cruce se puede visualizar de la siguiente manera:
Punto de corte
𝑣1 = [0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0]
𝑣2 = [0 0 1 1 1 0 1 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0]
Los cromosomas resultantes del intercambio de los genes a la derecha del punto
de corte son:
𝑣′1 = [0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0]
𝑣′2 = [0 0 1 1 1 0 1 0 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0]
Para el ejemplo se determina que la probabilidad de cruce es pc = 0.25, lo cual
indica que solo el 25% de los cromosomas tienden a ser cruzados.
Al lanzar una secuencia de diez números aleatorios para analizar la probabilidad de
cruce de cada cromosoma se obtiene los siguientes resultados:
0.625721
0.266823
0.288644
0.295114
0.163274
0.567461
0.085940
0.392865
0.770714
0.548656
Por lo que se identifica que solo los cromosomas v’5 y v’7 son seleccionados para
ser cruzados. Si se lanza un nuevo número aleatorio con rango [1, 33] para elegir
el punto de corte (se obtuvo el número 15) se obtiene la siguiente operación:
31
Punto de corte
𝑣′5 = [1 0 0 1 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1]
𝑣′7 = [0 0 1 1 1 0 1 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0]
Los nuevos hijos resultantes de la operación de cruce son:
𝑣′5 = [1 0 0 1 1 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0]
𝑣′7 = [0 0 1 1 1 0 1 0 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1]
2.2.1.6
Mutación
La mutación se considera un operador básico, que proporciona un pequeño
elemento de aleatoriedad en el entorno de los individuos de la población mediante
la alteración de uno o más genes con una probabilidad igual a la tasa de mutación.
Si bien se admite que el operador de cruce es el responsable de efectuar la
búsqueda a lo largo del espacio de posibles soluciones (exploración), también
parece desprenderse de los experimentos efectuados por varios investigadores que
el operador de mutación realiza una explotación de la población y va ganando en
importancia a medida que la población de individuos va convergiendo. El objetivo
del operador de mutación es producir nuevas soluciones a partir de la modificación
de un cierto número de genes de una solución existente, con la intención de
fomentar la variabilidad dentro de la población. Existen diversas formas de realizar
la mutación, desde la más sencilla, donde cada gen muta aleatoriamente con
independencia del resto de genes, hasta configuraciones más complejas donde se
tienen en cuenta la estructura del problema y la relación entre los distintos genes.
Cabe anotar que la forma en la que se altera un gen depende de la forma en que
se realizó la representación del mismo.
32
En el caso de estudio actual se observa que cada gen es un bit que toma los
valores de 0 o 1, por lo que la mutación consistirá en cambiar el valor del gen así:
 Si el valor del gen es 0 se cambiará por 1.
 Si el valor del gen es 1 se cambiará por 0.
Si se toma el cromosoma v’1 para el ejemplo y se asume que el gen a cambiar es
el 18vo la operación de mutación se puede describir de la siguiente forma:
Gen a cambiar
𝑣′1 = [1 0 0 1 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1]
El nuevo cromosoma v’1 es:
𝑣′1 = [1 0 0 1 1 0 1 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1]
Retomando el ejemplo, se torna un poco arbitrario elegir un mismo gen a mutar en
cada cromosoma, por lo que se utiliza el siguiente método de elección del gen a
mutar:
 Se establece como probabilidad de mutación pm = 0.01, lo cual indica que
solo el 1% de los cromosomas tienden a ser mutados.
 Se genera una secuencia de números aleatorios rk (k = 1,2,…,330) entre el
rango [0,1] con el fin de generar una probabilidad de mutación
independiente para cada uno de los genes de la población (La población
contiene diez individuos cada uno con 33 genes), la cual arroja los
siguientes resultados:
33
Posición Bit
Cromosoma No.
Bit No.
rk
105
164
199
329
4
5
7
10
6
32
1
32
0.009857
0.003113
0.000946
0.001282
Los genes a mutar y sus respectivos cromosomas según lo anterior son:
𝑣′4 = [111110001011101100011101000111101]
𝑣′5 = [100110110100101000000010101001000]
𝑣′7 = [001110101110011101000000010111001]
𝑣′10 = [001110101110011000000010101001000]
Al realizar la operación de mutación los nuevos cromosomas quedan de la
siguiente forma:
𝑣′4 = [111111001011101100011101000111101]
𝑣′5 = [100110110100101000000010101001010]
𝑣′7 = [101110101110011101000000010111001]
𝑣′10 = [001110101110011000000010101001010]
2.2.1.7
Una nueva población
Cada iteración del algoritmo arroja una nueva población en la que se espera
encontrar individuos cada vez mejor adaptados al problema planteado. En este
caso, después de realizar las operaciones descritas anteriormente la nueva
población generada es la siguiente:
𝑣′1 = [100110110100101101000000010111001]
𝑣′2 = [100110110100101101000000010111001]
𝑣′3 = [001011010100001100010110011001100]
𝑣′4 = [111111001011101100011101000111101]
𝑣′5 = [100110110100101000000010101001010]
𝑣′6 = [110100010011111000100110011101101]
𝑣′7 = [101110101110011101000000010111001]
𝑣′8 = [100110110100101101000000010111001]
𝑣′9 = [000001010100101001101111011111110]
𝑣′10 = [001110101110011000000010101001010]
34
Los valores reales correspondientes a cada cromosoma y su respectiva evaluación
es la siguiente:
𝑒𝑣𝑎𝑙(𝑣′1 ) = 𝑓(6.159951, 4.109598) = 29.406122
𝑒𝑣𝑎𝑙(𝑣′2 ) = 𝑓(6.159951, 4.109598) = 29.406122
𝑒𝑣𝑎𝑙(𝑣′3 ) = 𝑓(−0.330256, 4.694977) = 19.763190
𝑒𝑣𝑎𝑙(𝑣′4 ) = 𝑓(11.907206, 4.873501) = 5.702781
𝑒𝑣𝑎𝑙(𝑣′5 ) = 𝑓(8.024130, 4.170248) = 19.91025
𝑒𝑣𝑎𝑙(𝑣′6 ) = 𝑓(9.342067, 5.121702) = 17.958717
𝑒𝑣𝑎𝑙(𝑣′7 ) = 𝑓(6.159951, 4.109598) = 29.406122
𝑒𝑣𝑎𝑙(𝑣′8 ) = 𝑓(6.159951, 4.109598) = 29.406122
𝑒𝑣𝑎𝑙(𝑣′9 ) = 𝑓(−2.687969, 5.361653) = 19.805119
𝑒𝑣𝑎𝑙(𝑣′10 ) = 𝑓(0.474101, 4.170248) = 17.370896
Hasta este punto se ha completado la primera iteración del algoritmo genético. La
prueba en general corre 1000 iteraciones en la que se obtienen igual número de
generaciones. En la prueba, se obtiene el mejor cromosoma en la 419na generación
que tiene los valores descritos a continuación:
𝑣 ∗ = [111110000000111000111101001010110]
𝑒𝑣𝑎𝑙(𝑣 ∗ ) = 𝑓(11.631407, 5.724824) = 38.818208
𝑥1∗ = 11.631407
𝑥2∗ = 5.724824
𝒇(𝒙∗𝟏 , 𝒙∗𝟐 ) = 𝟑𝟖. 𝟖𝟏𝟖𝟐𝟎𝟖
35
3 MODELAMIENTO DEL ALGORITMO GENETICO
3.1 TRABAJOS REALIZADOS
Antes de llevar a cabo el desarrollo del modelamiento propuesto para el AG, es
conveniente presentar tres tipos de problemas que has sido tratados mediante los
algoritmos genéticos y que de alguna forma tienen relación con la programación
de planta de producción.
3.1.1 Programación de tienda abierta.
En [4] es posible observar cómo por medio de la utilización de algoritmos
genéticos sus autores afrontan Open-Shop, que corresponde a un problema de
planificación o elaboración de calendarios, donde todos los trabajos tienen el
mismo número de operaciones, cada operación se realiza en una máquina
específica, pero no existe ninguna relación de precedencia entre las operaciones.
Esta
aproximación
es
un
interesante
trabajo
debido
a
que
hace
una
implementación similar a lo que se busca en el presente trabajo, aunque no cubre
uno de los puntos vitales de la programación de una planta de producción como lo
es el manejo de dependencias entre procesos.
3.1.2 Programación de producción
En [5] se trata el problema de programación de producción, haciendo énfasis en
tres factores: dependencias, averías y reparaciones de máquinas.
En este trabajo se hace un hibrido, como lo llaman sus autores, entre algoritmos
genéticos y simulación, utilizando los algoritmos genéticos para optimizar la
36
programación de la producción y la simulación para minimizar los tiempos de
ejecución de los algoritmos genéticos.
3.1.3 Secuenciación dinámica
En [6] se encuentra un análisis acerca de la implementación de sistemas de
aprendizaje automático para resolver problemas de secuenciación dinámica que es
en esencia la planeación y la programación. En [6] es posible observar que en la
programación no es tenida en cuenta las prioridades que tiene cada trabajo o cada
orden de producción, sin embargo es un trabajo realizado en el campo en el que
se enmarca el proyecto.
3.2 DEFINICIONES PROPIAS DEL ALGORITMO GENÉTICO
Gráficamente, el modelo general del algoritmo genético propuesto se muestra a en
la ilustración 4.
Ilustración 4 - Modelo general del AG propuesto
A continuación se detalla cada componente del algoritmo genético, con el fin de
realizar algunas precisiones necesarias.
37
3.2.1 Individuos
Para el algoritmo propuesto, como individuo se definió una programación total de
la planta de producción, la cual se compone de un número determinado de
órdenes de producción organizadas de acuerdo a los parámetros considerados en
el numeral 3.3. Cabe recordar que la programación de cada orden de producción
contiene una serie de órdenes de trabajo que son cada una de las labores
ejecutadas para realizar el trabajo solicitado. Un ejemplo de la programación de
una orden de producción se muestra a continuación:
15
1
10.000,00
1
Tiempo de
proceso
0,733729547
15
15
15
15
15
15
15
15
2
3
4
5
6
7
8
9
20.000,00
10.000,00
20.000,00
25.000,00
10.000,00
25.000,00
10.000,00
5.000,00
1
1
1
1
1
1
1
1
1,684494231
0,796622321
3,306331625
3,109839532
0,744601638
1,947040498
2,296211251
0,364298725
05/04/2009
05/04/2009
05/04/2009
05/04/2009
05/04/2009
05/04/2009
05/04/2009
05/04/2009
15 10
15.000,00
1
1,578615028
05/04/2009 03:35:18
OP CP Cantidad
Eficiencia
Fecha inicial
Fecha final
05/04/2009 02:51:16
05/04/2009 03:35:18
05/04/2009
05/04/2009
05/04/2009
05/04/2009
05/04/2009
05/04/2009
05/04/2009
05/04/2009
02:51:16
03:35:18
03:35:18
03:35:18
03:35:18
03:35:18
03:35:18
03:35:18
04:32:20
04:23:05
06:53:40
06:41:53
04:19:58
05:32:07
05:53:04
03:57:09
05/04/2009 05:10:01
3.2.2 Cromosomas
En concordancia con lo explicado acerca de la conformación del individuo en el
numeral anterior, cada cromosoma del individuo es cada una de las órdenes de
trabajo que componen la OP. Cabe recordar que la información acerca de la
naturaleza de la orden de trabajo está relacionada en el numeral 1.1.4.
3.2.3 Alelos
En el modelamiento del problema se ha identificado como los alelos de cada
cromosoma cada uno de los elementos de la orden de trabajo, de acuerdo a la
información que está relacionada en el numeral 1.1.4.1.
38
3.3 GENERACIÓN DE LA POBLACIÓN INICIAL
Como punto de partida para el algoritmo, se establece una población de diez
individuos; programaciones completas y diferentes de la planta de producción. La
diferencia entre las programaciones de planta de producción radica en que cada
una se realiza de acuerdo a los siguientes parámetros de ordenamiento
previamente establecidos:
 Número de orden de producción ascendente y número de orden de trabajo
ascendente.
 Número de orden de producción ascendente y número de orden de trabajo
descendente.
 Número de centro de producción ascendente y número de orden de trabajo
ascendente.
 Número de centro de producción ascendente y número de orden de trabajo
descendente.
 Número de orden de producción ascendente y cantidad de la orden de
trabajo ascendente.
 Número de orden de producción ascendente y cantidad de la orden de
trabajo descendente.
 Cantidad de la orden de trabajo ascendente y número de la orden de
trabajo ascendente.
 Cantidad de la orden de trabajo descendente y número de la orden de
trabajo ascendente.
 Prioridad de la orden de trabajo ascendente.
 Prioridad de la orden de trabajo descendente.
Así mismo, cada programación de planta de producción involucra la totalidad de
órdenes de producción con una serie de órdenes de trabajo determinadas.
39
3.4 PROCESO DE SELECCIÓN
Dentro de los procesos de selección disponibles se eligió el método de sorteo por
rueda de ruleta. Este método se aplica a cada uno de los individuos con el fin de
obtener aquellos que serán cruzados y/o mutados y está basado en la tasa
proporcional de evaluación asignada a cada uno de ellos. Los pasos que se realizan
para establecer la selección son los siguientes:
 Se establece el valor de cada individuo según la función de evaluación
establecida para el algoritmo.
 Se halla la evaluación total de la población, mediante la sumatoria de las
evaluaciones de cada uno de los individuos que pertenecen a ella.
 Se calcula el porcentaje de probabilidad de cada uno de los individuos
respecto al total de la población (Se divide la evaluación del individuo entre
la evaluación de la población).
 Se ordenan ascendentemente los individuos tomando como criterio la
probabilidad individual obtenida en el paso anterior y se calcula el
porcentaje de probabilidad acumulado correspondiente a cada individuo.
 Se procede a generar un número aleatorio r con rango entre [0, 1].
 Finalmente el individuo se obtiene de comparar el número generado en el
paso anterior con la probabilidad acumulada de cada uno de ellos.
3.5 PROCESO DE CRUCE
El operador de cruce tiene como objeto rescatar las mejores características de los
individuos con el fin utilizarlas como partes en la generación de nuevos individuos.
40
Con el fin de obtener variedad en las poblaciones que se van generando, se
plantean las siguientes opciones como posibles operadores de cruce:
 Permutar toda la programación de una orden de producción entre dos
individuos. La orden de producción a cambiar se selecciona aleatoriamente
en un rango de [1, Número total de OP]. La decisión de aleatoriedad en la
selección de la OP tiene como fundamento dos factores; el primero tiene
como objetivo cumplir con una de las premisas que tiene la operación de
cruce que es generar variedad en los nuevos individuos y, el segundo, se
establece debido a que no se encontró un criterio de peso que motivara a
considerarlo como un factor de diversidad en la población.
 Cambiar la fecha final del último proceso ejecutado en la misma orden de
producción entre dos individuos, donde la OP a utilizar para este proceso se
selecciona de la misma manera que el ítem anterior. Con este
procedimiento se puede obtener que sea posible liberar tiempo de trabajo
en un CP para que otras órdenes de trabajo puedan ser ejecutadas en él.
Inicialmente se otorga una mayor importancia al primer operador de cruce
expuesto, debido a que se puede lograr una mayor diversidad en la generación de
las nuevas poblaciones y a que en la actividad de permutación es posible realizar el
recálculo de las fechas de finalización de las órdenes de trabajo.
Es conveniente indicar que el proceso de selección de los individuos a cruzar, se
establece con los parámetros establecidos en el numeral anterior.
41
3.6 PROCESO DE MUTACIÓN
Mediante el operador de mutación se intenta realizar un cambio pequeño en el
individuo que genere a su vez una pequeña modificación en su información, pero
que sea significativo en cuanto al reprocesamiento de las órdenes de trabajo y de
la función de evaluación. Como procedimientos candidatos a ser un operador de
mutación se tienen los siguientes:
 Cambiar el centro de producción en el que se realiza una orden de
producción, por otro que se encuentre disponible. Esto con el fin de realizar
el mismo trabajo en el nuevo centro de producción, pero contar con que la
fecha de disponibilidad del nuevo CP es diferente al anterior y así se puede
tener cambios en el individuo.
 Dividir la cantidad de las órdenes de trabajo que más tiempo demanden de
un centro de producción y realizarlas, si es posible, en dos o más CP que
estén disponibles. Con este procedimiento se puede obtener una mejora en
los tiempos generales de terminación de la orden de producción, debido a
que en la medida en que estén disponibles otros centros de producción, un
trabajo o proceso determinado puede realizarse simultáneamente en ellos.
 Retrasar las fechas de inicio de las órdenes de trabajo que más tiempo
demanden de un centro de producción. Esto implica cambiar el orden de
elaboración de los trabajos en un centro de producción dando prioridad a
aquellas que más tiempo tarden en realizarse.
En la implementación del AG, se va a considerar la segunda opción de mutación,
debido a que permite realizar más cambios en el procesamiento del individuo.
42
3.7 DEFINICIÓN DE LA FUNCIÓN DE EVALUACIÓN (FITNESS)
La función de evaluación es aquella que permite medir a cada uno de los
individuos generados en una determinada población. Esta función tiene una serie
de parámetros o variables que permiten llevar a cabo la mencionada evaluación
del individuo. Las variables a tener en cuenta en esta función son las siguientes:
3.7.1 Cumplimiento (C )
Una orden de producción se cumple cuando se termina la ejecución de su último
proceso antes de la fecha de entrega. El cumplimiento es el porcentaje de órdenes
cuyo último proceso termina antes de la fecha de entrega.
3.7.2 Colisiones (T )
Una colisión ocurre cuando la fecha y hora de inicio de una orden de trabajo se
encuentra entre la fecha y hora de inicio y de final de otras órdenes de trabajo
dentro del mismo centro de producción.
3.7.3 Ocupación de centros de producción (P )
La ocupación de cada centro de producción se mide de acuerdo a las horas que
tiene disponible para realizar cualquier proceso y las horas que tiene programadas
o que se programan en cada individuo. De acuerdo a lo anterior, la ocupación de
centros de producción corresponde al promedio de ocupación que tienen todos los
centros de producción que se encuentran programados en el individuo.
43
3.8 FUNCIÓN DE EVALUACIÓN (FITNESS)
A cada una de las variables anteriormente citadas se le asigna un grado de
importancia (W ) dentro de la función de evaluación. Este grado se ve
representado en un porcentaje para cada una de las variables e indica que tan
importante es la variable en la evaluación de los individuos.
Teniendo en cuenta los anteriores conceptos la función que utiliza el algoritmo
genético propuesto para evaluar a cada uno de sus individuos es la siguiente:
𝐹 = 𝑊𝐶 𝐶 + 𝑊𝑃 𝑃 + 𝑊𝑇 𝑇
con
𝑊𝐶 , 𝑊𝑃 , 𝑊𝑇 > 0 𝑦 𝑊𝐶 + 𝑊𝑃 + 𝑊𝑇 = 1
44
4 EVALUACIÓN DE PROTOTIPOS
4.1 CONDICIONES PARA LA GENERACIÓN DE PROTOTIPOS
4.1.1 Datos de trabajo
Cada prototipo que se genere tendrá como datos de trabajo los siguientes:
Ítem
Centros de producción
Procesos
Ordenes de producción
Ordenes de trabajo
Cantidad
93
25
20
276
Los centros de producción y los procesos se tomaron de la información que en
general se maneja en una empresa de artes gráficas, las ordenes de producción se
generaron con fechas de entrega aleatorias, con cantidades de procesos aleatorios
(de 1 a 25 ya que es el total de procesos que se ejecutan).
De acuerdo con el flujo de trabajo de la industria gráfica, a los procesos necesarios
se les creó el proceso que lo precede para hacer la programación de la planta.
De igual forma se crearon los procesos que se ejecutan en cada centro de
producción.
4.1.2 Proceso de selección
 Para cada individuo se calcula el porcentaje de su evaluación con respecto
al total de la población.
 Se organiza dicho porcentaje ascendentemente.
 Se genera un número aleatorio n entre 0 y 1 y se elige el individuo cuyo
porcentaje acumulado de evaluación es inmediatamente menor que n.
45
4.1.3 Probabilidades de cruce y mutación
Probabilidad de Cruce
75%
Probabilidad de Mutación
10%
Método de selección
Ruleta
4.2 PROTOTIPO 01
4.2.1 Condiciones del algoritmo.
Se destacan las siguientes condiciones para la generación del prototipo.
4.2.1.1
Función de cruce.
 La función de cruce intercambia entre los dos individuos seleccionados
todas las órdenes de trabajo de una orden de producción.
 La orden de producción que se cruza es elegida de manera aleatoria entre
la cantidad total de ordenes de producción en el individuo.
4.2.1.2
Función de mutación.
 La función de mutación consiste en dividir en dos partes iguales la cantidad
a procesar de una orden de trabajo para que sea ejecutada cada una
simultáneamente en dos centros de producción diferentes.
 La función de mutación se ejecuta a la orden de trabajo que tiene mayor
duración en horas.
46
4.2.2 Resultados del prototipo 01
Ilustración 5 – Vista previa de la ejecución del prototipo 01
En este prototipo, los individuos están recibiendo la misma calificación, es decir, el
resultado de la función de evaluación es igual para todos.
Se comprobó que en cada generación la mayoría de individuos son iguales.
4.2.3 Análisis de la situación en el prototipo 01.
 Los datos de prueba se deben plantear de forma diferente o en mayor
cantidad ya que en este momento sólo hay 20 órdenes de producción y sus
fechas de entrega a menos de un mes, de esta forma siempre se va a tener
el mismo resultado sobre todo en la variable de mayor peso que es el
cumplimiento.
 Sólo se está dividiendo la cantidad de una orden de trabajo en dos partes
(tomando como criterio la orden de trabajo que tiene el mayor tiempo de
47
ejecución) pero no se está haciendo la reprogramación de la ejecución de
los procesos de la orden dividida para que se permita disminuir la fecha de
entrega de la orden de producción.
4.2.4 Acciones para el siguiente prototipo.
En pro de mejorar los resultados se tomarán las siguientes:
 Cuando se ejecute la función de mutación en el individuo se deberá hacer
una reprogramación de la misma para que se corran los procesos y se
pueda cumplir o terminar la orden de producción en menor tiempo.
4.2.5 Consideraciones para tener en cuenta en el próximo prototipo.
 En este momento el algoritmo se detiene cuando se completa un número
determinado de generaciones, así que se pueden plantear otras opciones:
o
Un buen criterio para detener el algoritmo es cuando el
cumplimiento se llegue al 100%.
o De la misma forma, se puede terminar el algoritmo cuando todos los
centros de producción estén ocupados al 100%
 La evaluación de ocupación de centro de producción, si uno de éstos
presenta ocupación de más del 100% se está dejando ese valor para medir
el promedio del individuo; se plantea que si la ocupación del centro de
producción sobrepasa el 100% solo se debe tomar hasta el 100% para no
dañar el promedio.
 Se plantea que para la función de mutación se debería tomar los centros de
mayor ocupación (que superen el 100%) y ejecutar alguna o las dos
acciones siguientes:
o Redistribuir el trabajo, es decir, hacer los mismo que se está
haciendo en este momento.
o Aumentar la disponibilidad del centro de producción, es decir, las
horas disponibles por día para el centro.
48
4.3 PROTOTIPO 02
4.3.1 Condiciones del algoritmo.
Se realizaron las los siguientes cambios en el algoritmo para la generación del
prototipo.
4.3.1.1
Función de mutación.
Para la función de mutación se aplicaron dos acciones:
 Cuando se haga la división de la cantidad en la orden de trabajo se hará
una reprogramación corriendo las órdenes de trabajo siguientes.
4.3.2 Resultados del prototipo 02
Ilustración 6 – Vista previa de la ejecución del prototipo 02
49
4.3.3 Análisis de la situación en el prototipo 02.
El prototipo ahora está cambiando de generación en generación, el resultado de la
función de evaluación está tomando valores diversos dentro de cada una y así
mismo en el mejor individuo que se obtiene en cada nueva generación.
Ahora el inconveniente que se está presentando es que el algoritmo no tiende a
converger al 100%, de lo contrario, aunque se presentan picos altos se nota una
tendencia hacia el 40 o 30%, en algunas ocasiones cuando se corre el algoritmo
varias veces empieza a mejorar los resultados pero no es en la mayoría, lo que
significa que hasta ahora el algoritmo está muy inestable y se debe corregir esta
situación, como posibles causas del inconveniente se han identificado las
siguientes:
 Cuando se ejecuta la función de mutación se está haciendo reprogramación,
pero este proceso se está ejecutando sobre el centro de producción, es
decir, se corren todos los trabajos programados en el centro de producción
hacia atrás, lo que ciertamente reduce el tiempo de ejecución de una orden
de producción, pero en la reprogramación no se está verificando si el
proceso que se va a correr hacia atrás cumple con la precedencia necesaria
del proceso anterior.
 Es posible que el factor que está haciendo la diferencia entre los individuos
sea la evaluación de colisiones ya que con el cruce se están generando más
colisiones.
 Al realizar la función de cruce no se está haciendo reprogramación por lo
que aumentan las colisiones.
4.3.4 Acciones para el siguiente prototipo.
Se considera que ejecutar las siguientes acciones en el algoritmo puede permitir
que las generaciones tiendan a mejorar en cada iteración.
50
 Cuando se corra la función de cruce se debe hacer una reprogramación de
las órdenes de trabajo para que no se generen colisiones.
 La función de mutación se va a cambiar para que la orden de trabajo a la
que se divida la cantidad no sea la que más tiempo se demore, si no que se
va a buscar una de las ordenes de producción que no terminan a tiempo y
de esta se va a escoger la orden de trabajo más demorada.
4.4 PROTOTIPO 03
4.4.1 Condiciones del algoritmo.
Para la generación del prototipo 03 se realizaron las siguientes acciones:
4.4.1.1
Función de mutación.
 La función de mutación se modificó para que en lugar de buscar la orden de
trabajo que tenía mayor tiempo de duración se buscaran primero las
órdenes de producción que no se cumplían y luego si tomar la orden de
trabajo de mayor duración.
 Se identificó que la reprogramación de las órdenes de trabajo no se debe
hacer por el centro de producción sino por la orden de producción, de tal
forma que sean las órdenes de trabajo las que se corran hacia atrás para
poder cumplir más rápido la orden de producción.
4.4.2 Resultados del prototipo 03.
En este prototipo se pudo identificar luego de correr el algoritmo con 1000
generaciones que el cumplimiento llega a un 100% y debido a que esta variable es
a la que en general se le asigna mayor peso puesto que es el objetivo principal de
la programación se constituye este como un resultado satisfactorio para el trabajo.
51
4.4.3 Análisis de la situación en el prototipo 03.
A pesar de estar llegando al 100% en el cumplimiento, el comportamiento del
mejor individuo sigue sin subir del 90% y en general, el mejor individuo de cada
generación tiende a disminuir en el resultado de su función de evaluación,
adicionalmente en muy pocas ocasiones el comportamiento de cada generación
con respecto a la anterior es estable.
Se identificaron posibles causas para obtener éstos resultados:
 En la función de mutación se está seleccionando de las ordenes de
producción no cumplidas la orden de trabajo que más tiempo consume,
pero se identificó que en varias oportunidades la fecha de inicio de esta
orden de trabajo es mayor a la fecha de entrega de la orden de producción,
por lo que sin importar si se divide el trabajo en varios centros de
producción tarda mucho en que la orden se cumpla.
 Una vez se llega al 100% de cumplimiento, la función de mutación sigue
dividiendo las órdenes de trabajo, lo cual ya no genera valor al algoritmo
por cuanto lo que se logra es terminar la orden mucho más temprano sin
lograr deshacer las colisiones.
4.4.4 Acciones para el siguiente prototipo.
Las siguientes acciones se deberán ejecutar para el próximo prototipo, y están
enfocadas principalmente a la convergencia del algoritmo, a estabilizar el resultado
de la función de evaluación del mejor individuo con cada nueva generación y a
facilitar el análisis de los datos de rendimiento y mejora entre generaciones.
 La función de mutación dividirá las órdenes de trabajo cuya fecha inicial sea
menor a la fecha de entrega de la orden de trabajo.
 En la función de mutación, cuando el cumplimiento del individuo esté en el
100%, se deberá disolver una colisión haciendo uso de otro centro de
52
producción que en el que se pueda ejecutar el proceso, si no se puede
ejecutar en otro centro de producción, entonces se hará reprogramación del
centro de producción.
 Se implementará una tabla de resultados en la que se mostrarán los
mejores individuos de cada generación, con el fin de correr varias veces el
algoritmo y así hacer análisis más fácilmente.
4.5 PROTOTIPO 04
4.5.1 Condiciones del algoritmo.
Para ejecutar este prototipo se realizaron las acciones que se describen a
continuación.
4.5.1.1
Función de mutación.
 Cuando una orden de producción no se encuentre en el 100% de
cumplimiento y el proceso que consume más tiempo empieza después de la
fecha de entrega de la orden de producción, esta debe desplazarse por los
procesos anteriores hasta que pueda dividir una orden de trabajo cuyo inicio
sea menor que la fecha de entrega de la orden de producción.
 Cuando un individuo llegue al 100% de cumplimiento, no se debe hacer
división de cantidad de ninguna orden de trabajo, por el contrario se deben
buscar las órdenes de trabajo que se encuentra en colisión y hacer la
transferencia de una de ellas a otro centro de producción donde se pueda
ejecutar.
4.5.1.2
Presentación de datos
Se implementó una tabla de datos en la cual se ven reflejados los mejores
individuos de cada generación. El cambio anterior se realizó con el objetivo de
53
hacer análisis rápido de cada ejecución del algoritmo, en esta tabla se puede ver
de cada mejor individuo la generación en que se creó, el resultado de la función de
evaluación y cada una de las evaluaciones por separado de las variables que
constituyen la función de evaluación (cumplimiento, ocupación de máquina y
colisiones).
4.5.2 Resultados del prototipo 04.
Ilustración 7 - Vista previa de la ejecución del prototipo 04
54
Ilustración 8 - Vista previa de la tabla de resultados obtenida en la ejecución del prototipo 04
4.5.3 Análisis de la situación en el prototipo 04.
 El cumplimiento está llegando al 100% desde las primeras generaciones, en
general, esto sucede desde la primera generación, la variable que le
precede en peso o importancia es la de colisiones, pero esta no mejora en
cada nueva generación y si lo hace, la mejora resulta muy poco
significativa, lo que redunda en que el mejor individuo de toda la corrida del
algoritmo se hallé muy temprano entre las 10 primeras generaciones.
 La variable de ocupación de máquina tampoco sufre una mejora o cambios
significativos, en muchas ocasiones esta variable presenta el mismo
comportamiento durante varias generaciones.
55
4.5.4 Acciones para el siguiente prototipo.
En busca de un mejor análisis y de solucionar los inconvenientes que se
presentaron en el prototipo 04 se deben tomar las siguientes acciones para el
siguiente prototipo.
 Se debe generar una línea de gráfica para cada una de las variables que
componen la función de evaluación.
 Se debe generar una línea de gráfica para el promedio de la función de
evaluación en cada generación, con esto se podrá comprobar el
comportamiento de generación en generación.
 Cuando se disuelve una colisión se debe hacer reprogramación tanto de la
orden de producción como del centro de producción.
4.6 PROTOTIPO 05
4.6.1 Condiciones del algoritmo.
Se realizaron los siguientes cambios para mejorar los resultados del algoritmo:
4.6.1.1
Función de cruce
 Se modifico la función de cruce para que en lugar de intercambiar la
programación de una orden de producción completa, se intercambie la
programación completa de todo un centro de producción.
4.6.1.2
Función de mutación.
 Cuando se disuelve una colisión se hace reprogramación tanto de la orden
de producción como de los centros de producción involucrados en la
disolución de la colisión.
56
4.6.2 Resultados del prototipo 05.
Ilustración 9 - Vista previa de la ejecución del prototipo 05
4.6.3 Análisis de la situación en el prototipo 05.
 En este prototipo el algoritmo se está comportando como se esperaba, el
promedio de evaluación de cada generación es irregular en las primeras
generaciones pero luego empieza a estabilizarse e igualmente empieza a
tender a 100%.
 De igual forma es posible observar que las variables de cumplimiento y
colisiones mejoran tras cada nueva generación, a tal punto que una vez
obtenido el 100% de cumplimiento de las órdenes de trabajo la tasa de
colisiones va mejorando en cada iteración.
57
4.6.4 Acciones para el siguiente prototipo.
 Se puede suprimir la variable de ocupación de máquina ya que al procesar
las mismas órdenes de trabajo y las mismas cantidades esta no debe
cambiar y por eso su valor es constante.
4.7 COMPARACIÓN DEL PROTOTIPO 05
Uno de los objetivos planteados para este proyecto establecía la realización de una
comparación del prototipo con alguna solución utilizada actualmente en la industria
de artes gráficas.
Para llevar a cabo este aspecto, solo se pudo tener acceso como referencia a una
aplicación que realiza la programación de una planta de producción mediante el
uso de procesos de asignación de tiempos secuenciales.
En principio se estimó realizar dicha comparación tomando como entradas
comunes los datos utilizados por dicha aplicación para evaluar el rendimiento
comparativo de las dos soluciones. Sin embargo, el acceso a los datos utilizados
fue bastante complejo debido a que la estructura de datos utilizada por este
software presenta casos de redundancia de datos y no se dispone de
documentación para poder interpretar los procesos allí implementados. A pesar de
los inconvenientes presentados, se intentó extraer la información en una
estructura compatible con el prototipo realizado, pero esta labor no pudo realizarse
exitosamente.
La única comparación planteada entonces consistió en medir el tiempo necesario
para que cada aplicación proporcionara una solución dado un número similar de
órdenes de producción. Se pudo observar que los tiempos de ejecución de la
58
aplicación son menores a los obtenidos con el prototipo y en todos los casos las
diferencias presentadas en esta evaluación eran tan grandes que se optó por no
realizar un análisis preciso de las mismas.
59
5 EVALUACIÓN Y COMPARACIÓN DE RESULTADOS2
Para realizar la evaluación se ejecutó 10 veces el prototipo 05 con los siguientes
parámetros:
Tabla 1 - Entradas para ejecutar la evaluación.
Variable
Valor
Peso de Cumplimiento
Peso de Colisiones
Peso de Ocupación
Número de Iteraciones a ejecutar
55%
40%
5%
1000
La variable de cumplimiento tiene un mayor peso para la empresa de artes gráficas
debido a que para ella es lo más importante, lo que se debe asegurar en primer
lugar cuando se programa es que los clientes van a recibir su trabajo en las fechas
pactadas.
En segundo lugar se encuentra la variable de colisiones ya que si dos trabajos
llegan al mismo tiempo a un centro de producción se generan sobrecostos al tener
que enviar uno de los trabajos a un satélite o tercero.
El peso de la ocupación es pequeño debido a que siempre que se encuentren los
mismos trabajo por elaborar la ocupación será igualmente la misma sólo que
distribuida en diferentes centros de producción.
Se realizó la recopilación de datos de cada una de las ejecuciones para graficar los
resultados y facilitar el análisis.
2
Los datos que se utilizan para realizar la comparación fueron suministrados informalmente por el
programador de la planta de producción de una empresa de artes gráficas para la cual, Alexander
Gómez trabajó durante más de 4 años.
60
De cada una de las ejecuciones se tomaron los siguientes datos:
 El tiempo en minutos que se tomó para terminar las iteraciones.
 El resultado de evaluación del mejor individuo.
 La generación en que se obtuvo el mejor individuo.
 El promedio de evaluación de los mejores individuos.
 La evaluación de cumplimiento obtenida en el mejor individuo.
 La evaluación de colisiones obtenida en el mejor individuo.
Con los datos mencionados anteriormente se evaluó la conveniencia de un
algoritmo genético para resolver el problema propuesto, a continuación se
presenta la recopilación de resultados:
Tabla 2 - Recopilación de datos de evaluación.
Número
Tiempo
Mejor
Generación Promedio
De
Cumplimiento Colisiones
(Minutos) Individuo
MI
Evaluación
Ejecución
1
46.45 0.9963526
458 0.9934957
1.0000000 0.9909000
2
45.87 0.9937093
969 0.9796103
1.0000000 0.9843000
3
47.03 0.9971631
951 0.9860408
1.0000000 0.9929000
4
48.67 0.9937448
983 0.9820988
1.0000000 0.9844000
5
45.68 0.8922163
996 0.8772974
0.9000000 0.9752000
6
42.30 0.9300478
997 0.9073648
0.9000000 0.9751000
7
56.36 0.9272276
994 0.9100486
0.9000000 0.9681000
8
47.58 0.9300137
994 0.9103084
0.9000000 0.9750000
9
51.87 0.9178273
992 0.9089283
1.0000000 0.9872620
10
49.63 0.9698272
901 0.9477360
1.0000000 0.9683730
61
5.1 TIEMPO DE EJECUCIÓN
Gráfica 1 - Evaluación del tiempo de ejecución.
Promedio
Tiempo Menor
Tiempo Máximo
Desviación estándar
48.14
42.30
56.36
3.85
5.1.1 Comparación en tiempo de ejecución.
En general, cuando el programador de la planta ejecuta la programación con la
solución analítica que existe en el momento, en promedio, este termina su
ejecución en 8 minutos.
Adicionalmente el programador debe revisar la programación generada y asignar
trabajos a centros de producción que no tengan ocupación, reasignar las
prioridades que se requieran, dividir los trabajos que se demoran mucho tiempo en
un centro de producción y revisar que las precedencias de los procesos se cumplan
para que no hayan pérdidas de tiempo o reprogramaciones en un centro de
producción debido a que no se encuentre listo el trabajo anterior. Realizando esta
62
labor el programador se toma alrededor de 40 minutos y durante el día debe
repetirla por lo menos una vez, lo que en total suma 96 minutos.
Dado lo anterior, se observa que el tiempo de programación se redujo en
aproximadamente un 50% ya que aunque se tome más tiempo para ejecutar el
algoritmo no se deberán realizar las tareas que actualmente se realizan.
5.2 MEJOR INDIVIDUO
Gráfica 2 - Evaluación del mejor individuo.
Promedio
Evaluación Menor
Evaluación Máxima
Desviación estándar
0.95
0.89
1.00
0.04
5.2.1 Comparación del mejor individuo.
El programador generalmente hace la programación para máximo una o dos
semanas de trabajo, de tal modo que la evaluación del mejor individuo no se
puede hacer de forma exacta, pero se estima que este llega al 40% como máximo
63
de tal forma que resultó mejor la evaluación del mejor individuo ejecutando el
algoritmo genético propuesto.
5.3 PROMEDIO DE EVALUACIÓN
Gráfica 3 - Promedio de evaluación.
Promedio
Evaluación mínima
Evaluación máxima
Desviación estándar
0.94
0.88
0.99
0.04
El promedio de evaluación en cada generación muestra que este corresponde a la
evaluación del mejor individuo, lo que refuerza la evaluación de comparación
realizada en el ítem anterior.
64
5.4 GENERACIÓN MEJOR INDIVIDUO
Gráfica 4 - Generación del mejor individuo.
Promedio
Generación mínima
Generación máxima
Desviación estándar
923.50
458.00
997.00
166.28
La desviación estándar de la gráfica 4 muestra que no es estable el
comportamiento de esta variable, aunque se genera de esta forma por la primera
ejecución donde el mejor individuo se generó muy temprano con respecto al
promedio de las demás.
Esta variable no es comparable con la solución analítica actual ya que en esta
solución no se hacen iteraciones.
65
5.5 CUMPLIMIENTO
Gráfica 5 – Evaluación de cumplimiento
Promedio
Menor cumplimiento
Mejor cumplimiento
Desviación estándar
0.96
0.90
1.00
0.05
El cumplimiento muestra un comportamiento óptimo ya que en la mayoría de las
ejecuciones se llega al 100% lo que hace confiable el algoritmo propuesto.
5.5.1 Comparación del cumplimiento
Debido a que el programador no programa la totalidad de las órdenes de
producción cuando la solución analítica termina su ejecución y esta programa en
secuencia lo que no permite llegar al 100% de cumplimiento el algoritmo
propuesto muestra un mejor desempeño en esta variable ya que el promedio de
cumplimiento supera el 95%.
66
5.6 COLISIONES
Gráfica 6 - Evaluación de colisiones.
Promedio
Menor cumplimiento
Mejor cumplimiento
Desviación estándar
0.98
0.97
0.99
0.01
Que las colisiones en promedio obtengan una calificación del 98% significa que el
2% de las órdenes de trabajo programadas por el algoritmo propuesto se
encuentran en el mismo centro de producción al mismo tiempo, lo que es un
excelente resultado.
5.6.1 Evaluación de las colisiones.
El programador de la planta no genera colisiones ya que hace la programación día
a día lo que permite que no se generen, por lo tanto en esta variable el algoritmo
propuesto presenta un resultado que debe ser mejorado.
67
6 CONCLUSIONES
 Los algoritmos genéticos son en definitiva una alternativa factible para
abordar el problema de programación de planta de producción, ya que los
resultados obtenidos muestran una tendencia a mejorar con cada nueva
generación.
 La adaptación del problema al modelo de algoritmos genéticos y la
abstracción de población, individuo, cromosoma y alelo fue acertada dado
que en ninguna etapa del proceso fue necesario hacer un nuevo
planteamiento del modelo.
 A pesar de realizar algunos cambios en las funciones de cruce y mutación a
través del desarrollo del modelo, fue posible aplicar los conceptos esenciales
de estos operadores al problema planteado de acuerdo a la representación
planteada.
 Se vivió la experiencia de replantear, aplicar cambios y hacer análisis de
resultados y comportamientos en todos los elementos del AG tal y como lo
plantea el proceso evolutivo, lo que resulta satisfactorio para el trabajo.
 A pesar de no tener como objetivo explícito del proyecto el proceso de
desarrollo de los prototipos, se evidenció que fue de vital importancia para
aclarar y corregir el planteamiento del modelo.
 En los resultados obtenidos es posible observar cómo en la mayoría de las
ejecuciones, el algoritmo alcanza el 100% de cumplimiento y un promedio
del 98% de colisiones. El anterior comportamiento indica que en la mayoría
de casos es posible encontrar un individuo con mejor evaluación en cada
generación.
 De igual forma, en los resultados se visualiza que la obtención de los
mejores individuos de cada ejecución se encuentra en las últimas
68
iteraciones del algoritmo, por lo que es bastante probable que, al ejecutar el
algoritmo con un número mayor de poblaciones, se obtenga un individuo
con mejor calificación que los encontrados.
 Los tiempos de ejecución del algoritmo fueron aceptables dentro de los
límites establecidos para el ejercicio práctico por los autores. Sin embargo
para llevar el algoritmo a un ambiente de producción, es necesario aplicar
otras técnicas de programación que permitan mejorar el rendimiento del
mismo.
 Es viable enmarcar el algoritmo genético planteado en una solución vertical
de control y gestión de producción, que permita unir toda la parte
transaccional del sistema con la programación de la planta de producción.
 La descripción del funcionamiento de los AG mediante la exposición de un
ejemplo práctico en paralelo con el detalle teórico de cada uno de los
elementos, permite tener una herramienta pedagógica que sirva como guía
a los futuros estudiantes interesados en el tema.
69
7 SUGERENCIAS
 Resultaría interesante incluir más variables al modelo, tales como:
o Cambios en las prioridades de las órdenes de trabajo fijadas por el
programador de planta.
o Programación en secuencia de trabajos con características similares.
o Considerar pausas en los centros de producción:

Tiempos de alistamiento de máquina cada vez que se cambia
un trabajo.

Tiempo de mantenimiento de los centros de producción.
 Para nuevos prototipos generados a partir de los resultados del presente
trabajo de grado, se sugiere hacer una exploración de otras técnicas de
optimización, como posible planteamiento para abordar el problema tratado.
 Hacer una variación de la función de mutación para que sugiera o agregue
turnos adicionales (aumentar la disponibilidad) en los centros de producción
que se encuentren 100% ocupados.
 Hacer una verificación de los tiempos en que un centro de producción está
sin trabajo para desplazar órdenes de trabajo a ese tiempo no utilizado.
 Implementar hilos de procesamiento y/o procesamiento distribuido para
mejorar los tiempos de ejecución del prototipo.
70
8 REFERENCIAS
[1] GOLDBERG. David. Genetic Algorithms in Search, Optimization and Machine
Learning. USA: Addison Wesley Longman Inc, 1989. 412 p. ISBN 0-201-15767-5.
[2] GEN. Mitsuo, CHENG. Runwei. Genetic Algorithms and Engineering Design.
New York. Wiley, 2000. 411 p. ISBN 0-471-12741-8.
[3]
GEN.
Mitsuo,
CHENG.
Runwei.
Genetic
Algorithms
and
Engineering
Optimization. New York. Wiley, 2000. 495 p. ISBN 0-471-31531-1.
[4] HSIAO-LAN. Fang, ROSS. Peter, CORNE. Ross y CORNE. Dave. A Promising
Genetic Algorithm Approach to Job-Shop Scheduling, Rescheduling and Open-Shop
Scheduling Problems. http://www6.uniovi.es/pub/EC/GA/papers/icga93-2.ps.gz
[5] SUK JAE. Jeong, SEOK JIN. Lim, KYUNG SUP. Kim. Hybrid approach to
production scheduling using genetic algorithm and simulation. Springer London,
2006. 136 p. ISSN 0268-3768
[6] PRIORE. Paolo, DE LA FUENTE. David, PUENTE. Javier, GÓMEZ. Alberto.
Secuenciación Dinámica De Sistemas De Fabricación Flexible Mediante Aprendizaje
Automático. Universidad de Rioja, 2001. 549 p. ISSN 0210-8054.
[7] DARWIN. Charles. El origen de las especies. LongSeller, 2005. 240 p. ISBN
9875503487.
71
Documentos relacionados
Descargar