Un Algoritmo GRASP para resolver el problema de la programación de tareas dependientes en máquinas diferentes (task scheduling) - Tupia Anticona, Manuel Francisco (2005)
La planificación de las operaciones involucradas en un proyecto de desarrollo de software ha sido un problema a superar, desde el auge del uso de metodologías que guían dicho proceso. Tanto la eficiencia como la sofisticación de los algoritmos que buscan resolver los estos ordenamientos, han ido evolucionando durante la segunda mitad del siglo XX. Al mencionado problema de ordenar tareas con dependencias se le conoce en la algorítmica como programación de tareas o task scheduling y es definido de la siguiente forma: dado un conjunto de tareas a ser programadas en determinado grupo de máquinas (o recursos hombre-máquina como podrían ser programadores, analistas, etc.), encontrar un orden adecuado de ejecución. Es un problema de complejidad NP-difícil por lo que se justifica el uso de métodos heurísticos para obtener soluciones aproximadas. El presente trabajo de tesis presenta una meta heurística GRASP para resolver la variante en donde las tareas son dependientes y los organismos ejecutores son diferentes entre sí: con esto se podrían planificar las tareas de las etapas iniciales de un proceso particular de desarrollo de software. En la tesis, se incide en la metodología RUP, y en particular en sus disciplinas de modelamiento de negocios (business modeling) y captación de requerimientos (requirement). Se han desarrollado tanto un algoritmo voraz como una meta heurística GRASP con dos parámetros de relajación, planteamiento novedoso pues hasta el momento no se había intentado resolver el problema de esta forma. Igualmente se muestra un modelo matemático para la variante específica del problema a tratar. Para demostrar la corrección de los algoritmos, se desarrolló un prototipo que los implementa obteniéndose como resultado que el algoritmo GRASP mejora casi en un 6% los resultados del algoritmo voraz, para instancias de hasta 12500 variables involucradas. Palabras clave: Programación de tareas, algoritmos GRASP, Desarrollo de Software, planificación de recursos en proyectos de desarrollo software, RUP.