10 de noviembre de 2015

Scheduling

Decidí aquí utilizar el término scheduling en vez de traducirlo a programación, planificación, horario o incluso asignación, pues aunque de alguna manera son correctos creo que ninguno es completamente atinado o lo suficientemente descriptivo.

El scheduling es algo que de alguna manera es común en nuestro día a día, pero más lo son los schedules, esos documentos que conocemos como el horario de las clases, nuestro calendario, etc. que nos dice, bajo condiciones normales, cuando pasará un evento dado. No solamente nos referimos a horarios exactos como: "Tu hora de la comida es a las 2 PM". Sino también a cosas como: "Me toca ir a comer en cuanto termine de corregir este bug" o "Iré a comprar huevos en cuanto termine esta venta".

Un schedule entonces, contesta al menos 2 preguntas: ¿Cuál es el evento? ¿Cuándo es el evento?
Y el cuando se compone de un periodo, un inicio y un fin que, dada la naturaleza de muchos eventos, pueden ser estocásticos. Podemos ir incluso más allá y hacer aún más útiles estos schedules midiendo la incertidumbre en forma de intervalos de confianza. O bien planear nuestros horarios con márgenes de tiempo muerto ¿Cuántas veces nos pasa que planeamos una cosa tras otra y al final un evento se mete en el tiempo de otro?

Es fácil ver qe generar un schedule es un problema de optimización. Pues regularmente asignamos recursos (equipo, lugares, dinero, etc.) a actividades, así como un orden, optimizando un criterio (menor número de retardos posible, mayor cantidad de tiempo libre posible, menor cantidad de tiempo muerto entre actividades) y sujetándonos a restricciones (tiempo, presupuesto,  orden en el que se hacen las actividades, etc.)

Las siguientes entradas serán un intento de tener un mejor entendimiento del proceso de scheduling y de los schedules mediante modelos (especialmente modelos matemáticos). Uno de los modelos gráficos más sencillos y más utilizados para scheduling son los diagramas de Gantt, como el de la figura 1.

Figura 1
Este diagrama es sencillo de entender, y muy práctico porque se pueden ver los recursos, los tiempos asignados y entender el schedule completo de un vistazo, además de ayudar a desarrollar un intuición geométrica sobre los schedules.

Resúmen

En resumen, un schedule es una representación o documento que nos permite identificar la asignación de recursos para realizar tareas con un periodo de realización, posiblemente con incertidumbre. Y el scheduling es la generación de schedules.

En posts siguientes ahondaremos más en la teoría de scheduling.