Sistemas de Hormigas Max-Min para resolver el Problema de

Anuncio
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
Descargar