algoritmo genetico.pdf

10
ALGORITMO GENÉTICO PARA SOLUCIONAR EL PROBLEMA DE PROGRAMACIÓN EN N MÁQUINAS EN PARALELO CUANDO HAY M TRABAJOS QUE NECESITAN RECURSOS DUALES MINIMIZANDO LA FECHA DE TERMINACIÓN DIEGO HERNÁN DÍAZ MARTÍNEZ 200021645 UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA INDUSTRIAL ASESOR: GONZALO MEJÍA AGRADECIMIENTOS A DASH OPTIMIZATION BOGOTÁ, DICIEMBRE DE 2005 1. Resumen El problema de secuenciar tareas en máquinas ha sido ampliamente estudiado a través de los años con el propósito de optimizar tiempos de proceso, minimizar tardanzas, entre otras razones. Existen muchos tipos de problemas con diferentes variaciones. En este proyecto se estudiará el caso de programar tareas que necesitan recursos duales en máquinas en paralelo. Recursos duales significa que un trabajo debe utilizar 1 o más máquinas iguales al mismo tiempo para ser procesada. El caso para 2 máquinas en paralelo fue estudiado por Sheng-Fuu Lin y Jaw-Yeh Chen (2000). En su trabajo, los autores diseñan un algoritmo a partir de propiedades matemáticas de las soluciones óptimas. Su algoritmo busca minimizar penalidades por tardanza. Este es probado obteniendo resultados satisfactorios. Problemas similares han sido estudiados con algoritmos genéticos para solucionarlos. Tal es el caso de Liu Min y Wu Cheng (1999) quienes diseñan un algoritmo genético para minimizar el tiempo de terminación del último trabajo en el caso de máquinas paralelas idénticas. En este caso, cualquier trabajo puede ser procesado en cualquiera de las máquinas (sólo una). Los autores utilizan un cromosoma de tamaño n en el que cada dígito puede tomar un valor de 1 a m. Cada posición corresponde a uno de los n trabajos y el número que esté en cada posición indica la máquina en la que será procesado ese trabajo. Utiliza una función exponencial basada en la función objetivo del problema a minimizar para calcular la aptitud de cada cromosoma. Luego utiliza los operadores comunes para construir el algoritmo genético. Este proyecto busca encontrar soluciones óptimas para el problema generalizado diseñando un algoritmo genético. La función objetivo a minimizar en este caso es el de la fecha de terminación del último trabajo. Este problema es por lo menos NP-hard 1 , pues el P2||Cmax (dos máquinas en paralelo, minimizar la fecha de terminación del último trabajo) lo es. El algoritmo diseñado se ha probado con problemas de hasta 30 trabajos con tiempos de proceso debajo de 60 segundos. Se comparará el algoritmo diseñado contra el método de programación lineal entera en el programa Xpress en 26 instancias diferentes. l t 1 Pinedo, Michae . “Scheduling: Theory, Algorithms, and Systems” (2nd Edi ion). Prentice-Hall. 2004. 1

Upload: janice-ortiz

Post on 17-Nov-2015

55 views

Category:

Documents


4 download

TRANSCRIPT

  • ALGORITMO GENTICO PARA SOLUCIONAR EL PROBLEMA DE PROGRAMACIN EN N MQUINAS EN PARALELO CUANDO

    HAY M TRABAJOS QUE NECESITAN RECURSOS DUALES MINIMIZANDO LA FECHA DE TERMINACIN

    DIEGO HERNN DAZ MARTNEZ 200021645

    UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERA

    DEPARTAMENTO DE INGENIERA INDUSTRIAL ASESOR: GONZALO MEJA

    AGRADECIMIENTOS A DASH OPTIMIZATION BOGOT, DICIEMBRE DE 2005

    1. Resumen El problema de secuenciar tareas en mquinas ha sido ampliamente estudiado a travs de los aos con el propsito de optimizar tiempos de proceso, minimizar tardanzas, entre otras razones. Existen muchos tipos de problemas con diferentes variaciones. En este proyecto se estudiar el caso de programar tareas que necesitan recursos duales en mquinas en paralelo. Recursos duales significa que un trabajo debe utilizar 1 o ms mquinas iguales al mismo tiempo para ser procesada. El caso para 2 mquinas en paralelo fue estudiado por Sheng-Fuu Lin y Jaw-Yeh Chen (2000). En su trabajo, los autores disean un algoritmo a partir de propiedades matemticas de las soluciones ptimas. Su algoritmo busca minimizar penalidades por tardanza. Este es probado obteniendo resultados satisfactorios. Problemas similares han sido estudiados con algoritmos genticos para solucionarlos. Tal es el caso de Liu Min y Wu Cheng (1999) quienes disean un algoritmo gentico para minimizar el tiempo de terminacin del ltimo trabajo en el caso de mquinas paralelas idnticas. En este caso, cualquier trabajo puede ser procesado en cualquiera de las mquinas (slo una). Los autores utilizan un cromosoma de tamao n en el que cada dgito puede tomar un valor de 1 a m. Cada posicin corresponde a uno de los n trabajos y el nmero que est en cada posicin indica la mquina en la que ser procesado ese trabajo. Utiliza una funcin exponencial basada en la funcin objetivo del problema a minimizar para calcular la aptitud de cada cromosoma. Luego utiliza los operadores comunes para construir el algoritmo gentico. Este proyecto busca encontrar soluciones ptimas para el problema generalizado diseando un algoritmo gentico. La funcin objetivo a minimizar en este caso es el de la fecha de terminacin del ltimo trabajo. Este problema es por lo menos NP-hard1, pues el P2||Cmax (dos mquinas en paralelo, minimizar la fecha de terminacin del ltimo trabajo) lo es. El algoritmo diseado se ha probado con problemas de hasta 30 trabajos con tiempos de proceso debajo de 60 segundos. Se comparar el algoritmo diseado contra el mtodo de programacin lineal entera en el programa Xpress en 26 instancias diferentes.

    l t 1 Pinedo, Michae . Scheduling: Theory, Algorithms, and Systems (2nd Edi ion). Prentice-Hall. 2004.

    1

  • 2. Notacin El algoritmo busca resolver el problema de programacin de trabajos con recursos duales cuando se tienen n mquinas en paralelo y m trabajos. La siguiente notacin ser utilizada en todo el documento.

    M: Es el conjunto de m mquinas. Su ndice correspondiente es i. N: Es el conjunto de n trabajos. Su ndice correspondiente es j. Pj: Tiempo de procesamiento del trabajo j. Yj: Variable de decisin que indica la fecha en la que el trabajo j se comienza a procesar. hijk: Variable binaria que nos indica si el trabajo jk (se utiliza el ndice k para indicar la parte del

    trabajo j, es decir, si j necesita 3 mquinas entonces existir j0, j1 y j2 que sern procesados en una mquina cada uno; a este conjunto de ndices particulares al trabajo j lo llamo {Jj}) ser procesada en la mquina i.

    Cj =Yj +Pj: Fecha de terminacin del trabajo j. Cmax= max( )jC para todo j: Fecha de terminacin del ltimo trabajo.

    3. Programacin Lineal Entera Mixta del Problema

    En este trabajo se desarroll una formulacin matemtica del problema como un programa lineal entero mixto con el fin de comparar los resultados del algoritmo gentico con las soluciones resultantes del mtodo exacto. El resultado fue el siguiente:

    { }

    { }

    { }

    { }{ }

    m ax

    1

    m ax1

    m ax

    m in. .

    1; ( , ) 1, ..., ;

    1; 1, ..., ; 1, ...,

    ; 1, ...,

    ; 1, ...,

    1 (1 ( , )); ; , 1, ..

    j

    j

    r j

    m

    ijk ji

    ijkk J

    n

    j ijkj k J

    j j

    j r r irk ijkk J k J

    Cs a

    h j k j n k J

    h i m j n

    p h C i m

    y p C j n

    y y p h h M a u x j r j k j k

    =

    =

    = =

    = =

    =

    + =

    + =

    { }{ }

    { }

    ., ; 1, ...,

    1 ( , ); ; , 1, ..., ; 1, ...,

    0; 1, ...,

    1; 1, ..., ; 1, ..., ;

    0

    r j

    r j j irk ijkk J k J

    j

    ijk j

    n i m

    y y p h h M a u x j r j k j k n i m

    y j n

    h i m j n k J

    =

    + = =

    =

    = = =

    Las variables de decisin son yj y hijk.

    2

  • El primer conjunto de restricciones implica que cada parte del trabajo j slo puede ser procesado en una mquina.

    El segundo conjunto de restricciones (en combinacin con la primera) sirve para obligar a la solucin a que cada parte del trabajo j se procese en una mquina diferente.

    El tercer conjunto de restricciones se encarga que todo el tiempo que la mquina este trabajando sea menor a la funcin objetivo.

    El cuarto conjunto de restricciones se utiliza para que el tiempo de terminacin de cada trabajo sea menor a la funcin objetivo.

    El quinto y sexto conjuntos de restricciones obliga al programa a que, si un trabajo j y un trabajo r deben ser procesados en una misma mquina i, entonces uno se programe despus del otro y nunca al mismo tiempo.

    La quinta restriccin tiene una nueva variable de decisin de tipo binario a la que llamo aux (j, r) pues el planteamiento original utilizaba el operador lgico o uniendo el quinto y sexto conjuntos de restricciones en uno solo. En este caso se divide la restriccin en dos restricciones lineales, restndole a cada una un nmero grande, M, que va multiplicado por 0 o por 1 dependiendo del valor que tome la variable. Esto se hace con el fin de que slo una de las restricciones quede activa, pues solo puede ocurrir que el trabajo j est antes que r o que el trabajo r est antes que j si deben ser procesados en la misma mquina (en el caso que los dos trabajos no usen la misma mquina, existe la posibilidad de que comiencen al mismo tiempo).

    4. Diseo y Funcionamiento del Algoritmo Gentico

    Se decidi abordar el problema a travs de un mtodo heurstico del tipo gentico, ya que en problemas similares se haba utilizado este mtodo con excelentes resultados como los casos de Liu Min y Wu Cheng (1999) y Jeffery K. Cochran, Shwu-Min Horno y John W. Fowler (2003) quienes abordaron diferentes problemas de mquinas en paralelo a travs de este mtodo. Cada solucin se codific de la siguiente manera: Si existen n trabajos, el cromosoma tendr entonces n posiciones. En cada posicin ira un nmero de 1 a n que representa uno de los trabajos a ser programados. Entonces, el cromosoma es una secuencia de n nmeros. Este orden representa una regla de programacin, es decir, que si el trabajo 2 est en la primera posicin y este necesita x mquinas para ser procesado, ese trabajo se programar primero en las x mquinas que necesita. Supongamos que luego sigue el trabajo 4 y que este necesita y mquinas. Si existen y mquinas disponibles, entonces se programar y empezar al mismo tiempo que el trabajo 2; si el nmero de mquinas disponibles es menor que y, se deber esperar a que se termine de procesar el trabajo 2 para proceder a programar el trabajo 4. El siguiente ejemplo ilustra mejor el funcionamiento del cromosoma:

    No. Tiempos de Proceso

    Nmero de Mquinas

    Necesitadas

    Nmero de Trabajos 5 1 5 2Nmero de Mquinas 3 2 3 1 3 1 2 4 2 3 5 3 3

    Tabla 1 Ejemplo Problema

    3

  • Tenemos el siguiente ejemplo de cromosoma:

    2 1 4 5 3

    Figura 1 Cromosoma Ejemplo

    Entonces, la programacin a la cual corresponde el cromosoma mencionado es la siguiente:

    Mquina

    1 2 2 2 4 4 5 5 5 3

    2 1 1 1 1 1 4 4 5 5 5 3

    3 1 1 1 1 1 4 4 5 5 5

    Unidades

    de Tiempo 1 2 3 4 5 6 7 8 9 10 11

    Figura 2 Programacin Cromosoma

    Sin embargo, existe la posibilidad de tener codificaciones diferentes que lleven a una misma solucin como por ejemplo la siguiente:

    1 2 4 5 3

    Figura 2 Cromosoma Ejemplo

    el cual codifica la misma solucin, pues los trabajos 1 y 2 comienzan a ser procesados al mismo tiempo en este caso. En la programacin hecha en Visual Basic, se utiliz una posicin extra al final para guardar el valor de la funcin objetivo de ese cromosoma (en el ejemplo anterior sera 11). Los operadores utilizados son crossover o cruce de 1 posicin y tambin se aplica con cierta probabilidad el operador de mutacin que intercambia dos posiciones de un cromosoma. Las siguientes figuras explican el funcionamiento de estos operadores en el algoritmo diseado.

    Figura 3 Operador Mutacin Algoritmo

    4

  • Figura 4 Operador Cruce Algoritmo

    El algoritmo gentico diseado para abordar el problema comprende bsicamente 4 pasos: Inicializacin de Datos, Creacin de Poblacin Inicial, Paso de Generaciones y Entrega de Mejor Solucin. Paso 1: Inicializacin de Datos El programa procede a obtener de la hoja de clculo los datos del problema (nmero de trabajos, numero de mquinas, tiempo de proceso de cada trabajo y nmero de mquinas que necesita cada trabajo) y los valores de los parmetros. Paso 2: Creacin de Poblacin Inicial El programa crea una matriz cuyo nmero de filas es el mismo que el tamao de poblacin. El nmero de columnas es del tamao del cromosoma (si son 5 trabajos, tendr 5 filas) ms una fila para guardar el valor de la funcin objetivo de cada cromosoma. En cada fila se genera un cromosoma aleatoriamente. Luego que todas las filas tengan un cromosoma, se procede a calcular la funcin objetivo de cada uno de estos cromosomas y se escribe en la ltima posicin de esa fila. Paso 3: Paso de Generaciones En cada generacin ocurre lo siguiente (se repite dependiendo del nmero de generaciones especificado): Paso 3.1: Escoger a los Padres Ms Aptos El programa crea una matriz cuyo nmero de filas es igual al nmero de hijos. El nmero de columna es el mismo que el de la matriz de poblacin. Se procede a llenar la matriz de hijos con los individuos de la poblacin que tienen los mejores valores de la funcin objetivo (en este caso, los que tengan la mnima fecha de terminacin del ltimo trabajo). Paso 3.2: Operador de Cruce (Produccin de Hijos) Se utiliza el operador de cruce para genera los hijos. Al finalizar, todos los cromosomas de la matriz hijos son el resultado del cruce de dos padres (o individuos mejor adaptados de la poblacin). Paso 3.3: Operador Mutacin Para cada hijo se genera un nmero aleatorio entre 0 y 1 y, dependiendo del valor de la probabilidad de mutacin, se utiliza o no el operador mutacin. Paso 3.4: Calcular Funcin Objetivo de los Hijos Paso 3.5: Reemplazando a los Peores Individuos Los individuos de la poblacin que tienen peores funciones objetivos son reemplazados por los hijos y se forma una nueva poblacin.

    5

  • Paso 4: Entrega de Mejor Solucin Entre la poblacin resultante de la ltima generacin se busca el cromosoma con la menor funcin objetivo y se procede a mostrar la solucin en una hoja nueva de Excel.

    Figura 5 Diagrama de Flujo del Algoritmo Gentico

    5. Ajuste de Parmetros

    Para el ajuste parmetros se procedi a correr un mismo problema con cambios a cada parmetro (dejando los dems parmetros en un valor fijo) para encontrar los valores para los cuales el algoritmo diera los mejores resultados en cuanto a tiempo de ejecucin y calidad de la solucin. En cada valor de cada parmetro se corri diez veces el problema y se obtuvo su respectivo tiempo de ejecucin promedio y solucin promedio. Las conclusiones a las que se llegaron fueron las siguientes:

    I. Los mejores valores para cada uno de los parmetros son los siguientes si observamos su incidencia en la solucin promedio: Tamao de poblacin: 350 Al variar este parmetro se logr ver que para valores mayores a 350 de poblacin no se reportaron mejoras importantes a la solucin. Esto se puede ver en la siguiente grfica:

    Tamao de Poblacin vs. Solucin Promedio

    69,570

    70,571

    71,572

    72,5

    0 100 200 300 400 500

    Tamao de Poblacin

    Sol.

    Prom

    edio

    Figura 5 Tamao de Poblacin vs. Solucin Promedio

    6

  • Nmero de generaciones: 300 Al igual que con el parmetro anterior, para valores mayores a 300 generaciones no se observaron mejoras importantes en la solucin promedio.

    Nmero de Generaciones vs. Solucin Promedio

    69,570

    70,571

    71,572

    150 200 250 300 350 400 450

    Nmero de Generaciones

    Sol.

    Prom

    edio

    Figura 6 Nmero de Generaciones vs. Solucin Promedio

    Nmero de hijos: 20 El comportamiento de este parmetro muestra que existe un nmero ideal de hijos para el algoritmo en el que valores menores o mayores ofrecen peores soluciones. Esto se puede ver en la grfica siguiente.

    Nmero de Hijos vs. Solucin Promedio

    7070,5

    7171,5

    7272,5

    73

    0 10 20 30 40 50 60

    Nmero de Hijos

    Sol.

    Prom

    edio

    Figura 7 Nmero de Hijos vs. Solucin Promedio

    Probabilidad de mutacin: no se logr determinar Este parmetro no mostr un comportamiento que ayudara a la escogencia de un valor determinado.

    II. El nmero de hijos es un parmetro importante en el algoritmo y que debe ser cuidadosamente escogido para obtener buenos resultados al solucionar un problema

    III. El aumento en el nmero de generaciones y el tamao de poblacin al parecer lleva a mejorar las soluciones obtenidas segn los resultados obtenidos. Esto se puede deber a que, al existir ms individuos y mas cruces entre los ms aptos, hay mayores probabilidades de encontrar cromosomas que se acerquen ms al ptimo.

    IV. El aumento en cualquiera de los parmetros lleva a un aumento en el tiempo de ejecucin. Esto se puede deber a que se debe ejecutar ms veces el clculo de la funcin objetivo de los hijos (la cual es una instruccin que contiene muchos ciclos y es algo compleja), el nmero de veces que se realiza mutacin, se aumenta el tamao de las matrices que maneja el algoritmo, y se deben manipular ms individuos.

    7

  • V. En una futura investigacin, se disear un experimento para ajustar los parmetros del algoritmo gentico, pues los parmetros trabajan en conjunto y para encontrar una combinacin que sea ptima se debe tomar en cuenta que todos los parmetros inciden al mismo tiempo en el funcionamiento del algoritmo. Se debe encontrar una combinacin que de buenas soluciones en un tiempo razonable. Adems se podran plantear hiptesis estadsticas que puedan determinar si las conclusiones respecto a la incidencia de los parmetros son correctas.

    6. Comparacin entre el Algoritmo Gentico y el Programa Lineal Entero Mixto

    Se construyeron 26 problemas, los cuales fueron corridos 15 veces en el algoritmo gentico. Los problemas tenan diferentes tamaos: 5, 7, 9, 11, 13 y 15 trabajos. Cada problema tena un nmero diferente de mquinas. Se puso como tiempo lmite de ejecucin para Xpress 600 segundos en los casos en los que no llegase a terminar de ejecutarse el mtodo lineal. Las pruebas se hicieron en un computador Pentium 4 de 1500 Mhz y 512 MB de RAM. Xpress logr llegar al ptimo solamente en 7 de los problemas. Sus tiempos de ejecucin variaron entre los 0.4 segundos y los 217 segundos, dependiendo del tamao del problema. En estos casos, el algoritmo gentico logr tambin llegar al ptimo en tiempos inferiores a los 30 segundos. En los dems problemas, Xpress no termin de ejecutarse (en este caso se guarda la mejor solucin a la que lleg Xpress luego de 600 segundos). Se compararon los resultados del algoritmo gentico con la cota mnima dada por Xpress al problema relajado.

    Diferencias Porcentuales Respecto a la Cota Inferior dada por Xpress

    0,00%10,00%20,00%30,00%40,00%50,00%60,00%70,00%

    uno

    dos

    tres

    uno

    dos

    tres

    uno

    dos

    tres

    cuat

    roci

    nco

    uno

    dos

    tres

    cuat

    roci

    nco

    uno

    dos

    tres

    cuat

    roci

    nco

    uno

    dos

    tres

    cuat

    roci

    nco

    5 7 9 11 13 15

    Problema

    DiferenciaPorcentual Xpress

    DiferenciaPorcentualAlgoritmo

    Figura 6 Diferencias porcentuales respecto a la cota inferior dada por Xpress

    El punto mximo del algoritmo es en el problema 11 cuatro en el cual la diferencia porcentual es de un 23%. El algoritmo gentico esta siempre igual o ms cerca a la cota inferior dada por el problema que el programa lineal. Adems los tiempos de ejecucin son inferiores a los tiempos de Xpress (debajo de los 30 segundos)

    7. Pruebas con Instancias Grandes

    Se probaron instancias de 20 y 30 trabajos (16 en total) con el algoritmo gentico. Se encontr que los tiempos de procesos crecen inevitablemente a medida que crecen los problemas, puesto que se deben procesar matrices ms grandes, calcular funciones objetivos de cromosomas con ms posiciones entre

    8

  • otros. Sin embargo, en los problemas probados, los tiempos siguen permaneciendo debajo de los 60 segundos.

    Tiempo de Ejecucin Promedio Algoritmo Gentico

    01020304050

    0 5 10 15 20 25 30 35

    Nmero de Trabajos

    Tiem

    po d

    e Ej

    ecuc

    in

    Prom

    edio

    (seg

    .)

    Figura 7 Tiempos Algoritmo Gentico

    Tambin es ms difcil llegar a soluciones ptimas a medida que aumenta la complejidad de los problemas, pues entre ms trabajos tenga existen ms cromosomas posibles y por lo tanto la probabilidad de llegar a un cromosoma que contenga la solucin ptima se ve reducida. Esto se ve en una tendencia al aumento de la diferencia porcentual promedio entre la solucin mnima obtenida por el algoritmo y la solucin promedio y tambin por el aumento de la variabilidad de las soluciones obtenidas al finalizar la ejecucin a medida que aumentan en tamao los problemas.

    Diferencia Porcentual Promedio Entre la Solucin Promedio y la Mejor Solucin del Algoritmo

    Gentico

    -2,00%

    0,00%

    2,00%

    4,00%

    6,00%

    0 5 10 15 20 25 30 35

    Nmero de Trabajos

    Dife

    renc

    ia

    Porc

    entu

    al

    Prom

    edio

    Figura 8 Diferencia Porcentual Promedio entre Solucin Promedio y Mejor Solucin del Algoritmo

    Gentico

    Desviaciones Estandar Algoritmo Gentico

    -0,5

    0

    0,5

    1

    1,5

    0 10 20 30 4

    Nmero de Trabajos

    DS

    0

    Figura 9 Grfica Desviaciones Estndar de Soluciones del Algoritmo

    9

  • 8. Conclusiones

    En este proyecto se estudi el problema de programacin en mquinas en paralelo de trabajos que necesitan recursos duales minimizando la fecha de terminacin del ltimo trabajo. Se dise para tal propsito un algoritmo gentico cuyo funcionamiento fue comparado en 26 instancias con el mtodo de programacin lineal en el programa Xpress. Los resultados obtenidos mostraron que el algoritmo obtiene las mismas o mejores soluciones que las que obtiene Xpress y en tiempos menores a un minuto si se comparan con la cota inferior obtenida por Xpress de un problema relajado, sin embargo, entre ms grande es el problema, ms tiempo tomar en ejecutarse el algoritmo debido a que el aumento de tamao del problema lleva a una aumento en el tamao de las matrices utilizadas, aumento en el tamao de los cromosomas, entre otros. Se logr tambin identificar la importancia de los parmetros en el funcionamiento del algoritmo; una combinacin ptima de los valores de esto es de vital importancia a la hora de tener el mejor rendimiento de este tipo de algoritmos en cuanto a tiempo de ejecucin y calidad de las soluciones encontradas. Para futuras investigaciones se podran disear algoritmos que minimizaran otras funciones objetivos. Tambin se podran disear cotas a las soluciones para este tipo de problemas con el fin de obtener resultados ms exactos en cuanto al funcionamiento del algoritmo. Finalmente, se podra optimizar el algoritmo mejorando la forma en la que se calcula la funcin objetivo y penalizando cromosomas distintos que codifiquen mismas soluciones.

    9. Bibliografa

    a. Sheng-Fuu Lin & Jaw-Yeh Chen. Two Parallel Machines Scheduling. Systems Analysis Modelling Simulation 2002; Vol.42: pp.1429 1437.

    b. S. M. T. Fatemi Ghomi & F. Jolai Ghazvini. A pairwise interchange algorithm for parallel machine scheduling. Production Planning & Control 1998; Vol. 9 (7): pp. 685 - 689.

    c. Pinedo, Michael. Scheduling: Theory, Algorithms, and Systems (2nd Edition). Prentice-Hall. 2004.

    d. Liu Min & Wu Cheng. A genetic algorithm for minimizing the makespan in the case of scheduling identical parallel machines. Artificial Intelligence in Engineering 1999; Vol. 13: pp. 399 403.

    e. Jeffery K. Cochran, Shwu-Min Horno & John W. Fowler. A multi-population genetic algorithm to solve multi-objective scheduling problems for parallel machines. Computers & Operations Research 2003; Vol. 30: pp. 1087 1102.

    f. Daniels RL, Hua SY & Webster S. Heuristics for parallel machine flexible resource schedulin problems with unspecified job assignment. Computers & Operations Research 1999; Vol. 26 (2): pp. 143 155.

    g. Alex J. Ruiz-Torres & Grisselle Centeno. Scheduling with flexible resources in parallel workcenters to minimize maximum completion time Computers & Operations Research 2005.

    h. Chingchang Jou. A genetic algorithm with sub-indexed partitioning genes and its application to production scheduling of parallel machines. Computers & Operations Research 2005; Vol. 48: pp. 39 54.

    i. Liu Min & Wu Cheng. Genetic algorithm for optimal common due date assignment and the optimal scheduling policy in parallel machina earliness/tardiness scheduling problems. Robotics and Computer-Integrating Manufacturing 2005.

    j. Federico Della Croce, Roberto Tadeo & Giuseppe Volta. A Genetic Algorithm for the job Shop Problem. Computers & Operations Research 1995; Vol. 22: pp. 15 - 24.

    10