Instituto Tecnológico y de Estudios Superiores de Monterrey Campus Monterrey
Monterrey, Nuevo León a Mayo de 2003.
Lic. Arturo Azuara Flores:
Director de Asesoría Legal del Sistema
Por medio de la presente hago constar que somos autores y titulares de la obra titulada “Solución al Problema de Programación de Tareas mediante Algoritmos
Genéticos Cooperantes ”, en los sucesivo LA OBRA, en virtud de lo cual autorizo a el Instituto Tecnológico y de Estudios Superiores de Monterrey (EL INSTITUTO) para que efectúe la divulgación, publicación, comunicación pública, distribución y reproducción, así como la digitalización de la misma, con fines académicos o propios al objeto de EL INSTITUTO.
El Instituto se compromete a respetar en todo momento mi autoría y a otorgarme el crédito correspondiente en todas las actividades mencionadas anteriormente de la obra.
De la misma manera, desligo de toda responsabilidad a EL INSTITUTO por cualquier violación a los derechos de autor y propiedad intelectual que cometa el suscrito frente a terceros.
JOSÉ MAXIMILIANO FLORES FLORES
Solución al Problema de Programación de Tareas mediante
Algoritmos Genéticos Cooperantes-Edición Única
Title
Solución al Problema de Programación de Tareas mediante
Algoritmos Genéticos Cooperantes-Edición Única
Authors
José Maximiliano Flores Flores
Affiliation
ITESM
Issue Date
2002-05-01
Item type
Tesis
Rights
Open Access
Downloaded
19-Jan-2017 07:10:59
Soluci´
on al Problema de Programaci´
on de Tareas
mediante Algoritmos Gen´
eticos Cooperantes
por
Jos´e Maximiliano Flores Flores
Tesis
Presentada al Programa de Graduados en Electr´onica, Computaci´on, Informaci´on y Comunicaci´on
del
Instituto Tecnol´ogico y de Estudios Superiores de Monterrey, Campus Monterrey como requisito parcial para obtener el grado acad´emico de
Maestro en Ciencias con especialidad en Sistemas Inteligentes
Instituto Tecnol´ogico y de Estudios Superiores de Monterrey
Campus Monterrey
c
Instituto Tecnol´
ogico y de Estudios Superiores de Monterrey
Campus Monterrey
Divisi´on de Graduados en Electr´onica, Computaci´on, Informaci´on y Comunicaci´on
Programa de Graduados en Electr´onica, Computaci´on, Informaci´on y Comunicaci´on
Los miembros del comit´e de tesis recomendamos que la presente tesis de Jos´e Maximiliano Flores Flores sea aceptada como requisito parcial para obtener el grado acad´emico de
Maestro en Ciencias, especialidad en:
Sistemas Inteligentes
Comit´e de tesis:
Dr. Manuel Valenzuela Rend´on
Asesor de la tesis
Dr. Horacio Mart´ınez Alfaro
Sinodal
Dr. Hugo Terashima Mar´ın
Sinodal
Dr. David Garza Salazar
Director del Programa de Graduados en Electr´onica, Computaci´on, Informaci´on y
Comunicaci´on
Reconocimientos
Quiero expresar mi m´as sincero agradecimiento a las siguientes personas e instituciones por su enorme contribuci´on a mi formaci´on profesional y acad´emica.
Al ITESM Campus Monterrey, por otorgarme una beca para financiar mis estudios de maestr´ıa.
Al Dr. Francisco Cant´u, por darme la oportunidad de trabajar en el Centro de Inteli-gencia Artificial.
Al Dr. Manuel Valenzuela, por la gran cantidad de cosas que aprend´ı de ´el, y por la influencia definitiva en mi forma de realizar y reportar trabajos de investigaci´on.
Al Dr. Hugo Terashima, por su acertada conducci´on del programa de maestr´ıa y por su contribuci´on como sinodal en mi examen de grado.
Al Dr. Horacio Mart´ınez, por su contribuci´on como sinodal en mi examen de grado.
Jos´e Maximiliano Flores Flores
Soluci´
on al Problema de Programaci´
on de Tareas
mediante Algoritmos Gen´
eticos Cooperantes
Jos´e Maximiliano Flores Flores, M.C.
Instituto Tecnol´ogico y de Estudios Superiores de Monterrey, 2002
Asesor de la tesis: Dr. Manuel Valenzuela Rend´on
´
Indice General
Reconocimientos v
Resumen vi
´Indice de Tablas ix
´Indice de Figuras x
Cap´ıtulo 1 Introducci´on 1
Cap´ıtulo 2 El modelo de programaci´on de tareas 3
2.1 Introducci´on . . . 3
2.2 La importancia de la programaci´on de tareas . . . 4
2.3 Enfoques usados en programaci´on de tareas . . . 5
2.4 Programaci´on de tareas en una m´aquina . . . 6
2.5 Clasificaci´on de problemas en una m´aquina . . . 7
2.6 Objetivos de la producci´on . . . 8
Cap´ıtulo 3 Din´amica de cuello de botella 10 3.1 Introducci´on . . . 10
3.2 Definici´on . . . 10
3.3 DCB para diversos objetivos de producci´on . . . 12
3.4 DCB para justo a tiempo . . . 15
3.5 Modificaciones a DCB para justo a tiempo . . . 17
3.6 Algoritmo para la evaluaci´on r´apida de DCB . . . 19
Cap´ıtulo 4 El algoritmo gen´etico cooperante 21 4.1 Descripci´on y funcionamiento . . . 21
Cap´ıtulo 5 Representaci´on del problema utilizando un AGC 25 5.1 Representaci´on del problema . . . 25
5.2 Creaci´on de las particiones . . . 26
5.3 Codificaci´on en el cromosoma . . . 28
5.4 Evaluaci´on de los individuos . . . 28
5.6 Particiones traslapadas . . . 31
5.7 Reinicializaci´on . . . 33
Cap´ıtulo 6 Experimentos y an´alisis de resultados 35 6.1 Generaci´on de problemas de prueba . . . 35
6.2 Notaci´on usada en los experimentos . . . 36
6.3 Los efectos de las particiones simples . . . 37
6.3.1 Dise˜no de los experimentos . . . 38
6.3.2 Resultados . . . 38
6.3.3 An´alisis de resultados . . . 45
6.4 Los efectos del traslape . . . 45
6.4.1 Dise˜no de los experimentos . . . 46
6.4.2 Resultados . . . 47
6.4.3 An´alisis de resultados . . . 54
6.5 Los efectos de la reinicializaci´on . . . 54
6.5.1 Dise˜no de los experimentos . . . 55
6.5.2 Resultados . . . 56
6.5.3 An´alisis de resultados . . . 63
Cap´ıtulo 7 Conclusiones 65 7.1 Contribuciones y conclusiones . . . 65
7.1.1 Representaci´on de la separabilidad impl´ıcita . . . 65
7.1.2 Uso de representaci´on traslapada . . . 66
7.1.3 Desempe˜no del algoritmo gen´etico cooperante . . . 66
7.2 Trabajos futuros . . . 67
´
Indice de Tablas
6.1 Grupos de problemas de prueba utilizados en los experimentos. . . 37
6.2 Par´ametros de funcionamiento del AG gk∈Gp. . . 38
6.3 ExperimentoI(20, E) : [G(1,0,0)−G(2,0,0);G(3,0,0);G(4,0,0)]. . . 38
6.4 ExperimentoI(20, H) : [G(1,0,0)−G(2,0,0);G(3,0,0);G(4,0,0)]. . . 40
6.5 ExperimentoI(50, E) : [G(1,0,0)−G(2,0,0);G(3,0,0);G(4,0,0)]. . . 41
6.6 ExperimentoI(50, H) : [G(1,0,0)−G(2,0,0);G(3,0,0);G(4,0,0)]. . . 42
6.7 ExperimentoI(100, E) : [G(1,0,0)−G(2,0,0);G(3,0,0);G(4,0,0)]. . . 43
6.8 ExperimentoI(100, H) : [G(1,0,0)−G(2,0,0);G(3,0,0);G(4,0,0)]. . . 44
6.9 Resultados condensados de los efectos del uso de particiones. . . 45
6.10 Experimentos para encontrar el efecto del factor de traslape. . . 46
6.11 Par´ametros de funcionamiento del AG gk∈Gp. . . 47
6.12 Experimento I(20, E) : [G(3,0,0)−G(3,1,0), G(3,2,0), G(3,4,0)]. . . 47
6.13 Experimento I(20, H) : [G(2,0,0)−G(2,1,0), G(2,2,0), G(2,4,0). . . 49
6.14 Experimento I(50, E) : [G(3,0,0)−G(3,2,0), G(3,4,0), G(3,6,0). . . 50
6.15 Experimento I(50, H) : [G(2,0,0)−G(2,2,0), G(2,4,0), G(2,6,0). . . 51
6.16 Experimento I(100, E) : [G(3,0,0)−G(3,2,0), G(3,4,0), G(3,8,0). . . 52
6.17 Experimento I(100, H) : [G(4,0,0)−G(4,2,0), G(4,4,0), G(4,8,0). . . 53
6.18 Resultados condensados de los efectos del uso de particiones con traslape. . . 54
6.19 Experimentos para encontrar el efecto del factor de reinicializaci´on. . . 55
6.20 Par´ametros de funcionamiento del AG gk∈Gp. . . 56
6.21 Experimento I(20, E) : [G(3,0,0)−G(3,0,1), G(3,0,2), G(3,0,3). . . 56
6.22 Experimento I(20, H) : [G(2,0,0)−G(2,0,1), G(2,0,2), G(2,0,3). . . 58
6.23 Experimento I(50, E) : [G(3,0,0)−G(3,0,1), G(3,0,2), G(3,0,3). . . 59
6.24 Experimento I(50, H) : [G(2,0,0)−G(2,0,1), G(2,0,2), G(2,0,3). . . 60
6.25 Experimento I(100, E) : [G(3,2,0)−G(3,2,1), G(3,2,2), G(3,2,3). . . 61
6.26 Experimento I(100, H) : [G(4,0,0)−G(4,0,1), G(4,0,2), G(4,0,3). . . 62
´
Indice de Figuras
3.1 Din´amica de cuello de botella para retraso ponderado. . . 12
3.2 DCB para tardanza pondera sin correcci´on de urgencia . . . 13
3.3 DCB para tardanza ponderada con correcci´on de la urgencia. . . 14
3.4 DCB para tardanza ponderada con correcci´on suavizada deU . . . 15
3.5 DCB para el criterio de justo a tiempo . . . 16
4.1 Un AGC de tres poblaciones . . . 22
4.2 Esquema de la evaluaci´on de una de las tres poblaciones . . . 23
5.1 Creaci´on de una sublista de tareas . . . 27
5.2 Representaci´on de las tareas de la partici´on sk en el cromosoma binario. . . . 29
5.3 Un AGC dep poblaciones para resolver un problema de programaci´on de tareas 30 5.4 Ejemplo de particiones con factor de traslape h= 2. . . 32
6.1 Resultados de 10 ejecuciones de G(3, 0, 0) para una instancia de I(20, E). . . 39
6.2 Resultados de 10 ejecuciones de G(2, 0, 0) para una instancia de I(20, H). . . 40
6.3 Resultados de 10 ejecuciones de G(3, 0, 0) para una instancia de I(50, E). . . 41
6.4 Resultados de 10 ejecuciones de G(2, 0, 0) para una instancia de I(50, H). . . 42
6.5 Resultados de 10 ejecuciones de G(3, 0, 0) para una instancia de I(100, E). . 43
6.6 Resultados de 10 ejecuciones de G(4, 0, 0) para una instancia de I(100, H). . 44
6.7 Resultados de 10 ejecuciones de G(3, 2, 0) para una instancia de I(20, E). . . 48
6.8 Resultados de 10 ejecuciones de G(2, 2, 0) para una instancia de I(20, H). . . 49
6.9 Resultados de 10 ejecuciones de G(3, 2, 0) para una instancia de I(50, E). . . 50
6.10 Resultados de 10 ejecuciones de G(2, 2, 0) para una instancia de I(50, H). . . 51
6.11 Resultados de 10 ejecuciones de G(3, 2, 0) para una instancia de I(100, E). . 52
6.12 Resultados de 10 ejecuciones de G(4, 2, 0) para una instancia de I(100, H). . 53
6.13 Resultados de 10 ejecuciones de G(3, 0, 1) para una instancia de I(20, E). . . 57
6.14 Resultados de 10 ejecuciones de G(2, 0, 2) para una instancia de I(20, H). . . 58
6.15 Resultados de 10 ejecuciones de G(3, 0, 1) para una instancia de I(50, E). . . 59
6.16 Resultados de 10 ejecuciones de G(2, 0, 2) para una instancia de I(50, H). . . 60
6.17 Resultados de 10 ejecuciones de G(3, 2, 1) para una instancia de I(100, E). . 61
Cap´ıtulo 1
Introducci´
on
Este trabajo de tesis aborda la soluci´on al problema de programaci´on de tareas mini-mizando el criterio de justo a tiempo, mediante la combinaci´on de un algoritmo gen´etico cooperante con una heur´ıstica de programaci´on de tareas llamada din´amica de cuello de bo-tella.
El problema de programaci´on de tareas trata sobre la asignaci´on de recursos limitados a ciertas tareas u operaciones a trav´es de cierto per´ıodo de tiempo (Pinedo, 1995). Los recursos y tareas pueden tomar diferentes formas, de acuerdo al dominio del problema que se aborde; por ejemplo, en un problema de programaci´on de vuelos, los recursos pueden ser las pistas de aterrizaje, las tareas pueden ser despegues y aterrizajes de aviones. Para el caso de una empresa de la construcci´on y de un sistema de procesamiento de informaci´on, los recursos ser´ıan las flotillas con que se cuentan y las unidades de procesamiento; las tareas ser´ıan las etapas del proceso de construcci´on y las ejecuciones de proceso de datos, respectivamente. El problema de programaci´on de tareas existe en casi todos los ambientes de producci´on o de procesamiento de informaci´on y juega un papel importante en el desempe˜no general de la empresa o sistema de producci´on. La programaci´on de tareas y el control del flujo de trabajos a trav´es de un ambiente de producci´on es esencial en los procesos de manufactura (Gideon, 1995). Una adecuada programaci´on puede reducir significativamente los costos de producci´on y reducir los tiempos de proceso permitiendo cumplir con los compromisos de entrega a tiempo.
la informaci´on generada por los dem´as AGs para encontrar una mejor soluci´on que la que se encontrar´ıa con un solo algoritmo gen´etico, con el mismo n´umero de evaluaciones totales de la funci´on objetivo.
En los ´ultimos a˜nos se han realizado numerosos trabajos de investigaci´on abordando el problema de programaci´on de tareas en ambientes tanto determin´ısticos como probabil´ısticos. Una significativa cantidad de trabajos se han enfocado en tratar de encontrar heur´ısticas y algoritmos de tiempo polinomial que resuelvan problemas de programaci´on de tareas. Se han propuesto un gran n´umero de enfoques para modelar y solucionar los diferentes problemas de programaci´on de tareas, con diferentes grados de ´exito. Entre estos enfoques podemos mencionar la programaci´on matem´atica, reglas de despacho, sistemas expertos, redes neu-ronales, algoritmos gen´eticos, b´usqueda tab´u, recocido simulado, l´ogica difusa, entre otros (Jones, 1998). Existen trabajos directamente relacionados con el desarrollo de esta investiga-ci´on, tales como la soluci´on al problema de programaci´on de tareas mediante la combinaci´on de din´amica de cuello de botella y algoritmos gen´eticos simples (Mart´ınez, 1999), as´ı como el uso de un algoritmo gen´etico cooperante para el c´alculo de trayectorias de dos rob´ots en un mismo ambiente (de la Cueva, 1998). De manera particular, esta investigaci´on intenta mostrar las ventajas que ofrece un algoritmo gen´etico cooperante para resolver un problema cuya representaci´on no es claramente separable, tal como el problema que se pretende resol-ver. Para llevar a cabo lo anterior, se compara el desempe˜no del algoritmo gen´etico simple mencionado, con un algoritmo gen´etico cooperante con las mismas caracter´ısticas.
Cap´ıtulo 2
El modelo de programaci´
on de tareas
En este cap´ıtulo se aborda el tema de programaci´on de tareas, el cual es el ´area de aplicaci´on sobre la cual se concentran los experimentos realizados en esta tesis. El cap´ıtulo comienza con una introducci´on y definiciones de programaci´on de tareas, posteriormente se discute su importancia dentro de los ambientes de producci´on, manufactura, servicios y otras industrias. M´as adelante se mencionan las distintas formas en que se ha tratado de resolver este problema desde el punto de vista de diversas ´areas del conocimiento, tales como la investigaci´on de operaciones, la inteligencia artificial, entre otras. En este cap´ıtulo se define formalmente el problema de programaci´on de tareas en una m´aquina, su clasificaci´on y los distintos objetivos de producci´on para este tipo de problemas.
2.1
Introducci´
on
La programaci´on de tareas oschedulingconsiste principalmente en un problema de toma de decisiones cuyo objetivo es optimizar uno o m´as criterios de un plan de ejecuci´on de ciertas actividades o tareas a trav´es del tiempo. Estas actividades utilizan recursos limitados para ejecutarse, por lo que el problema de programaci´on de tareas es un paso importante antes de iniciar un cierto proceso o plan. En ambientes de manufactura y de empresas de servicio, la programaci´on de tareas juega un papel crucial, de manera que es una necesidad para mantenerse en el mercado competitivo actual. La idea japonesa dejusto a tiempo(Morton y Pentico, 1993) para mantener la satisfacci´on del cliente y reducir los costos de inventario ha cambiado la forma de pensar de las industrias. La importancia de la programaci´on de tareas se ha elevado, hoy en d´ıa el estudio de este problema no es solamente acad´emico, sino que existe una gran cantidad de aplicaciones comerciales.
de soluciones est´a dado por la cardinalidad recursos×tareas×tiempo, por lo que para proble-mas de tama˜no razonable el costo computacional requerido para solucionarlos es muy alto y en algunas ocasiones intratable (Matfeld, 1996). Esto sin tomar en cuenta el n´umero de restricciones tales como el tiempo l´ımite para elaborar alg´un producto, restricciones t´ecnicas de algunos procesos, escasez de recursos y otros m´as que dificultan la programaci´on. Por esta raz´on, la programaci´on de tareas ha sido objeto de numerosos estudios e investigaciones para definir m´etodos heur´ısticos y probabil´ısticos que permitan encontrar buenas soluciones de acuerdo a uno o varios objetivos econ´omicos dentro de la producci´on. Algunos ejemplos de estos m´etodos son b´usqueda tab´u (Glover, 1990), recocido simulado (Laarhoven y Mar-kov, 1992), redes neuronales (Shaw y Park, 1992), din´amica de cuello de botella (Morton y Pentico, 1993) y algoritmos gen´eticos (Goldberg, 1989).
Todo problema de asignaci´on de recursos a ciertas actividades en un periodo de tiempo es un problema de programaci´on de tareas. Estas asignaciones de recursos pueden estar limitadas por restricciones de m´aquinas, por el orden de las tareas o por diversas restricciones propias del problema espec´ıfico. De esta breve descripci´on, notamos que un problema de programaci´on de tareas puede tener varios niveles de complejidad dependiendo del ambiente y las restricciones que se tengan. Una definici´on del problema de programaci´on de tareas es la siguiente (Pinedo, 1995):
Es un proceso de toma de decisiones que trata sobre la asignaci´on de recursos limitados a tareas a trav´es del tiempo, cuya meta es la optimizaci´on de uno o m´as objetivos.
Una definici´on adicional de programaci´on de tareas es proporcionada por (Morton y Pentico, 1993):
Es el proceso de organizar, escoger, y fijar los tiempos de uso de los recursos para llevar a cabo todas las actividades necesarias con el fin de producir las salidas deseadas en los tiempos deseados, cumpliendo con un gran n´umero de restricciones de tiempo y de relaci´on entre las actividades y los recursos.
Es posible notar que ambas definiciones establecen una relaci´on entre los recursos o m´aquinas y las tareas o actividades. La programaci´on de tareas busca establecer dichas relaciones a trav´es del tiempo entre estos dos elementos, de modo que se satisfaga un criterio de desempe˜no espec´ıfico de la aplicaci´on.
2.2
La importancia de la programaci´
on de tareas
significativa de trabajos utilizando programaci´on din´amica y programaci´on entera. En los 70s, la investigaci´on se centr´o sobre las jerarqu´ıas de complejidad y en los 80s se generaron diversos trabajos acad´emicos e industriales.
La funci´on de la programaci´on de tareas dentro de una organizaci´on tiene que interactuar con diversas ´areas, estas intertfaces son independientes de la organizaci´on o de la planta en s´ı, y pueden diferir de una situaci´on a otra. El proceso de programaci´on de tareas es afectado por el proceso de planeaci´on de la producci´on, el cual maneja la planeaci´on a mediano y largo plazo para la organizaci´on entera. Este proceso debe considerar niveles de inventario, pron´osticos y requerimientos de recursos para optimizar a un alto nivel la producci´on y asignaci´on de recursos. La programaci´on de tareas tambi´en recibe entradas del control de planta, debido a que pueden existir eventos inesperados en ella, tales como fallas de m´aquinas o tiempos de proceso que son mayores que los anticipados. Dichos eventos tienen que ser cuidadosamente tomados en cuenta por el posible impacto que causen a la programaci´on completa.
A medida que los problemas de programaci´on de tareas empezaron a ser resueltos por medio de computadoras, las aplicaciones de software han empezado a tomar mayor impor-tancia en esta ´area, con un enfoque principal en la aplicaci´on pr´actica. El dise˜no y desarrollo han sido y est´an siendo realizados por cient´ıficos en el ´area de las ciencias computacionales, la investigaci´on de operaciones y la ingenier´ıa industrial.
2.3
Enfoques usados en programaci´
on de tareas
En las d´ecadas de los 50s y 60s el uso de las computadoras permiti´o representar la es-tructura de configuraciones de recursos, actividades y otras restricciones con cierto detalle, de tal forma que introduciendo datos apropiados y con heur´ısticas simples de despacho, pod´ıa observarse el comportamiento simulado del ambiente. En los 60s, se explot´o el poder de las computadoras para desarrollar m´etodos de programaci´on entera, los cuales permiten resol-ver en forma te´oricamente exacta problemas reales de programaci´on de tareas en job shops (Adams et al., 1988); el m´etodo debranch and boundcrea un ´arbol de decisi´on a partir de las tareas iniciales y encuentra un l´ımite inferior para tomar decisiones de qu´e ramas del ´arbol ya no deben explorarse, reduciendo as´ı el tiempo de ejecuci´on. En los 60s y 70s, algunos investigadores usaron la programaci´on din´amica para problemas de secuenciamiento, usando todos los posibles subconjuntos de tareas como elementos del espacio de estado. Sin embargo, estos m´etodos no son aplicables para problemas grandes debido a que los problemas son no polinomiales, lo cual significa que el tiempo de ejecuci´on de los algoritmos crece exponen-cialmente con el tama˜no del problema. Por ejemplo, no es posible que una computadora encuentre todas las permutaciones de 50 tareas para una m´aquina (50! ≈ 3.04×1064), y aunque existiera una m´aquina tan poderosa, si el problema se incrementara a 55 tareas, se requerir´ıa una computadora 300,000,000 de veces m´as r´apida.
consi-derarse de prop´osito general.
Dentro de los enfoques m´as nuevos para programaci´on de tareas, podemos mencionar los m´etodos de intensificaci´on/diversificaci´on, beam search, m´etodos de cuello de botella, redes neuronales, sistemas expertos, as´ı como tambi´en sistemas h´ıbridos de inteligencia artificial, investigaci´on de operaciones y sistemas de soporte de decisi´on. En cuanto a los m´etodos de intensificaci´on/diversificaci´on, podemos mencionar la b´usqueda tab´u, recocido simulado y los algoritmos gen´eticos. Se les conoce as´ı debido a que realizan un balance ente las dos estrategias de b´usqueda b´asicas: intensificar o explorar el espacio de b´usqueda en una direcci´on determinada o diversificar o explotar nuevos espacios de b´usqueda en otras direcciones.
El m´etodo beam search es un m´etodo de enumeraci´on parcial de ´arboles de decisi´on. Es similar a branch and bound, pero en lugar de cortar las ramas hasta garantizar que no son viables, lo hace con una medida de probabilidad. Un factor determinante de ´exito es contar con una buena ponderaci´on para esta medida de aplicabilidad del corte de ramas. En los 80s se realizaron diversas aplicaciones con sistemas expertos, como el caso de ISIS (Fox y Smith, 1984), OPAL (Bensana et al., 1988), CALLISTO, PATRIARCH, y MERLE. Algunos de ellos utilizan beam search, din´amicas de cuello de botella y diversas t´ecnicas de Inteligencia Artificial. En la d´ecada de los 90s surgieron diversos trabajos experimentales que utilizan redes neuronales artificiales, sin embargo, aunque los resultados son prometedores, a´un se considera un ´area de investigaci´on.
2.4
Programaci´
on de tareas en una m´
aquina
La programaci´on de tareas en una m´aquina consiste en un n´umero finito de tareas n
esperando ser procesados por un recurso ´unicom(Pinedo, 1995). Cada tareaj hace fila para esperar por el recurso. El recurso puede procesar s´olo una tarea a la vez. Cada tarea j est´a definida en t´erminos de los siguientes conceptos (Morton y Pentico, 1993):
• Tiempo de procesamiento (pj). Es el tiempo que tarda el recurso men procesar la
tarea j.
• Fecha de llegada(aj). Es el tiempo en que la tareaj arriba al sistema, por lo que se
encuentra lista para ser procesada.
• Fecha de entrega (dj). Es la fecha l´ımite en la cual la tarea jdebe ser terminada, es
decir, es la fecha de entrega convenida con el cliente.
• Costo por entrega tard´ıa (wTj). Es el costo por unidad de tiempo que se genera
por terminar la tarea j despu´es de su fecha de entrega dj. Este costo t´ıpicamente
representa una penalizaci´on por parte del cliente hacia la empresa por incumplimiento de un pedido, servicio, etc´etera.
• Costo por entrega anticipada(wEj). Es el costo por unidad de tiempo que se genera
por terminar la tareaj antes de su fecha de entrega dj. Esta clase de costo representa
wEj es menor quewTj, aunque esto no es una regla que aplica en todos los esquemas
de producci´on.
• Tiempo de terminaci´on (Cj). Es el tiempo en que la tarea j completa su
procesa-miento desde el inicio de operaciones del sistema.
• Demora (Lj). Es el margen de tiempo positivo o negativo en que la tareaj excede su
fecha l´ımite.
Lj =Cj −dj. (2.1)
• Tardanza (Tj). Es el margen de tiempo en que una tareaj termina su procesamiento
despu´es de la fecha l´ımitedj. Si termina antes, entonces la tardanza es cero.
Tj = max
j {0, Lj}. (2.2)
• Tempranez(Ej). Es el margen de tiempo en que una tareajtermina su procesamiento
antes de la fecha l´ımitedj. Si termina despu´es, entonces la tempranez es igual a cero.
Ej = max
j {0,−Lj}. (2.3)
2.5
Clasificaci´
on de problemas en una m´
aquina
La programaci´on de tareas en una m´aquina puede ser clasificada de diferentes maneras tomando en cuenta las restricciones que se pueden tener en el ambiente (est´atico o din´amico), en los procesos (con interrupciones o sin interrupciones) y en los objetivos de la producci´on (regulares o irregulares) que se intenten minimizar. De manera m´as espec´ıfica, los problemas de programaci´on de tareas en una m´aquina se clasifican a continuaci´on (Pinedo, 1995):
• Ambiente est´atico. Todas las tareas se encuentran disponibles al inicio de la operaci´on del sistema; es decir, el tiempo de arribo de cada tarea es cero.
• Ambiente din´amico. Las tareas pueden estar llegando en el transcurso de la operaci´on del sistema.
• Procesos sin interrupci´on. En este criterio, una tarea no puede ser suspendida hasta finalizar su procesamiento.
• Procesos con interrupci´on permitida. Se puede suspender sin costo alguno el proceso de una tarea para dar paso a una m´as importante. La tarea suspendida puede continuar su procesamiento m´as adelante.
• Objetivos irregulares. Los objetivos irregulares no solamente toman en cuenta el tiempo en que una tarea se propasa de su fecha l´ımite, sino que tambi´en penaliza otros factores, como el tiempo de anticipaci´on con que se entrega.
2.6
Objetivos de la producci´
on
Un ambiente de producci´on basado en programaci´on de tareas puede tener uno o m´as objetivos por cumplir. Dichos objetivos usualmente son clasificados como regulares o irregu-lares; ya sea para maximizar la utilizaci´on del recurso, minimizar el tiempo de flujo de una tarea en el sistema, o bien minimizar alguna medida de la tardanza de una tarea. A con-tinuaci´on se presentan algunos de los objetivos t´ıpicos utilizados en la producci´on (Pinedo, 1995):
• Makespan. Este objetivo intenta minimizar el tiempo de finalizaci´on de las tareas. La idea intuitiva delmakespanes que si se terminan de procesar antes de tiempo, permite a nuevas tareas empezar su procesamiento por adelantado.
Cmax = max
j {Cj}. (2.4)
• Tiempo de flujo ponderado. Trata de minimizar el lapso de tiempo que las tareas permanecen en el sistema de acuerdo a su importancia.
Fwt =
j
wjFj. (2.5)
• Demora ponderada. Este objetivo intenta disminuir el margen de tiempo positivo o negativo que las tareas exceden su fecha l´ımite para evitar una penalizaci´on wj.
Lwt=
j
wjLj. (2.6)
• Tardanza ponderada. Objetivo de la producci´on que intenta minimizar el margen de tiempo positivo que las tareas exceden su fecha l´ımite de acuerdo a su importancia relativa en el sistema.
Twt=
j
wTjTj. (2.7)
• Tiempo de flujo m´aximo. Se intenta minimizar la cantidad de tiempo que las tareas permanecen dentro del sistema.
Fmax= max
j {Fj}. (2.8)
• Demora m´axima. Este objetivo de la producci´on se encarga de reducir el lapso de tiempo (positivo o negativo) que las tareas exceden su fecha l´ımite.
Lmax = max
• Tardanza m´axima. Minimiza la cantidad de tiempo positivo en que las tareas propa-san su fecha l´ımite. Este objetivo es importante cuando los clientes soportan peque˜nas tardanzas en la entrega de sus pedidos, pero su disgusto aumenta progresivamente en tardanzas mayores.
Tmax= max
j {Tj}. (2.10)
• N´umero de tareas tard´ıas. Este objetivo intenta disminuir el n´umero de tareas tard´ıas resultando de gran utilidad cuando los clientes no aceptan tareas retrasadas, por lo que la orden se pierde.
Nwt=
j
WN jρ(Tj), (2.11)
donde
ρ(x) =
1, si x >0;
0, si no. (2.12)
• Justo a tiempo. En este objetivo de la producci´on se realizan penalizaciones por entregas prematuras y por entregas tard´ıas. Es muy ´util cuando los clientes no quieren sus tareas retrasadas pero tampoco las recogen cuando est´an listas con anticipaci´on.
ETwt=
j
(wEjEj+wTjTj). (2.13)
Cap´ıtulo 3
Din´
amica de cuello de botella
En este cap´ıtulo se presenta la heur´ıstica para problemas de programaci´on de tareas llamada din´amica de cuello de botella. Se presenta una breve introducci´on y la definici´on formal de la heur´ıstica. M´as adelante se define la heur´ıstica para la optimizaci´on de diversos objetivos de la producci´on, incluyendo el criterio de justo a tiempo, el cual ser´a utilizado en los experimentos a lo largo de esta tesis. Se presenta un ejemplo de programaci´on de tareas, as´ı como un algoritmo modificado que disminuye el tiempo de ejecuci´on de la heur´ıstica.
3.1
Introducci´
on
La din´amica de cuello de botella (DCB) es una heur´ıstica que se deriva de los m´etodos de cuello de botella para resolver problemas de programaci´on de tareas (Mart´ınez, 1999). Los m´etodos de cuello de botella estiman precios o costos de retraso para cada tarea, por medio de la estimaci´on del retraso final del trabajo al cual corresponde la tarea (G´alvez, 2000). En estos m´etodos se asigna una prioridad mayor a la tarea m´as cr´ıtica para ser programada primero. La mec´anica es de la siguiente manera. Primero se tienen que calcular prioridades para todos los trabajos ent= 0. Despu´es se programa el trabajo con m´as alta prioridad de acuerdo a alg´un objetivo. Una vez programada la tarea, se recalculan las prioridades de los trabajos restantes en t=t+pj, donde pj es el tiempo de procesamiento del ´ultimo trabajo
programado continuando con el mismo ciclo hasta que no queden m´as trabajos.
B´asicamente, la din´amica de cuello de botella estima un costo de retraso aproximado para cada actividad, estimando el correspondiente retraso de entrega del trabajo del cual es parte. La din´amica de cuello de botella tambi´en estima un costo de retraso aproximado por retrasar cualquier tarea agregando los costos de retraso para todas las actividades esperando por el recurso. Comparando los costos de retraso de un recurso contra los costos del retraso de cada actividad, permite que la actividad con mayor ahorro por unidad de costo del recurso sea programada primero.
3.2
Definici´
on
A continuaci´on se presenta una definici´on formal de din´amica de cuello de botella (Mor-ton y Pentico, 1993):
• SeaI la tasa de inter´es derivada del costo del capital de la empresa.
• Por lo tanto IR(t) es el costo por unidad de tiempo en el cual el recurso se usa una unidad de tiempo antes o despu´es.
• El tiempo de terminaci´on de una tarea j es la ´unica influencia de dicha tarea sobre la funci´on objetivo.
• La importanciawj de la tareajest´a dada porwj =DjVj, dondeDj es el valor agregado
yVj es la importancia del cliente.
• El slack est´a dado por Sj(t) = dj −pj −t, donde dj es la fecha l´ımite de entrega del
trabajoj ypj es el tiempo de procesamiento de la tareaj.
• Sea Uj(t) = fj(Sj(t)) el factor de urgencia de la tarea j, si dicha tarea se programa
primero y se espera completar su procesamiento en un tiempoSj. Esto es,fj es el costo
marginal de decrementar elslacken la funci´on objetivo con el tiempo de procesamiento
t+pj.
• El precio del retraso de la tareaj est´a dado porwjUj(t).
Aplicando estas definiciones al problema est´atico de secuenciamiento de tareas en una sola m´aquina, se puede estimar la prioridad de la tarea j para ser programada primero. Se tiene que el recurso tiene un precio R y la tarea j tiene una importancia wj, as´ı como una
urgenciaUj. Si decidimos procesar dicha tarea en un tiempo ∆tm´as temprano o m´as tarde,
entonces el ahorro o el costo para la tareaj es
∆twjUj, (3.1)
pero el recurso es tambi´en utlizado un tiempo ∆t antes o despu´es, resultando en un costo
∆tIRpj (3.2)
por el uso de dicho recurso. De esta manera, las ganancias de procesar un trabajo antes ser´ıan
∆twjUj−∆tIRpj. (3.3)
Dado que s´olo hay un recurso, el trabajo con la prioridad m´as alta deber´ıa ser aquel con el ahorro m´as alto por unidad de costo del recurso. La prioridad Πj de la tarea j est´a dada
por
Πj = ∆t
wjUj
IRpj −1
. (3.4)
Considerando que ∆t, I y R son los mismos para todos los trabajos, las prioridades
pueden ser estimadas por
Πj =
wj
pj
✲ ✻
wj
pj
−Sj
Πj
Figura 3.1: Din´amica de cuello de botella para retraso ponderado.
dondewj es la importancia de la tarea,pj es el tiempo de procesamiento y Uj es el factor de
urgencia en el tiempo actual.
3.3
DCB para diversos objetivos de producci´
on
El m´etodo de din´amica de cuello de botella asigna una prioridad a cada una de las tareas cada vez que se va a decidir qu´e tarea se enviar´a al recurso ´unico del sistema. Se programa la tarea de m´as alta prioridad y se recorre el reloj del sistema en el tiempo de procesamiento de la tarea que se program´o. La f´ormula 3.5 resume la forma en que la heur´ıstica de din´amica de cuello de botella determina la prioridad de la tareaj. La urgenciaUj depende del objetivo
de producci´on que se desea optimizar. En general, no hay una forma ´unica de expresi´on de la urgencia para un objetivo dado.
Con el fin de ilustrar la aplicaci´on de din´amica de cuello de botella, consideremos el objetivo de producci´on de retraso ponderado. En este caso se tiene quewjUj(t) = wj para
todos los tiempos t. Se deriva que el costo marginal del retraso es independiente del retraso mismo. Por lo tanto, no necesitamos calcular el factor de urgencia, es decir, Uj(t) = 1 para
todos los tiempost. La funci´on de prioridad es simplemente:
Πj =
wj
pj
(3.6) La gr´afica de DCB para el objetivo de retraso ponderado se muestra en la figura 3.1. De igual forma, es posible utilizar din´amica de cuello de botella para minimizar el criterio de tardanza ponderada. En este criterio de optimizaci´on se penalizan los trabajos tard´ıos; es decir, los trabajos que exceden su fecha l´ımite. La tardanza ponderada se define como:
Twt =
j
✲ ✻
wj
pj
−Sj
Πj
Figura 3.2: DCB para tardanza pondera sin correcci´on de urgencia
donde
Tj =
0, si Cj−dj <0;
Cj−dj, en caso contrario.
Cj es la fecha o tiempo en que se completa la tarea j. Una vez que se ha establecido este
criterio de producci´on, din´amica de cuello de botella presenta varias alternativas de soluci´on. Como primer alternativa de din´amica de cuello de botella para este objetivo de producci´on, se tiene la heur´ıstica sin correcci´on de la urgencia. Para minimizar la tardanza ponderada debemos tomar en cuenta la holgura de la tarea. Si la tareajse programa en el tiempo t, su holgura estar´a dada por
Sj(t) =dj−(pj+t). (3.8)
Intuitivamente podemos decir que una tarea cuya holgura sea negativa, es decir, que su fecha de entrega ya pas´o, tendr´a una mayor prioridad por ser un trabajo tard´ıo. Por esta raz´on, la prioridad de las tareas se calcula de la siguiente forma:
Πj =
0, si Sj >0;
wj/pj si Sj ≤0.
(3.9) La gr´afica de esta funci´on se muestra en la figura 3.2. Esta heur´ıstica tiene un desempe˜no aceptable, sin embargo, puede ser mejorada mediante la heur´ıstica que toma en cuenta la correcci´on del factor de urgencia. Con esta correci´on, se considera que no es posible retrasar el inicio de una tarea por cualquier tiempo ∆. El retraso en iniciar una tarea espi, el tiempo
de procesamiento de la tarea que se est´a realizando en lugar de la tareaj. Si la tareaj tiene inicialmente una holgura mayor que pi, entonces de acuerdo a la heur´ıstica presentada su
prioridad es cero antes y despu´es de realizar la tarea i. Pero si Sj/pj = β < 1 entonces la
✲ ✻
wj
pj
−Sj
Πj pav ✡✡ ✡✡ ✡✡ ✡✡
Figura 3.3: DCB para tardanza ponderada con correcci´on de la urgencia.
durante una fracci´on 1−β de pi de donde la prioridad promedio ser´ıa (1−β)wj/pj. S i la
tarea ise realiza antes que la tareaj:
wi
pi
1−S
+ i
pj
+
≥ wj
pj
1−S
+ j pi + , (3.10) donde
x+ =
x, si x≥0; 0, si x <0.
La heur´ıstica anterior tiene el problema de que la prioridad de una tarea depende de los tiempos de procesamiento de las tareas con las cuales est´a compitiendo por un lugar en el programa de trabajo. Una soluci´on pr´actica es utilizar el promedio de los tiempos de procesamiento de las tareas que est´an compitiendo por la m´as alta prioridad, pav, en lugar
de pi. La prioridad de la tareaj que proporciona esta heur´ıstica es:
Πj =
wj
pj
1−S
+ j
pav
+
. (3.11)
La gr´afica del calculo de la prioridad Πj se muestra en la figura 3.3. La ´ultima
✲ ✻
wj
pj
−Sj
✪
Figura 3.4: DCB para tardanza ponderada con correcci´on suavizada deU
de holguras y prioridades tarea por tarea puede ser err´onea si hay varias tareas con fecha de entrega similar. Un procedimiento simple es escoger un conjunto de pesos exponencialmente decrecientes que suman 1, y promediando las urgencias de tiempo adecuadamente, se obtiene la siguiente regla con la que se calcula la prioridad de las tareas:
Πj =
wj
pj
exp
1− S + j
kpav
, (3.12)
donde k es un par´ametro que ajusta el l´ımite de cambio de prioridad. La gr´afica de Πj se
muestra en la figura 3.3.
En general, se puede decir que las heur´ısticas que toman en cuenta la correcci´on del factor de urgenciaUj, obtienen un mejor resultado que la heur´ıstica sin urgencia. La actualizaci´on
de los valores de urgencia con respecto al tiempo permiten a din´amica de cuello de botella programar cada tarea m´as informaci´on acerca del estado del sistema de producci´on. La selecci´on de la heur´ıstica con correcci´on que se debe utilizar, est´a relacionada con el problema en particular que se pretende resolver, tomando en cuenta la distribuci´on de los tiempos de entrega y los tiempos de procesamiento de las tareas, as´ı como alguna otra informaci´on adicional que pudiera servir para seleccionar alguna heur´ısitca.
3.4
DCB para justo a tiempo
✲ ✻
wTj
pj
−wEj
pj
−Sj
Πj pav ✡✡ ✡✡ ✡✡ ✡✡ ✡✡ ✡✡
Figura 3.5: DCB para el criterio de justo a tiempo
tiempo se define como:
ETwt=
j
(wEjEj+wTjTj), (3.13)
tal como se describi´o en el cap´ıtulo anterior. La heur´ıstica de DCB para minimizar el criterio de Justo a tiempo calcula las prioridad de la tareaj con la siguiente f´ormula (Ow y Morton, 1989):
Πj =
wTj−min
1, S
+ j
kpav
(wTj +wEj)
pj
. (3.14)
3.5
Modificaciones a DCB para justo a tiempo
La demanda de recursos de c´omputo de din´amica de cuello de botella puede llegar a ser muy alta, sobre todo si el problema que se est´a resolviendo es de tama˜no considerable, o bien si se ejecuta m´ultiples veces al ser combinada con otros algoritmos. Por esta raz´on, es conveniente realizar algunas modificaciones para minimizar el tiempo de ejecuci´on de la heur´ıstica din´amica de cuello de botella (Valenzuela, 2001).
En la secci´on anterior se present´o la heur´ıstica DCB para minimizar el criterio de justo a tiempo y la f´ormula para el c´alculo de prioridades. Podemos reescribir la prioridad de la tarea j como a continuaci´on se muestra:
Πjpj =wTj −min
1, S
+ j
kpav
(wTj+wEj). (3.15)
De esta ecuaci´on, podemos analizar varios casos. Sikpav≤Sj+ entonces:
Πjpj =wTj −(wTj +wEj) =wEj. (3.16)
Sikpav ≤Sj+ obtenemos:
Πjpj =wTj−
Sj+ kpav
(wTj+wEj). (3.17)
Esta ´ultima ecuaci´on se puede dividir en dos casos. Para el caso en que kpav ≤Sj+ y
Sj >0, tenemos:
Πjpj =wTj−
Sj+ kpav
(wTj+wEj). (3.18)
Sikpav ≤Sj+ ySj >0, entonces:
Πjpj =wTj. (3.19)
De esta forma, podemos reescribir la heur´ıstica DCB de la siguiente manera:
Πjpj =
wTj si Sj ≤0;
wTj −
Sj+ kpav
(wTj +wEj) si 0< Sj <kpav;
wEj si Sj ≥kpav.
(3.20)
Una tarea cualquiera en el tiempot, solamente puede estar en una de las tres posiciones determinadas en la ecuaci´on anterior. Es posible que aparezca en la recta superior, cuando
Sj ≤ 0; de igual forma, puede presentarse en la diagonal ascendente, representando el
mo-vimiento gradual de urgencias de las tareas, que corresponde a 0 < Sj <kpav; finalmente,
puede estar en la recta inferior, que corresponde aSj ≥kpav.
programarla, de esta forma evitaremos los incrementos unitarios del tiempo con el consecuente ahorro de c´alculos de prioridades para todas las tareas.
La diagonal de la figura 3.4 corresponde a la ecuaci´on:
Πjpj =wTj−
Sj+ kpav
(wTj+wEj). (3.21)
Al despejar Sj de la ecuaci´on anterior obtenemos
Sj =
kpav
wTj+wEj
(wTj−Πjpj). (3.22)
La holguraSj para cuando la prioridad Πj es m´ınima es:
Sjmin =kpav. (3.23)
Recordando que la holgura se define como Sj = dj −pj −t, se puede despejar de la
ecuaci´on anterior el tiempo cuando la holgura es m´ınima:
tminj =dj−pj −Sjmin=dj−pj−kpav. (3.24)
La holgura para cuando la prioridad Πj es cero es:
Sj0= kpav
wTj+wEj
wTj. (3.25)
De la misma forma, se puede obtener el tiempo para el cual la prioridad se vuelve positiva:
t0j =dj−pj−kpav
wTj
wTj+wEj
. (3.26)
Las cantidadeskpav,wTj+wEj ydj−pj permanecen constantes durante toda la
genera-ci´on de la secuencia de tareas de DCB, por esta raz´on pueden ser calculadas por anticipado. Para agrupar y simplificar operaciones, se proponen las siguientes definiciones:
ˆ
p=kpav =
k n
n
i=1
pi; (3.27)
Dj =dj−pj; (3.28)
Wj =wTj+wEj. (3.29)
Sustituyendo las definiciones anteriores en las ecuaciones definidas en esta secci´on, se obtienen las siguientes ecuaciones:
t0j =Dj−pˆ
wTj
Wj
; (3.31)
tmaxj =Dj; (3.32)
Πj =
1
pj
wTj−
Dj−t
ˆ
pWj
. (3.33)
Donde la prioridad es m´axima, mayor o igual a cero y m´ınima para tmaxj , t0j y tminj , respectivamente.
3.6
Algoritmo para la evaluaci´
on r´
apida de DCB
De acuerdo a las definiciones de los posibles casos en los que la prioridad de la tarea j
puede encontrarse en un tiempo t cualquiera en la ejecuci´on, es posible definir un algoritmo que disminuya el tiempo de ejecuci´on del algoritmo de din´amica de cuello de botella con tiempos muertos (Valenzuela, 2001). La disminuci´on de tiempo se hace m´as evidente, cuando en la iteraci´on se involucran tiempos muertos insertados de manera consistente. El algoritmo se muestra a continuaci´on:
1. Calcular ˆp.
2. Para todas las tareas, calcularDj, Wj, tminj , t0j ytmaxj .
3. Fijar el tiempo de inicio t=t0.
4. Para cada tarea:
• Marcarla como tareaα sit < t0j;
• Marcarla como tareaβ si t0
j ≤t≤tmaxj .
5. Para todas las tareas, sit > tmaxj se marca como tarea γ y se calcula su prioridad como
Πj =
wTj
pj
. (3.34)
6. Para las tareasβ se calcula su prioridad como
Πj =
1
pj
wTj−
Dj−t
ˆ
pWj
. (3.35)
7. Se encuentra la tareaβoγ con m´axima prioridad Πj y se programa esta tarea
8. Si no existe ninguna tarea β o γ, se selecciona la tarea α con menor t0j y se recorre el reloj en su tiempo de procesamiento.
Cap´ıtulo 4
El algoritmo gen´
etico cooperante
En este cap´ıtulo se presenta un algoritmo gen´etico de varias poblaciones, llamado algo-ritmo gen´etico cooperante(de la Cueva, 1998). Se realiza una descripci´on de su estructura, su funcionamiento y sus operadores. Se describe adem´as su mecanismo de intercambio de informaci´on, el cual es indispensable para realizar la cooperaci´on entre las poblaciones del al-goritmo gen´etico cooperante (AGC). Finalmente se comenta de manera breve una aplicaci´on del algoritmo, as´ı como los tipos de problemas que es conveniente representar mediante un AGC.
4.1
Descripci´
on y funcionamiento
El algoritmo gen´etico cooperante, es en realidad un conjunto de algoritmos gen´eticos que trabajan de manera coordinada para llegar a su objetivo planeado. La coordinaci´on se realiza mediante un mecanismo de comunicaci´on entre las poblaciones del algoritmo gen´etico coo-perante, similar al operador de migraci´on de un algoritmo gen´etico paralelo (Belding, 1995), llamado mecanismo de intercambio de informaci´on. Debido a que las poblaciones pueden representar componentes relacionados pero distintos, ´estas pueden tener diferente n´umero de individuos, as´ı como diferente longitud de los mismos. Otra caracter´ıstica importante es que la funci´on objetivo de cualquiera de las poblaciones puede ser distinta, sin embargo, su valor puede depender del valor de ciertos par´ametros de las dem´as poblaciones.
El AGC es similar a un algoritmo gen´etico paralelo (AGP) en el sentido de que tiene varias poblaciones. El AGC cuenta con una serie de poblaciones, s´olo que a diferencia de un AGP, estas poblaciones son de individuos que representan algo distinto. Esto implica que los elementos de una de las poblaciones no pueden emigrar para incorporarse a las otras, como lo hacen com´unmente en un AGP. Debido a esta caracter´ıstica, cada poblaci´on de un AGC puede representar un elemento distinto del problema que se pretende resolver. En un algoritmo gen´etico cooperante, debe existir alg´un medio para intercambiar informaci´on entre las poblaciones; de este modo los elementos del AGC trabajan en una misma direcci´on para cumplir el objetivo global. Com´unmente, dicho medio de intercambio de informaci´on depende de la representaci´on del problema que se establece en el AGC.
su valor como informaci´on para la evaluaci´on de la poblaci´on que lo recibe. Adem´as, el mecanismo de intercambio de informaci´on puede transportar otro tipo de informaci´on que sirva para llevar a cabo la cooperaci´on y la coordinaci´on del sistema.
Pr´acticamente, un AGC se puede considerar como un conjunto de algoritmos gen´eticos simples que operan de manera independiente, pero donde la evaluaci´on de los individuos de su poblaci´on depende del comportamiento de las otras poblaciones. A medida que un AG evoluciona, la funci´on de aptitud de los dem´as AGs dentro del algoritmo gen´etico cooperante puede ser modificada. Esto es importante ya que se est´a hablando de una funci´on de aptitud din´amica, es decir, que puede cambiar con el tiempo con respecto a la evoluci´on de todas las poblaciones que componen el AGC. Es entre estas funciones de aptitud individuales donde en realidad se lleva a cabo la comunicaci´on, ya que la informaci´on recibida por medio de este mecanismo es necesaria para realizar la evaluaci´on de cada una de las poblaciones.
Los operadores gen´eticos de selecci´on, cruce y mutaci´on (Goldberg, 1989) de un AG independiente se realizan de la misma forma que un AG tradicional. S´olo en la evaluaci´on es donde se toma en cuenta la cooperaci´on con el resto de los AGs. En la figura 4.1 podemos ver un esquema de un AGC de tres poblaciones.
Población 2
n generaciones
Población 3
p generaciones
Población 1
m generaciones i mejor1,
j mejor2,
k mejor3,
Función de Aptitud
i
m1, m2,j m3,k
a p t i t u d
Figura 4.1: Un AGC de tres poblaciones
Al final de cada generaci´on, cada poblaci´on env´ıa su mejor elemento llamado mi,j, (el
mejor individuo de la poblaci´on i en la generaci´on j). El elemento enviado no pasa a ser parte de las otras poblaciones como lo har´ıa un AGP, por lo que a esto se le considera un mecanismo y no un operador gen´etico, ya que no altera las poblaciones. Estos mejores elementos se utilizan para completar una plantilla, donde el valor de la funci´on de aptitud depende de los valores que contenga esta plantilla.
evaluaci´on de cada uno de los elementos de una poblaci´on est´a basada en el valor de la plantilla en el momento de la evaluaci´on, la cual est´a formada con los mejores individuos de las otras poblaciones en la generaci´on anterior, los cuales son enviados por medio del mecanismo de intercambio de informaci´on, como se muestra en la figura 4.2. En caso de que sea la generaci´on inicial, los mejores elementos son generados de manera aleatoria.
Función de Aptitud
1
m mejores
Evaluación del elemento k
Población i de n individuos, m generaciones
Individuo k a evaluar
. . . ci,k . . . mp 1
2 3
n
[image:35.612.186.460.196.397.2]. . . . . .
Figura 4.2: Esquema de la evaluaci´on de una de las tres poblaciones
Cada poblaci´on env´ıa su mejor individuo a un lugar espec´ıfico dentro de la plantilla. De esta forma, cuando una poblaci´on va a ser evaluada simplemente coloca cada uno de sus elementos en su lugar, la cual es completada con los mejores de las otras poblaciones, y finalmente se aplica la funci´on de aptitud correspondiente. Una vez terminada la evaluaci´on de la poblaci´on i, se procede a la colocaci´on del mejor de dicha poblaci´on en su lugar de la plantilla para que este valor sea utilizado por las otras poblaciones cuando tengan que evaluarse.
cooperante present´o una ventaja definitiva, debido a la naturaleza claramente separada del problema; existen dos brazos de robot y la aptitud de cada trayectoria depende claramente de la posici´on y trayectoria del otro brazo.
Cap´ıtulo 5
Representaci´
on del problema utilizando un AGC
En este cap´ıtulo se presenta el uso de un algoritmo gen´etico cooperante (AGC) para resolver un problema de programaci´on de tareas. Se presenta una justificaci´on del uso de un AGC para la soluci´on de este tipo de problemas, as´ı como tambi´en la suposici´on de la existencia de unaseparabilidad impl´ıcitapresente en los problemas de programaci´on de tareas. Se describe la codificaci´on del problema en los elementos de un algoritmo gen´etico cooperante, as´ı como el proceso de evaluaci´on de los individuos de cada poblaci´on del AGC. Se muestra adem´as un ejemplo de soluci´on de una instancia del problema. Finalmente se discuten dos variantes fundamentales para el desempe˜no del algoritmo: el uso de particiones traslapadas y la reinicializaci´on.
5.1
Representaci´
on del problema
La representaci´on mediante un algoritmo gen´etico cooperante de varias poblaciones se basa en la suposici´on de que en un problema de programaci´on de tareas existen tareas que est´an fuertemente relacionadas entre s´ı; de igual forma, existen tareas que no influyen en la programaci´on de otras. Podemos llamar a esta propiedad laseparabilidad impl´ıcita. Debido a que no es f´acil identificar mediante un an´alisis heur´ıstico dicha condici´on, se pretende utilizar la selecci´on natural y la naturaleza dividida de un algoritmo gen´etico cooperante para identificar los grupos de tareas relacionadas, y de esta forma encontrar mejores soluciones al problema que las heur´ısticas probadas anteriormente, e incluso encontrar un mejor desempe˜no que un algoritmo gen´etico simple.
Se desea representar el problema de programaci´on de tareas en una m´aquina que deber´a ser resuelto por el algoritmo gen´etico cooperante. Para ello, definimos una tarea j como
j=pj, dj, wEj, wTj
, (5.1)
dondepj, representa el tiempo de procesamiento de la tareaj en el ´unico recurso del sistema,
dj el tiempo de entrega de la tareaj,wEj es el costo por unidad de tiempo que se genera por
entregar prematuramente la tarea, ywTj el costo por unidad de tiempo generado por entregar
de manera tard´ıa la tareaj.
Definimos un conjunto finito de tareas no ordenadas J, de la siguiente forma:
donde n es el n´umero de tareas que contiene el conjunto J. Dicho conjunto de tareas es la instancia del problema de programaci´on de tareas que se pretende resolver mediante un AGC. Se define una secuencia ordenada de tareasS, que representa el orden en que se proce-sar´an cada una de las tareas del conjunto J; es decir, la tarea j se ejecutar´a en el tiempo
tj:
S={(j, tj)|j∈J}. (5.3)
La secuencia de tareas S es producida por:
S =D(J), (5.4)
dondeD es la funci´on que ordena un conjunto de tareasJ mediante el m´etodo de din´amica de cuello de botella.
La secuenciaS tiene un costo asociadocs, que se obtiene mediante la funci´on de
evalua-ci´on C, la cual eval´ua el costo de programar el conjunto de tareas J con la secuencia S, es decir:
cs=C(S, J). (5.5)
La funci´on C, calcula el costo asociado cs, en base a un criterio de producci´on
previa-mente establecido. En los experimentos llevados a cabo en esta tesis, una secuencia de tareas se eval´ua con el criterio de producci´on justo a tiempo, definido en el cap´ıtulo 3.
5.2
Creaci´
on de las particiones
Un algoritmo gen´etico cooperante, tal como se describi´o en el cap´ıtulo anterior, contiene varias poblaciones que representan distintos elementos del problema en particular que se pretende resolver. Para el problema de programaci´on de tareas, cada partici´on en un algoritmo gen´etico cooperante contiene la representaci´on de un subconjunto de tareas del problema original. El procedimiento de creaci´on de dichos subconjuntos se define a continuaci´on.
SeaGp un algoritmo gen´etico cooperante (de la Cueva, 1998) deppoblaciones, tal como
se defini´o en el cap´ıtulo 4:
{P1, P2, . . . , Pp} ∈Gp. (5.6)
La poblaci´on Pk de cromosomas binarios (Goldberg, 1989) de igual longitud se define
como:
Pk={c1,k, c2,k, . . . , cpk,k}, (5.7)
dondepk es el n´umero de individuos de la poblaci´onPk.
La partici´on sk,k= 1,2, . . . , p; est´a definida como la sublista de tareas ordenadas de la
listaS, definida por:
El n´umero de poblaciones p de un algoritmo gen´etico cooperante Gp, corresponde al
n´umero de particiones de la lista de tareasS, es decir:
S ={s1, s2, . . . , sp}, (5.9)
tal que
s1 =f1,b1(S), s2 =fb1+1,b2(S), . . . sp =fbn−1,bn(S). (5.10) La funci´on fa,b regresa la sublista de tareas desde la posici´ona, hasta la posici´onb, tal como
se muestra en la figura 5.1. El tama˜no de las particionessk de la secuencia de tareas S, es
determinado por el n´umero de dichas particionesp, con la expresi´on:
λ= n
p
. (5.11)
Por lo tanto, un conjunto de particiones {s1, s2, . . . , sp} ∈S que ser´a representado por
un algoritmo gen´etico cooperante Gp, se genera de la forma:
s1 =f1,λ(S); s2=f1+λ,2λ(S); . . . sp =f(p−1)λ+1,n(S). (5.12)
De manera m´as general, la partici´onsk se define como:
sk =
f1+(k−1)λ,kλ(S), si k < p;
f1+(k−1)λ,n(S), si k=p. (5.13)
[image:39.612.203.438.378.612.2]j
S
1 2 . . . a . . b . . . n ks
j
a a+1 . . b b af
,Figura 5.1: Creaci´on de una sublista de tareas
Cada poblaci´on Pk del algoritmo gen´etico cooperanteGp, representa una sublista
orde-nada de tareas sk de la lista completa de tareas S, mediante la funci´on de representaci´on
R:
la cual define dos factoresδwEj yδwTj, para toda j ∈sk. Dichos factores modifican el
costo por entrega prematura de la tareaj,wEj; as´ı como el costo por entrega tard´ıa de dicha
tarea,wTj, respectivamente. La funci´on de representaci´on fr defineδwEj como:
δwEj =ψ(αE, βE), (5.15)
dondeψ regresa un valor aleatorio con distribuci´on uniforme en el intervalo [αE, βE].
De manera similar, δwTj est´a dada por:
δwTj =ψ(αT, βT). (5.16)
Ambos factores se utilizan para calcular los pesos ajustados de la tareaj. Dichos valores ajustados de los pesos de la tarea j ser´an definidos m´as adelante en la evaluaci´on de las poblaciones Pk del algoritmo gen´etico cooperante Gp.
5.3
Codificaci´
on en el cromosoma
Una vez que las particiones o subconjuntos de tareas han sido definidos, es necesario representar dichos subconjuntos de tareas en las poblaciones correspondientes. Los factores
δwEj yδwTj para cada tareaj∈sk, se codifican en los cromosomas binarios de la poblaci´on
Pk que representa la partici´onsk, de la siguiente forma. Sea ci,k ∈Pk un cromosoma binario
de tama˜no 2ℓ(b−a), dondeℓse define como la longitud de representaci´on para los factoresδw, yb−aes el n´umero de tareas que pertenecen a la partici´on sk. El cromosoma ci,k se divide
en subconjuntos de bits de longitud 2ℓ, los cuales representar´an los factores de modificaci´on de cada tareaj∈sk. Para cada subconjunto creado, se generan dos factores de modificaci´on
δwEj y δwTj mediante las funciones 5.15 y 5.16. Cada factor δwEj generado, se codifica a
binario ocupando los primeros ℓ bits del subconjunto que representa la tarea j. De igual forma, cada factorδwTj ser´a codificado en binario, ocupandoℓbits restantes del subconjunto
de bits asignados en el cromosoma.
En la figura 5.2 se ilustra la representaci´on de cada tareaj ∈sk, en un cromosoma binario
de la poblaci´on Pk. Como se puede apreciar, el tama˜no del cromosoma crece linealmente con
el n´umero de tareas que se pretende representar en ´el.
5.4
Evaluaci´
on de los individuos
Una vez que el algoritmo gen´etico cooperanteGp ha llevado a cabo la representaci´on de
las sublistas de tareas sk en las poblacionesPk∈Gp, es necesario definir la forma de evaluar
la aptitud del elementoci,k ∈Pk.
Seagk un algoritmo gen´etico simple, definido como
gk(Pk, fk), (5.17)
01101 01011 00101 01100 · · ·
· · ·
10010 10001
δwEa δwTa δwEa+1 δwTa+1 δwEb δwTb
tarea a tareaa+ 1 tarea b
❄ ❄ ❄ ❄ ❄ ❄
Figura 5.2: Representaci´on de las tareas de la partici´onsk en el cromosoma binario.
La funci´on fk est´a dada por:
ei,k =fk(m1, m2, . . . , ci,k, . . . , mp); i= 1,2, . . . , p; (5.18)
donde los elementos mx representan el mejor individuo de la poblaci´on Px encontrado
hasta ese momento, tal que Px =Pk. ei,k representa la evaluaci´on del cromosoma ci,k.
La funci´on de aptitud fk, toma a los mejores elementos de las poblaciones encontrados
hasta ese momento, los cuales representan las tareas que est´an fuera de la partici´on sk para
completar un programaS y as´ı encontrar la evaluaci´on del invididuoci,k.
De manera m´as espec´ıfica, para cada funci´on que recibe, la funci´on fk decodifica el
segmento binario a un n´umero real en el intervalo [α, β], el cual representa los factores δwEj
y δwTj de cada tarea j ∈J, respectivamente. Para cada tarea j ∈ J, se obtienen los pesos
ajustadosw′ Ej yw
′
Tj mediante:
w′
Ej =wEj·δwEj (5.19)
y
w′
Tj =wTj ·δwTj, (5.20)
respectivamente.
Una vez que se han calculado los pesos ajustados para tarea, se defineJ′como el conjunto
de tareasj con pesos ajustados w′ Ej yw
′
Tj, es decir:
J′ =j|j=p
j, dj, w′Ej, w ′ Tj
. (5.21)
Con el conjunto de tareas con pesos ajustados J′, se crea una secuencia ajustada de
tareasS′ mediante la funci´on 5.4, de la siguiente forma:
S′ =D(J′). (5.22)
Finalmente, la evaluaci´on del individuoci,k es el costo de programar el conjunto original de
tareasJ con la secuencia ajustada de tareas S′, mediante la funci´on 5.5; es decir:
Secuencia de tareas, S . . . . . . 1 s . 2
s sp
1
g g2 gp
p
f
1
f f2
[image:42.612.159.479.112.329.2]. . . p P 2 P 1 P p
G
. . .Figura 5.3: Un AGC dep poblaciones para resolver un problema de programaci´on de tareas
5.5
Ejemplo del uso del AGC
A continuaci´on se presenta un ejemplo de soluci´on a un problema de programaci´on de tareas mediante un algoritmo gen´etico cooperante, con el fin de ilustrar los conceptos introducidos en este cap´ıtulo.
SeaJ un conjunto de tareas no ordenadas de longitudn= 10. Se pretende optimizar el criterio de Justo a tiempo utilizando un algoritmo gen´etico cooperante de 3 poblaciones,G3.
Se crea el ordenamiento inicial de tareas S, mediante la heur´ıstica de din´amica de cuello de botella, de la forma:
S =D(J). (5.24)
Ya que el algoritmo gen´etico cooperante G3 utilizar´a tres poblaciones para optimizar el
criterio justo a tiempo, es necesario construir tres particiones deS. Se calcula el tama˜no de las particiones mediante 5.11 de la siguiente forma:
λ= 10
3
= 3. (5.25)
De esta forma, se crean las particioness1, s2, s3 ∈S de acuerdo a las f´ormulas 5.13 de la
siguiente forma:
s1 =f1,λ(S) =f1,3(S), (5.26)
s2=fλ+1,2λ(S) =f4,6(S), (5.27)
s3 =f2λ+1,n(S) =f7,10(S). (5.28)
Una vez que se tiene el conjunto de particiones{s1, s2, s3}, se lleva a cabo la codificaci´on
de cada una de estas particiones en las poblaciones correspondientes,{P1, P2, P3}, utilizando
la funci´on de representaci´onR, de la forma:
P1 ←R(s1); P2 ←R(s2); P3←R(s3). (5.29)
Las poblaciones P1 yP2 representan 3 tareas, mientras que la poblaci´on P3 representa
4 tareas.
Para realizar la codificaci´on en las poblaciones correspondientes, se elige una longitud de representaci´onℓ= 5 bits en la funci´onRk, de modo que los cromosomas de la poblaciones
P1 yP2 son de tama˜no 2ℓ·3 = 30 bits; de forma similar, el tama˜no de los cromosomas de P3
es de 2ℓ·4 = 40 bits.
Los algoritmos gen´eticos simples {g1, g2, g3} ∈Gp, ejecutan una generaci´on de manera
alternada, donde la evaluaci´on de los individuos de cada poblaci´on se realiza con las funciones de evaluaci´on fk, definidas como:
ei,1=f1(ci,1, m2, m3), (5.30)
ei,2=f2(m1, ci,2, m3), (5.31)
y finalmente
ei,3=f3(m1, m2, ci,3). (5.32)
La figura 5.3 ilustra el funcionamiento completo de un algoritmo gen´etico cooperante de
p poblaciones, para optimizar la secuencia de tareasS.
5.6
Particiones traslapadas
La representaci´on de tareas utilizando particiones traslapadas significa que algunas tareas
j en el extremo superior de una partici´on sk, ser´an representadas tambi´en en el extremo
inicial de la partici´on sk+1. Se presenta una definici´on de particiones traslapadas, as´ı como
un ejemplo para ilustrar su funcionamiento. Seah el factor de traslape, tal que
h∈Gp, (5.33)
el cual representa el n´umero de tareas que se representan en particiones contiguas. De manera m´as espec´ıfica, la representaci´on de la secuencia de tareas S con particiones traslapadas se define como una extensi´on de 5.13, como:
tal que:
s1 =f1,b1+h(S), s2 =fb1+1,b2+h(S), . . . sp=fbn−1,bn(S). (5.35) De forma generalizada, la partici´onsk con traslape h se define como:
sk=
f1+(k−1)λ,kλ+h(S), si k < p;
f1+(k−1)λ,n(S), si k=p.
(5.36)
El siguiente ejemplo intenta ilustrar el uso de particiones traslapadas en un algoritmo gen´etico cooperante para resolver un problema de programaci´on de tareas. Se desea represen-tar la secuencia de represen-tareasScon 20 tareas, mediante tres particiones traslapadas con un factor de traslape h = 2. Al igual que en el ejemplo de la secci´on anterior, es necesario calcular el tama˜no de las particiones mediante 5.11, obteniendo:
λ= 20
3
= 6. (5.37)
Posteriormente, se crean las particioness1, s2, s3∈S de acuerdo a la f´ormula 5.39, de la
siguiente forma:
s1=f1,λ+h(S) =f1,8(S), (5.38)
s2=fλ+1,2λ+h(S) =f7,14(S), (5.39)
y por ´ultimo
s3 =f2λ+1,n(S) =f13,20(S). (5.40)
La figura 5.4 ilustra la representaci´on de la secuenciaSmediante particiones traslapadas.
17
4 5 6 7 8 9 10 11 12 13 14 15 16
18 19 20
1 2 3
4 5 6 7 8
1 2 3
7 8 9 10 11 12 13 14
13 14 15 16
17
18 19 20
2 =
h h=2
S
)
(
8, 1
1
f
S
s
=
s
2=
f
,714(
S
)
s
3=
f
13,20(
S
)
Figura 5.4: Ejemplo de particiones con factor de traslapeh= 2.
permite siempre utilizar dichas f´ormulas, incluso cuando no se desee utilizar representaci´on duplicada, en cuyo caso el factor de traslape hser´a cero.
5.7
Reinicializaci´
on
El proceso de reinicializaci´on en un algoritmo gen´etico simple, consiste en detener la ejecuci´on del algoritmo y sustituir una fracci´on de la poblaci´on por individuos generaados de forma aleatoria (Valenzuela, 2000). La idea de a˜nadir reinicializaciones en la ejecuci´on de un algortimo gen´etico simple, se basa en la necesidad de evitar convergencias prematuras de la poblaci´on en ´optimos locales. Una de las causas por las cuales se puede presentar una convergencia prematura de los individuos en un algoritmo gen´etico simple, es una presi´on selectiva alta de alg´un esquema o conjunto de esquemas que hacen que los individuos que los contienen, tengan aptitud claramente superior a la aptitud de cromosomas que no presentan dichos esquemas. El proceso de selecci´on del algoritmo gen´etico discrimina r´apidamente los individuos que no presentan ese conjunto de esquemas, produciendo probablemente una convergencia prematura de la poblaci´on a una soluci´on parcialmente satisfactoria.
En un algoritmo gen´etico cooperante, el proceso de reinicializaci´on presenta algunas diferencias con el algoritmo gen´etico simple. B´asicamente, la reinicializaci´on el algortimo gen´etico cooperante define proceso de intercambio de informaci´on. Cuando se lleva a cabo la reinicializaci´on, las particiones que contienen las tareas que forman el problema se reagrupan en particiones de tareas que est´an m´as relacionadas entre s´ı. La reagrupaci´on de tareas est´a basado en los resultados que el AGC ha obtenido hasta el momento de la reinicializaci´on. Cuando el AGC comienza de nuevo su ejecuci´on, lo hace a partir de un conjunto de particiones que por una parte representan la mejor soluci´on encontrada hasta el momento, y por otra representan los grupos de tareas que se presume tienen mayor dependencia en el valor de su programaci´on. Se espera que con este proceso de reagrupaci´on e intercambio de informaci´on, el algoritmo gen´etico cooperante deje de realizar evaluaciones poco prometedoras.
El momento de reinicializaci´on en un algoritmo gen´etico cooperante se elige de manera distinta que en el algoritmo gen´etico simple. Esto es debido a que en un algortimo gen´etico cooperante, el objetivo primario de la reinicializaci´on es la reagrupaci´on de las tareas en particiones con mejor desempe˜no, y no ´unicamente eliminar la convergencia de la poblaci´on. A continuaci´on se presenta una descripci´on del proceso de reinicializaci´on del algoritmo gen´etico cooperante presentado en esta tesis.
Sear el factor de reinicializaci´on tal que
r ∈Gp, (5.41)
el cual representa el n´umero de reinicializaciones que el algoritmo gen´etico cooperante realizar´a a lo largo de lasχ generaciones deGp. Se define la generaci´on τ como
τ =
χ
r+ 1
, (5.42)