Sistemas de Hormigas Max-Min para resolver el Problema de Programación de Proyectos de Software Max-Min Ant System to solve the Software Project Scheduling Problem Broderick Crawford1,2, Ricardo Soto,1,3, Franklin Johnson1,4, Fernando Paredes5 y Miguel Olivares Suárez1 1 Pontificia Universidad Católica de Valparaíso, Valparaíso, Chile 2 Universidad San Sebastián, Santiago, Chile 3 Universidad Autónoma de Chile, Santiago, Chile 4 Universidad de Playa Ancha, Valparaíso, Chile 5 Universidad Diego Portales, Santiago, Chile Resumen—El problema de programación de proyectos de software, es un caso particular dentro de los problemas de programación de proyectos. Este problema consiste en asignar trabajadores, con distintas habilidades, a una serie de tareas propias del proyecto de software, de manera tal que el proyecto sea completado en el menor tiempo posible y al menor costo. Además, dicha asignación debe cumplir con las restricciones de habilidad requerida por cada tareas y las restricciones de precedencia entre tarea. Se presenta la solución a este problema utilizando el algoritmo de optimización de Sistema de Hormigas Max-Min y el marco de trabajo de Hipercubo. Se proponen dos heurísticas capaces de guiar el algoritmo para busca de mejores soluciones. Se presentan los resultados experimentales y se comparan con otras técnicas de resolución, demostrando una mejora mediante la implementación de nuestra propuesta. Palabras Claves; Programación de proyectos de software, Sistemas de Hormigas Max-Min, Metaheuísticas, Hipercubo. Abstract — The Software Project Scheduling Problem is a special case of project scheduling problems. This problem consists in assigning workers with different skills, to a series of tasks in a software project so that the project is completed in the shortest time and the lowest cost possible. In addition, this allocation must meet the constraints of skill required for each task and the precedence constraints between tasks. The solution to this problem is presented using the Max - Min Ant System algorithm and the Hypercube framework. Two heuristics capable of guiding the algorithm to find better solutions are proposed. Experimental results are presented and compared with other techniques of resolution, showing an improvement by implementing our proposal. Keywords – Software Project Scheduling, Max-Min Ant System, Metaheuristics, Hypercube. I. INTRODUCCIÓN En este documento se presenta una metaheurística de Optimización basada en Colonia de Hormigas (ACO en inglés) [1] para la resolución del problema de Programación de Proyectos de Software (en inglés Software Project Scheduling Problem, SPSP). Este problema fue originalmente propuesto el 2007 por Alba [2], el cual consiste en realizar la asignación adecuada de ingenieros de software a las distintas tareas que componen un proyecto de software de manera tal, que satisfagan las restricciones de tareas, trabajadores y precedencia. Dicha programación tiene por objetivo minimizar la duración y costos de todo el proyecto. Este problema ha sido abordado en pocos trabajos inicialmente por Alba, resolviéndolo mediante un algoritmos genético, más tarde Xiao [5] propone un algoritmo basado en Colonias de Hormigas, y más tarde Ramandeep Kaur [10] realiza en el 2013 una revisión bibliográfica del problema. Este problema pertenece a la familia de los problemas NP-duros, por lo cual es difícil de resolver mediante un método de búsqueda completa en un tiempo limitado. Por este motivo proponemos su resolución mediante el uso de una metaheurística ACO. ACO es un método de optimización probabilístico basado en el comportamiento de las colonias de hormigas reales y de cómo estas son capaces de acortar los recorridos entre el hormiguero y su fuente de alimento. El proceso de resolución de ACO es iterativo, en el cual las hormigas repetidamente construyen soluciones; este proceso es guiado por la información heurística, la cual está asociada específicamente al problema, y la información memorística, determinada por la feromona, la cual es depositada por las hormigas en su recorrido al construir una solución. El Sistema de Hormigas Max-Min (MMAS en inglés) es un tipo de algoritmo ACO, originalmente propuesto por Stutzle [3] en el cual los valores de feromona siempre se encuentran entre un valor máximo y un mínimo, además sólo la mejor hormiga puede depositar feromona. El marco de trabajo de Hipercubo para ACO (ACOHC) es un marco que permite manejar de manera automática los valores de feromona y define un espacio multidimensional en el cual se mueven estos valores. Presentamos los resultados experimentales obtenidos al resolver el SPSP utilizando MMAS y ACO-HC. Demostramos que los resultados son prometedores, pues logran mejorar respecto a otras técnicas utilizadas y reportadas en la literatura para el mismo problema. CISTI 2014 | 343 II. DESCRIPCIÓN DEL PROBLEMA El problema de programación de proyectos de software es un problema común en la administración de proyectos de software. Este problema consiste en encontrar la asignación adecuada de carga de los trabajadores a cada una de las tareas que componen el proyecto [5]. Los recursos más importantes involucrados en este problema son; las habilidades, las tareas y los empleados. El objetivo es minimizar la función de fitness definida como f(x)= (wcospcos + wlenplen), donde wcos y wlen representan la importancia relativa de pcos y plen. t len j = El conjunto de empleados se define como EMP={e1,...,e|E|}, donde |E| es el número total de empleados. Cada empleados tiene tres atributos: eisk es el conjunto de habilidades del empleado i y eisk Í S, eimaxd es el grado máximo de trabajo del empleado i. eimaxd Î [0,1], y eirem es la remuneración mensual del empleado i. Una solución puede ser representada mediante una matriz M=[E×T]. Los elementos de la matriz mij Î[0,1], son números reales, los cuales representan el grado de dedicación del empleado i a la tarea j. Si el grado de dedicación es 0 el empleado i no está asignado a la tarea j. Si el grado de dedicación es 1 el empleado i utiliza el 100% de su tiempo a la tarea j. Si el grado de dedicación fuera 0.5 el empleado utilizaría el 50% de su jornada a dicha tarea. La solución generada es factible si cumple con las siguientes restricciones: Primero, todas las tareas tienen asignado al menos un empleado, por lo tanto se realizarán, esto se presenta en la Eq. (1). Segundo, los empleados asignados a una tarea j deben cumplir con todas las habilidades necesarias para completar dicha tarea, como se presenta en la Eq. (2). | E| åm ij >0 "j Î {1,..., | T |} (1) "j Î {1,..., | T |} (2) i =1 t skj Í Ue sk i i|mij >0 Para evaluar la calidad de una solución generada, debemos primero calcular la duración de cada tarea tjlen, de acuerdo a la ecuación Eq. (3). Para las tareas sin precedencia el tiempo de inicialización es tjinit=0. Si la tarea tiene precedencia, primero debemos calcular el tiempo de término de las tareas que la preceden. En este caso tjinit se define como tjinit=max{tlterm|(tl,tj) Î E}, y el tiempo de termino es tjterm=tjinit+tjlen. La duración de todo el proyecto plen es el tiempo de término de la tarea que termina más tarde. Para calcular el costo de una tarea utilizamos la ecuación Eq. (4), y el costo total de todo el proyecto pcos se obtiene de acuerdo a la Eq. (5). (3) | E| åi=1 mij | E| t cos = å eirem × mij × t len j j Las habilidades son las características que poseen los empleados y son necesarias para completar una tarea. El conjunto de todas las Habilidades se define como S={s1,...,s|S|}, donde |S| es el número total de habilidades. Las Tareas son todas las actividades necesarias para completar el proyecto. El conjunto de todas las tareas se define como T={t1,...,t|T|}, donde |T| es la cantidad de tareas del proyecto. Cada tarea tiene dos atributos: tjsk es el conjunto de habilidades necesarias para la tarea j, tjeff representa el esfuerzo necesario para completar la tarea j. t eff j (4) i =1 |T | p cos = å t cos j (5) j =1 Otro elemento a considerar es la sobre explotación de los empleados, esto es cuando en un momento el empleado es asignado a un tarea o a varias tareas con una carga mayor a eimaxd. El sobre trabajo de todo el proyecto es determinado como poverw, para que una solución sea factible además debe tener poverw=0. III. SISTEMA DE HORMIGA MAX-MIN USANDO EL MARCO DE TRABAJO DE HIPERCUBO Los algoritmos ACO son un método de optimización probabilístico basado en el comportamiento de las colonias de hormigas reales y de cómo estas son capaces de acortar los recorridos entre el hormiguero y su fuente de alimento utilizando una sustancia olfativa llamada feromona [6]. MMAS es un tipo de algoritmo ACO en el cual los valores de feromona siempre se encuentran entre un valor máximo y un valor mínimo, además sólo la mejor hormiga de la iteración puede depositar feromona. El marco de trabajo de Hipercubo para ACO define un espacio multidimensional para los valores de feromona como un espacio cerrado entre 0 y 1, en el cual se mueven las posibles soluciones del problema [7]. Este marco de trabajo introduce una modificación en la función de actualización de feromona, la cual se obtiene mediante la normalización de la ecuación de actualización de feromona original. Esto permite tener algoritmos más robustos y con un manejo autónomo de los valores de feromona, mejorando la exploración del espacio de solución. Para adaptar MMAS a SPSP utilizando el marco de Hipercubo [8] debemos establecer un grafo de construcción adecuado que adapte el problema al comportamiento de las hormigas artificiales, definir la función de actualización de feromona adecuada y establecer la información heurística asociada al problema específico. A. Grafo de construccion utlizado Para que las hormigas artificiales puedan construir soluciones estas deben hacer recorridos por un grafo a cíclico y unidireccional llamado grafo de construcción. Las hormigas parten desde un nodo inicial y van seleccionando el siguiente nodo a recorrer utilizando la siguiente función probabilística: [t ] [h ] a pijt = ij den b ij a b å [t ] [h ] l =0 il , j Î{1,..., den} (6) il Donde tij representa la feromona y hij la información heurística en el nodo ij. a y b son dos parámetros fijos CISTI 2014 | 344 utilizados para determinar la influencia de la feromona y la información heurística. den determina el número de filas. El grafo de construcción propuesto (CG) representa la asociación de los empleados y su grado de dedicación a una tarea. Esta representación debe ser construida para cada tarea del proyecto, para la cual se crearan nodos y aristas las que pueden ser representadas mediante una matriz. Las hormigas eligen solo un nodo por cada columna, cuando una hormiga ha completado un recorrido la dedicación de los empleados a esa tarea está completa. En MMAS solo la mejor hormiga de la iteración es utilizada para depositar el rastro de feromona. Debemos representar computacionalmente la evaporación y deposición de la feromona cada vez que se completa un recorrido. Para esto utilizamos esta regla de actualización de la feromona tij = rtij + (1-r)Dtupd, donde r Î ]0,1] es un factor de evaporación. Si r es alto, el nuevo valor de feromona es menos influenciado por Dtupd, pero más influenciado por el valor anterior de feromona y viceversa. Dtupd está asociado a la calidad de la solución de la mejor hormiga de la iteración [7]. La calidad de la solución está asociado específicamente al problema, utilizando la duración, costo y sobre trabajo del proyecto de acuerdo a Dtupd=(wcospcos + wlenplen + woverwpoverw)-1, donde wcos, wlen, y woverw son valores fijos que determinan la importancia de plen, y poverw del proyecto de software. Entonces Dtupd es la cantidad de feromona depositada en base a la calidad de la solución generada por la mejor hormiga de la iteración. B. Información Heurística La información heurística es utilizada para mejorar y guiar la habilidad de búsqueda de las hormigas, las cuales pueden ser muy sensibles ante cambio de heurísticas. Las hormigas necesitan encontrar el nodo adecuado en su recorrido utilizando la información heurística. En este trabajo exponemos dos estrategias para definir la información heurística, definidas como H1 y H2. H1 considera la dedicación de un empleado ei a otras tareas. Si un empleado trabaja más en las tareas previas, tendrá menos probabilidad de ser asignado a la tarea actual. Esta heurística puede calcularse como h[i] = tmp[den-i-1]/sum, si la dedicación a tareas acumulada para el empleado k es más grande que 0.5 y es h[i] = tmp[i]/sum en otro caso, donde tmp es un arreglo temporal con la suma de las posibles asignaciones de dedicación, y sum es la suma de todos los valores del arreglo tmp. La heurística H2 utiliza la remuneración de los empleados. Si un empleado tiene una alta remuneración tiene menos probabilidad de ser seleccionada. Si un empleado tiene una baja remuneración, tendrá una alta probabilidad de ser asignado a una tarea. La información heurística H2 para un empleados i se puede calcular como h[i] = (eirem)-1. IV. RESULTADOS EXPERIMENTALES En esta sección se presentan los resultados experimentales y el análisis de los resultados obtenidos. El algoritmo fue implementado en java bajo el uso de NetBeans IDE 7.2. y se ejecutó sobre una maquina Intel Core i7 bajo el sistema operativo Windows7. El algoritmo fue arrancado 10 veces por cada instancia y reportamos los valores promedios de esas ejecuciones. Para realizar los experimentos utilizamos las instancias previamente generadas por un generador creado para el trabajo presentado en [2]. El generador de instancias es el mismo utilizado en [5], se han realizado las instancias con los mismos parámetros utilizados en dicho trabajo. Las instancias están nombradas como <nº de tareas>t<nº de eventos>e<nº de habilidades>s Por la bibliografía se sabe que los resultados de algoritmos de ACO pueden variar fuertemente dependiendo de los parámetros utilizados para configurar los algoritmos. Por esta razón hemos conducido previamente una serie de experimentos para encontrar los mejores parámetros para nuestro algoritmo. Las primeras pruebas se realizaron utilizando la instancia 10t10e10s (10 tareas, 10 empleados y 10 habilidades) con mind = 0.25 y conservamos contantes los parámetros a = 1, b = 2, y el número de iteraciones Nit=1000. Las variantes que se probaron fueron m = {10, 100, 200, 300} y r = {0.01, 0.02, 0.08, 0.4} mostrando que los mejores fitness (más bajos) se obtuvieron con m = 200 and r = 0.02. Para evaluar la calidad de nuestra propuesta, comparamos nuestros resultados con otros resultados presentados en [5] por Xiao, utilizando los mismos parámetros en nuestras instancias. En dicho trabajo se utilizan las metaheurísticas de Sistemas de colonias de Hormigas (ACS en inglés) y Algoritmos Genéticos (GA en inglés), los cuales fueron probados en multiples instancias, los resultados de [5] son comparados en la tabla 1. Para mejorar la representación de las soluciones se ha transformado el fitness presentado en dicho trabajo como fitness-1 para así igualarlo al fitness utilizado por nosotros. Los resultados comparativos entre los diferentes algoritmos se presentan en la Tabla 1. De acuerdo a la tabla 1 podemos comparar la Tasa de Hit y el fitness de las soluciones. En este caso las instancias con número de tareas = 10 siempre se obtiene una Tasa de Hit del 100%, independiente del número de empleados y habilidades. Pero en el caso de las instancias con número de tareas = 20, ACO-HC (H2) tiene mejor tasa de Hit. Si observamos los resultados en función del fitness podemos observar que ACO-HC (con H1 y H2) tiene los mejores resultados para todas las instancias con número de tareas = 10. Para la instancia 20t10e10s (20 tareas, 10 empleados, 10 habilidades) el mejor resultado es obtenido con ACO-HC(H2). Si analizamos los resultados con número de tareas = 30, los mejores resultados son obtenidos con ACOHC(H2), los otros algoritmos no pudieron obtener resultados factibles. En resumen en el 75% de las instancias probadas se obtuvo mejor resultado con ACO-HC(H2), 12,5% fue mejor ACO-HC(H1) y el 12,5% se obtuvo mejor resultado utilizando GA. V. CONCLUSIONES Se ha presentado brevemente la resolución del problema de programación de proyectos de software utilizando una nueva aplicación de un algoritmo ACO llamado Sistema de Hormigas Max-Min utilizando el marco de trabajo de Hipercubo. Hemos presentado el diseño de una representación del problema, de manera tal que pueda ser resuelto mediante un algoritmo ACO CISTI 2014 | 345 propuesto. Además hemos definido un grafo de construcción adecuado y las correspondientes reglas de actualización de feromona junto con dos posibles heurísticas, capaces de guiar el comportamiento del algoritmo para mejorar las soluciones generadas. Se ha implementado dicho algoritmo y se han realizado una serie de experimentos, ya sea para parametrizar y obtener el mejor rendimiento de nuestra propuesta, como para compararla con otras metaheurísticas como Sistema de Colonias de Hormigas y Algoritmos Genéticos. Hemos demostrado en base a los resultados que nuestra propuesta es capaz de obtener los mejores resultados para las instancias pequeñas. Para instancias más grandes es más difícil obtener mejores soluciones, pero utilizando la heurística H2 siempre se logran buenos resultados. Además para las instancias con número de tareas =30 la heurística H2 siempre obtiene soluciones por sobre las otras técnicas comparadas. Si bien las condiciones de experimentación son ideales, se puede tomar esta propuesta como base para resolver instancias más duras o realistas. Se puede definir como un punto de partida en un trabajo de alcance exploratorio. Como trabajo futuro se espera poder integrar mecanismos de búsqueda autónoma en el proceso de resolución, ya que en otros trabajos han presentados excelentes resultados [9]. TABLA 1: COMPARACIÓN CON OTRAS TÉCNICAS. Instancia 10t5e5s 10t10e5s 20t10e5s 30t10e5s 10t5e10s 10t10e10s 20t10e10s 30t10e10s Algoritmo ACO-HC(H1) ACO-HC(H2) ACS GA ACO-HC(H1) ACO-HC(H2) ACS GA ACO-HC(H1) ACO-HC(H2) ACS GA ACO-HC(H1) ACO-HC(H2) ACS GA ACO-HC(H1) ACO-HC(H2) ACS GA ACO-HC(H1) ACO-HC(H2) ACS GA ACO-HC(H1) ACO-HC(H2) ACS GA ACO-HC(H1) ACO-HC(H2) ACS GA Tasa de Hit 100 100 100 95 100 100 100 97 30 90 67 19 70 100 100 100 90 100 100 100 100 50 100 65 71 90 - Fitness 3.136531 2.775044 3.514938 3.587443 2.134546 2.096707 2.577319 2.841312 6.741111 6.876989 6.385696 6.276675 AGRADECIMIENTOS Se extienden los agradecimientos de: Broderick Crawford apoyado FONDECYT/ REGULAR/ 1140897. por CONICYT/ Ricardo Soto apoyado por CONICYT/ FONDECYT/ INICIACION/ 11130459. Fernando Paredes apoyado por CONICYT/ FONDECYT/ REGULAR/ 1130455. REFERENCIAS BIBLIOGRÁFICAS [1] M. Dorigo and G. Di Caro. Ant colony optimization: a new metaheuristic. In Evolutionary Computation. CEC 99. Proceedings of the 1999 Congress, volume 2, 1999. [2] E. Alba and F. Chicano. Software project management with GAs. Information Sciences, 177(11), June 2007, pp. 2380-2401. [3] T. Stutzle and H. H. Hoos. Max-Min ant system. Future Generation Computer Systems, 16 (8), 2000, pp. 889-914. [4] F. Johnson, B. Crawford, and W. Palma. Hypercube framework for ACO applied to timetabling. In IFIP AI, 2006, pp. 237-246. [5] J. Xiao, X. T. Ao, and Y. Tang. Solving software project scheduling problems with ant colony optimization. Computers and Operations Research, 40 (1), 2013, pp. 33-46. [6] M. Dorigo and T. Stutzle. Ant Colony Optimization. MIT Press, USA, 2004. [7] F. Johnson, B. Crawford, and W. Palma. Hypercube framework for ACO applied to timetabling. In IFIP AI, 2006, pp. 237-246. [8] B. Crawford, R. Soto, F. Johnson, and E. Monfroy. Ants can schedule software projects. In C. Stephanidis, editor, HCI International 2013 Posters Extended Abstracts, volume 373 of Communications in Computer and Information Science. Springer Berlin Heidelberg, 2013, pp. 635-639. [9] B. Crawford, R. Soto, E. Monfroy, W. Palma, C. Castro, and F. Paredes. Parameter tuning of a choice-function based hyperheuristic using particle swarm optimization. Expert Systems with Applications, 40 (5), 2013, pp. 1690-1695. [10] E.Kaur, S. Singh, and M. Rakshit. A review of various software project scheduling techniques. International Journal of Computer Science & Engineering Techniques, 2013, pp. 877-882. 10.654631 2.875215 3.344930 3.404951 3.528706 2.612948 2.266089 2.644033 2.537169 6.249782 5.596390 6.298419 6.186970 10.164974 CISTI 2014 | 346