Modelo PSSA (Makespan)
60
Capítulo 4: Secuenciación de tareas y
asignación de personal con tiempos de
proceso controlables (enfocado en el
tiempo de finalización), PSSA(Makespan)
4.1. Introducción
Este capítulo desarrolla un modelo enfocado a empresas encargadas de la realización de
proyectos con múltiples tareas. Cada una de ellas deberá ser realizada, a su vez, por
personal con determinadas habilidades. Aparece entonces la problemática de analizar cuál
debe ser el orden de ejecución de las tareas y cuáles son los empleados más indicados para
realizarlas en cada instante de tiempo. Se trata, por tanto, de la integración de dos
problemas diferentes:
Programación de las tareas del proyecto.
Asignación de personal a cada una de las tareas.
Principalmente, el objetivo de este tipo de problemas de decisión es el de minimizar los
costes de asignación y mano de obra o la reducción al máximo de la fecha de finalización
del proyecto, puesto que retrasos en las fechas de entrega conllevan grandes incrementos
en los gastos. En nuestro caso, emplearemos como función objetivo la minimización del
tiempo de terminación, como se verá más adelante.
Modelo PSSA (Makespan)
61
Al tratarse la programación de las tareas de un proyecto, resulta fundamental introducir
relaciones de precedencia entre las tareas, ya que para la realización de algunas de ellas
puede ser imprescindible que otras hayan sido terminadas de antemano. Adicionalmente,
se permite que las tareas puedan comenzar en cualquier instante de tiempo siempre que sea
posterior a su tiempo de comienzo y, una vez que comienzan, deben ser ejecutadas de
manera continua (enfoque no-preemptitve).
En cuanto a la asignación de tareas a empleados, se realiza en función de las habilidades.
Así, cada tarea necesitará de determinadas habilidades para su desarrollo que serán
ejecutadas por empleados capaces de realizarlas. Por tanto, sólo se le podrá asignar un
empleado a una tarea si tiene una de las habilidades que se requieran. Además, cada tarea
tendrá un número óptimo de empleados por habilidad para ser asignados (ver 4.7.6). Un
excedente o deficiente de trabajadores asignados iría en detrimento de la efectividad y, en
consecuencia, de los tiempos de proceso de cada tarea (ver 4.7.7).
A nuestro entender, se trata de la primera vez que se analiza la programación de tareas y
asignación de personal con tiempos de proceso que dependan de la cantidad de
trabajadores que se le asignan a las tareas en la literatura. Hasta la fecha, el número de
trabajadores asignados a cada tarea siempre había sido tratado en la literatura como un dato
de entrada y nunca como una variable. A esto hay que sumar otro tipo de restricciones tales
como: relaciones de preferencia; habilidades; tiempo de terminación; preemptive
assumption; etc.
En la siguiente figura, se presenta un resumen genérico de la función objetivo y las
restricciones del modelo a modo aclaratorio. Más adelante, se mostrará el modelo y se
explicarán sus variables y datos de entrada:
Modelo PSSA (Makespan)
62
Ilustración 4-I: Resumen modelo PSSA (Makespan)
4.2. Índices
j: Índice para las tareas. j=1…J.
t: Índice que indica el periodo de tiempo. t=1…T.
e: Índice que identifica al empleado. e=1…E.
s: Índice identificativo de las habilidades de los empleados. s=1…S.
4.3. Datos
T: Horizonte temporal formado por los periodos.
E: Número total de empleados que se consideran en la programación.
J: Número de tareas en el proyecto.
S: Número total de habilidades consideradas.
rj: Tiempo de comienzo. Fecha a partir de la cual se puede comenzar a realizar la tarea j.
Modelo PSSA (Makespan)
63
{ Si el empleado puede realizar la habilidad
en caso contrario
{
1 si i precede a
0 si no existe relación de precedencia entre y
1 si j precede a
Rjs: Número de empleados óptimos que deben realizar la tarea j con la habilidad s.
pdj: Duración de la tarea j para el número de empleados óptimos (Rj).
LVjs: Máximo número de trabajadores que pueden faltar para llegar al óptimo de
empleados en cada tarea j con habilidad s.
UVjs: Máximo número de trabajadores que puede haber por encima del óptimo en cada
tarea j con habilidad s.
kd, kn: Constantes que determinan la inclinación de las líneas que definen los tiempos de
proceso.
4.4. Variables
{1 si la tarea comienza en el periodo
0 en caso contrario
{1 si la tarea tiene lugar en el periodo
0 en caso contrario
{1 si el empleado realiza la tarea en el periodo con la habilidad
0 en caso contrario
Periodo de tiempo en el que la tarea comienza.
Periodo de tiempo en el que la tarea finaliza.
trabajadores por encima del óptimo que realizan la tarea con
la habilidad .
con la habilidad .
Cj: Tiempo de terminación de la tarea.
Cmax: Máximo tiempo de terminación de todas las tareas.
Duración de la tarea .
4.5. Variables auxiliares
Modelo PSSA (Makespan)
64
: Variable auxiliar para conseguir que la restricción 9 se cumpla para el caso en el
que sea igual a cero
4.6. Modelo
(1)
(2) ∑
(3) ( )
(4)
(5)
(6)
(7) ∑
∑
( )
(8) ∑
∑
( )
(9) ∑
(
)
(10) ( )
(11) ( )
(12) ,s
(13) ,s
(14) ,s
(15) ,s
(16) ∑∑
(17) ( ( ∑
∑
∑
∑
))
Modelo PSSA (Makespan)
65
(18) ∑
(19)
(20) ∑
(21)
(22)
,t
(23)
(24) { }
(25) { }
(26) { }
(27)
(28)
(29)
(30)
4.7. Descripción del Modelo
4.7.1. Función Objetivo
La función objetivo viene dada por la expresión (1):
Se trata de una función objetivo muy utilizada en la literatura [7, 18, 65, 87]. Consiste en
minimizar el tiempo máximo de terminación de las tareas. Es decir, la tarea que acabe más
tarde, deberá terminar lo más pronto posible. Resulta muy útil, ya que en muchas empresas
el tiempo de realización y entrega de los pedidos o proyectos resulta fundamental a la hora
de capturar clientes. Con lo que intentan, por todos los medios, reducir los tiempos para
que el proyecto se realice lo más pronto posible.
Modelo PSSA (Makespan)
66
4.7.2. Tiempo de Comienzo
Tendremos en cuenta que las tareas pueden requerir de un tiempo de comienzo a partir del
cual pueden empezar a ejecutarse (enfoque también realizado por [20, 40, 41, 87]). La
realización de la tarea antes del tiempo de comienzo será impedida por el modelo lo que
podría ser debido, en empresas de servicio, a: disponibilidades del cliente; disponibilidades
de los recursos; coordinación con empresas subcontratadas;… Antes de introducir esta
restricción en el modelo, es necesario asegurar que todas las tareas comiencen únicamente
en un periodo de tiempo. Hecho que viene determinado por la ecuación:
( ) ∑
Con esto, ya si se puede obligar a que no se ejecute ninguna tarea antes del tiempo
establecido para tal efecto (release time):
( ) ( )
Para tiempos inferiores al tiempo de comienzo (t<rj), la inecuación quedaría:
negativo ( ) . Siendo la única posibilidad para que se cumpliese que xjt sea
igual a 0. Así, queda constatado el hecho de que antes del tiempo de comienzo no se puede
ejecutar la tarea. Se puede comprobar también fácilmente como para tiempo mayores que
este, el xjt puede ser 0 ó 1 pudiéndose ejecutarse la tarea en cualquier momento.
4.7.3. Tiempo de Terminación
Como se comentó al hablar de la función objetivo, el modelo que aquí se presenta trata de
minimizar el tiempo máximo de terminación. Por lo tanto, debe ser necesario conocer tanto
el tiempo de terminación de cada tarea, así como el máximo tiempo de terminación, es
decir, cuando acaba la tarea que termina más tarde. De esto se encargan el conjunto de
restricciones siguiente:
Modelo PSSA (Makespan)
67
( )
( )
El conjunto de restricciones (4) es el encargado de la obtención del tiempo de terminación
de cada tarea Cj. Esto se realiza observando cuál es el último instante de tiempo en el que
la tarea tiene lugar. El conjunto (5) será el encargado de ver cuál de todos estos tiempos de
terminación será el mayor, denominado Cmax.
4.7.4. Habilidades
En el modelo se tendrán en cuenta las habilidades del personal y de las tareas. No todos los
empleados podrán realizar las mismas tareas, sino que cada uno estará especializado en
algunas de ellas dependiendo de sus características. Este hecho vendría dado por:
En dónde es un número binario que valdrá uno si el empleado e está capacitado en la
habilidad s, y cero si no la puede realizar. Con la restricción anterior, se obligaría a que en
caso de que no esté capacitado, entonces la asignación de ese empleado a la habilidad
(variable ) sea siempre cero independientemente de la tarea y el instante de tiempo.
Sin embargo, esta restricción no aparece tal cual en el modelo, sino que se muestra esta
otra:
( )
Se han añadido dos nuevos términos a la expresión ( ), para reducir el número de
restricciones del modelo con objeto de alcanzar mejores tiempo de computación. No
obstante, esta nueva restricción incluye también el caso, que acabamos de ver, de
impedimento del personal para ejecutar determinadas habilidades: si , entonces
siempre será cero.
Modelo PSSA (Makespan)
68
El término se obtiene del estudio de los requisitos en habilidades de las tareas. Nuestro
modelo tiene en cuenta el número óptimo de empleados que se necesitan para realizar una
habilidad concreta de una tarea. Para lograrlo, se introduce en el modelo dicho término
que indica el número ideal de empleados que debe realizar la habilidad s en la tarea j. El
caso quiere decir que la tarea j no requiere la habilidad s por lo que, en esta
situación, el modelo deberá obligar a que no se asigne ningún empleado a esa habilidad de
la tarea. Esto explica el hecho por el que la restricción que acabamos de ver: ,
pasaría ahora a ser , que no es más que la unión de las dos siguientes
restricciones:
}
La adición de la variable a la restricción será vista más adelante (en “Empleados
asignados a tareas”).
4.7.5. Relaciones de Precedencia
Como se comentó con anterioridad, en el modelo se realiza la programación de tareas
pertenecientes a empresas de proyectos, así como la asignación de personal a las mismas.
A la hora de secuenciar dichas tareas, tendremos que considerar si existen relaciones de
precedencia entre algunas de ellas. Éste es uno de los aspectos más importante en la
programación de tareas.
En nuestro modelo, las relaciones de precedencia vienen dadas por los siguientes conjuntos
de restricciones:
( ) ∑
∑
( )
( ) ∑
∑
( )
Modelo PSSA (Makespan)
69
Las dos inecuaciones son muy similares y podrían haber sido puestas en una única
inecuación si en vez de para todo j, i>j, hubiesen sido para todo (i,j) que formen un arco en
los dos sentidos. Sin embargo, esta segunda forma obliga a tener que introducir los datos
de las relaciones de precedencia con riguroso detalle ya que si j precede a ’, entonces ’ no
puede preceder nunca a j. Esto obligaría a que prij fuese una matriz completa (salvo la
diagonal) en la que todos los elementos fuesen importantes. Veamos un ejemplo de cómo
sería esta matriz en donde prij=1 indica que i precede a j y prij=0 indica que no hay relación
de precedencia entre ambos nodos:
Ilustración 4-II: Matriz de relaciones de precedencia no simétrica
Si en la zona naranja de la figura hay un elemento de valor 1, entonces por concordancia,
obligatoriamente su simétrico de la zona morada debe ser 0. Sin embargo, en caso de ser
cero, entonces el simétrico puede ser 0 o 1. Igual ocurre para la zona morada.
Al introducir los dos conjuntos de restricciones (7) y (8), se está simplificando la captura
de datos para las relaciones de precedencia, prij. En este caso, la matriz prij será totalmente
simétrica:
Modelo PSSA (Makespan)
70
Ilustración 4-III: Matriz simétrica de las relaciones de precedencia
Con esta forma de presentar los datos, nos evitamos la problemática que vimos más arriba.
La relación entre i y j se realizará con un único elemento prij (con el método anterior, la
relación i con j era el elemento prij, mientras que la j con la i, era el elemento prji). En este
caso, cada pivote de la matriz podrá tomar tres valores según la relación que entre las
tareas:
1: j va después de i.
0: No existe relación de precedencia entre i y j.
-1: i después de j.
Dada la clara similitud entre los dos conjuntos de inecuaciones (7) y (8), procederemos a
explicar en detalle solamente uno de ellos (7):
( ) ∑
∑
( )
El termino izquierdo de la inecuación indica la diferencia de tiempo existente entre el
comienzo de la tarea j y el comienzo de la tarea i. Por otro lado el término derecho indica
cuál es la mínima diferencia de tiempo que puede haber entre los comienzos de las dos
tareas. Existen dos posibilidades para este término; o bien es igual a pi o bien igual a un
número grande negativo. En el primer caso (igual a pi), la inecuación indicaría que la tarea
j no puede comenzar antes que la tarea i más su duración, es decir, la tarea j debe comenzar
Modelo PSSA (Makespan)
71
cuando acabe la i. Por el contrario, el segundo caso (lado derecho igual a un número alto
negativo) estará diciendo que la tarea j puede comenzar en cualquier instante
independientemente de la tarea i. A continuación, veremos esto más claramente analizando
todas las posibilidades. Recordemos que el prij, que indica la relación de precedencia entre
las tareas i y j, sólo puede tomar tres valores (-1,0,1). Analizaremos, por tanto, lo que
ocurre en cada uno de estos tres casos:
Caso prij=1:
Las inecuaciones (7) y (8) quedan:
( ) ∑
∑
( ) ∑
∑
La primera de ellas indica que la tarea j debe realizarse al finalizar la tarea i. En el caso de
la segunda inecuación, la diferencia entre el comienzo de las tareas i y j debe ser mayor
que un número alto negativo. Con lo que, esta segunda relación se cumplirá siempre y,
para este caso, no aporta nada adicional.
Resumiendo, el caso prij=1 trata de la relación de precedencia entre i y j cuando j debe
realizarse después de i.
Caso prij=0:
Este caso quedaría como sigue:
( ) ∑
∑
Modelo PSSA (Makespan)
72
( ) ∑
∑
Tenemos dos inecuaciones en las que el lado izquierda debe ser mayor o igual que un
número elevado negativo. Por lo que las dos inecuaciones se cumplen siempre
independientemente de los valores de las variables. El caso prij=0 deja, entonces, total
libertad a las tareas i y j para poder comenzar en el momento que mejor convenga sin
existir relaciones entre las dos.
Caso prij=-1:
( ) ∑
∑
( ) ∑
∑
Podemos observar como se trata de un caso análogo al de prij=1 si intercambiásemos la i
por la j. Así, la inecuación (7) se cumplirá siempre al ser el lado derecho un número alto
negativo mientras que la (8) nos indica que el comienzo de la tarea i debe ser mayor que el
comienzo de la tarea j más su duración. Es decir, indica que la tarea i debe ejecutarse
después de la j.
4.7.5.1. Desfases Temporales
En el caso de que fuese necesario incluir periodos de tiempo entre que acaba una tarea y
comienza la siguiente (desfases temporales), sería muy sencillo mediante el conjunto de
restricciones que acabamos de ver. Únicamente habría que añadir un término en cada uno
de los conjuntos. De esta forma, denominando al desfase temporal entre la tarea i y la
tarea j, tendríamos las siguientes restricciones:
Modelo PSSA (Makespan)
73
( ) ∑
∑
( ) ( )
( ) ∑
∑
( ) ( )
Se puede observar como, por ejemplo, en el caso de tendríamos las siguientes
ecuaciones:
( ) ∑
∑
( ) ∑
∑
En dónde la restricción (7) indicaría, en este caso, que la tarea j debe esperar para
comenzar hasta que la tarea i finalice más un tiempo extra . Idénticamente se podría
proceder para obtener el razonamiento equivalente cuando . Con lo que las
restricciones que acabamos de ver describirían perfectamente el caso de relaciones de
precedencia con desfases temporales.
4.7.6. Empleados asignados a tareas
Como se ha comentado a lo largo de esta sección, la asignación de empleados a tareas no
es fija. Se propone mediante la variable un número óptimo de empleados para realizar
una determinada habilidad de una tarea ([10, 50]). Sin embargo, se deja abierta la
posibilidad de que se asigne mayor o menor cantidad de empleados según convenga, bien
para acabar antes la tarea o bien por falta de recursos. Esta desviación de recursos sobre el
óptimo conllevará una penalización en la eficiencia de los empleados en la tarea, que será
vista en 4.7.7. Denominando al número de empleados por encima del óptimo y
al
número de los mismos que harían faltar para llegar al óptimo, sería lógico pensar que la
siguiente restricción definiría la asignación de empleados en el modelo:
Modelo PSSA (Makespan)
74
∑
(
)
Sin embargo, esta restricción se comporta bien únicamente allí donde . Si no
estamos en ese caso, esta ecuación presenta un problema al no ser las holguras función del
tiempo. Por lo que tomando un instante de tiempo ’ donde , entonces ∑
(
) . Si tomamos otro instante de tiempo ’’ en el que la misma tarea j sí se esté
ejecutando , obtendremos que ∑ (
) . El problema sucede
cuando el término (
) es distinto de 0. Como este término no depende del tiempo,
tendremos que siempre será distinto de cero, también en el caso . En el caso de ser
negativo el término, esto conllevará a que para el caso ’ los empleados podrían estar
asignados a la tarea j ( ) aunque la tarea no se está ejecutando ( ). De ser
positivo el término, daría un problema de infactibilidad, siendo imposible cumplir la
restricción.
Es necesario, entonces, modificar la restricción para solucionar estas deficiencias. A
continuación, se proponen tres posibles alternativas:
1. Multiplicar el término (
) por :
∑
(
)
Con esto se consigue solventar el problema que teníamos cuando . Sin
embargo, se introducen no linealidades al estar multiplicado el término de
holguras por la variable binaria .
2. Poner las holguras en función del tiempo ( ):
∑
(
)
Modelo PSSA (Makespan)
75
Con esto se consigue que las holguras puedan ser cero en el caso de que .
Sin embargo, no se está obligando a que lo sean y esto podría ocasionar
problemas de incoherencia en determinados momentos. Se puede solucionar
fácilmente si añadiésemos un par de inecuaciones más:
donde N es un número alto
De esta forma, se soluciona matemáticamente el problema presentado, cuando
, añadiendo el tiempo a las holguras y sin incluir, además, ninguna no
linealidad.
Pasando a analizar ahora, más en detalle, el aspecto real de las ecuaciones y
variables, la consecuencia de aplicarlo sería que las holguras pueden ser diferentes
en distintos tiempos. Es decir, para realizar la habilidad s de la tarea j puede que
se utilicen en el instante t1 un número de empleados diferente que en el instante t2.
Esto permite demasiados movimientos, lo que va contra la lógica del modelo, en
el que se desea que el número de empleados asignados a una habilidad sea
siempre el mismo durante toda su ejecución.
3. Introducción de la variable auxiliar
El objetivo de este caso es introducir una nueva variable con el fin de
solucionar los problemas de no linealidad de la primera forma y los de
movimientos de la segunda. Dicha variable será dependiente de la habilidad, de la
tarea y del tiempo. Lo que se intenta es que esta variable tome los valores del
término (
) para cuando y que sea cero cuando para que
no influya en el valor de . Además, habrá que obligar a que cuando
. Todo esto se consigue con los siguientes conjuntos de restricciones:
Modelo PSSA (Makespan)
76
( ) ∑
(
)
( ) ( )
( ) ( )
La restricción (9) es exactamente igual que ∑ (
) ,
exceptuando la nueva variable auxiliar que sólo afectará en el caso de que
. Hecho que viene determinado por las inecuaciones (10 y 11) donde se
obliga que sea 0 allí dónde . La última restricción es la que fuerza a que
cuando . Esta restricción se podría añadir tal cual al modelo. Sin
embargo, para simplificar el número de restricciones se añade a la restricción (6)
que pasará a ser:
}
Pasando de restricciones a únicamente . En el
modelo presentado en el trabajo, se hace uso de este procedimiento para evitar las
posibles infactibilidades producidas cuando .
Una vez solucionado este problema, se añaden al modelo limitaciones superiores e
inferiores en las holguras para que no se puedan ir a valores muy altos o bajos en los cuales
resulte imposible realizar el trabajo. Así, son añadidas los dos siguientes grupos de
restricciones:
( )
( )
Además, como se comentó con anterioridad, es necesario asegurar que cuando una tarea no
requiere de una determinada habilidad ( ) , entonces las holguras asociados al
Modelo PSSA (Makespan)
77
sobrante o deficiente de trabajadores sobre el óptimo (en este caso el óptimo es cero)
deberán ser obligatoriamente cero. Esto se consigue con las siguientes restricciones:
con N un número suficientemente alto.
Puesto que de las restricciones (12) y (13) las holguras y
no pueden ser mayores
que y respectivamente, el número alto N puede ser sustituido por estos valores
quedando las restricciones reformuladas de la siguiente forma:
( )
( )
Por último, quedará añadir una restricción para limitar a uno el número de habilidades que
puede realizar un empleado como máximo en cada periodo de tiempo:
( ) ∑∑
4.7.7. Tiempos de proceso controlables (CPT)
4.7.7.1. Introducción
El aspecto fundamental del modelo es la inclusión de CPT para que los tiempos de proceso
de las tareas puedan ser modificados automáticamente en la programación sin tener que
estar fijados al inicio. En este caso, estos tiempos dependerán de los recursos (personal)
asignados a las tareas de manera lineal a trozos. Según ([10, 50]) existe un valor óptimo de
empleados que deben ser asignados a una tarea para lograr la máxima eficiencia de los
mismos. Como se vio en el estado del arte, en la literatura las duraciones de las tareas se
han estudiado como función de los recursos asignados a las mismas y como función de la
Modelo PSSA (Makespan)
78
experiencia de los trabajadores que las realizan. Atendiendo a la primera forma, la relación
estudiada entre recursos y tiempos se ha analizado, principalmente, con dos enfoques
diferentes (si exceptuamos el caso constante):
Lineal Puro: Relación completamente lineal entre las duraciones de las tareas y
sus recursos ([39]). Llamando p a las duraciones, u a los recursos y siendo a y b
constante para la definición de la curva se tiene la fórmula:
Convexa: Relación inversamente proporcional entre la duración y los recursos
([78]). En este caso, se llama W a la carga de trabajo de la tarea y k es una
constante de definición de la curvatura.
(
)
Sin embargo, ninguno de los dos enfoques se ajusta a las necesidades del modelo. En el
primer caso, al ser lineal puro se aleja de la realidad en valores no muy lejanos al óptimo
teórico dándose el caso, por ejemplo, que para cantidades de recursos que duplicasen el
óptimo, la duración de la tarea se iría al valor nulo (con lo que en la realidad este debería
ser el óptimo ocasionando una incongruencia). Por tanto, el modelo lineal puro nos daría
soluciones para nuestro modelo desvirtuadas.
En cuanto al segundo caso, se trata de una relación mucho más realista entre recursos y
duraciones de las tareas en donde, para c=1, un aumento del doble de los recursos
conllevaría exactamente una disminución del tiempo a la mitad y viceversa. Este hecho se
debe a que, en este caso, tenemos una relación inversamente proporcional pura, una subida
de los recursos implicará una bajada proporcional de las duraciones. Sin embargo, según
[58] la relación convexa entre tiempos de proceso y recursos asignados no se ajusta a la
realidad puesto que debe haber una penalización al asignar mayor o menor cantidad de
empleados sobre el óptimo. De esta forma, cualquier punto flexible debe estar situado por
encima de la recta convexa (exceptuando el óptimo). Con lo que, a pesar de ajustarse
mucho mejor la relación convexa que la lineal, no está del lado de la seguridad ya que no
Modelo PSSA (Makespan)
79
se corresponde con la realidad. Sin embargo, nos será muy útil como ayuda en las
representaciones gráficas puesto que todo punto que caiga por debajo de ella será
inadmisible. El segundo problema que presenta este caso es la no linealidad que
imposibilitaría el uso de un modelo lineal y que incrementaría considerablemente los
tiempos de resolución del modelo resultante.
En conclusión, cualquier punto situado por debajo de la curva convexa es irrealizable
(región no admisible, marcada en tono rosado en la Ilustración 4-IV) bajo las hipótesis
vistas en la demostración. Por tanto, la curva convexa de c=1 se corresponde con el
contorno ideal que relaciona la duración de una tarea con sus recursos asignados. En dicha
ilustración se muestra un ejemplo de dicho resultado en donde se muestra el tiempo de
procesamiento de una tarea que sigue una relación lineal pura, lineal a trozos y convexa
con c=0.5 y c=1.
Ilustración 4-IV: Zona inadmisible entre empleados y tiempos de proceso.
Como solución se propone un modelo lineal a trozos que resolverá ambas problemáticas en
dónde la relación duración/recursos se parecerá bastante a la convexa y en dónde existirá
un punto óptimo de recursos, de forma que si se utilizan más o menos se estará perdiendo
eficacia en el equipo de trabajo.
Modelo PSSA (Makespan)
80
Considerando Rj como la cantidad óptima de recursos asignados a la tarea j; pdj como el
tiempo óptimo de procesamiento de la tarea j; y kd y kn como parámetros que definen las
pendientes de las líneas, entonces la relación lineal a trozos puede ser escrita como sigue:
A la izquierda del óptimo: (
)
A la derecha del óptimo: (
)
Teniendo en cuenta ahora como el número de trabajadores por debajo del óptimo
( ) y como el número de trabajadores por encima del óptimo
:
A la izquierda del óptimo: (
)
A la derecha del óptimo: (
)
La expresión que usaremos en el modelo es obtenida si consideramos habilidades para
cada tarea:
A la izquierda del óptimo: ( ∑
∑
)
A la derecha del óptimo: ( ∑
∑
)
A continuación, veremos mediante un ejemplo estos enfoques. Supongamos una tarea para
la que el número óptimo de recursos (que da la máxima eficiencia) es 5 y el tiempo de
proceso correspondiente a estos recursos será 10. Sabiendo esto, forzaremos a que tanto el
enfoque convexo como el lineal pasen por el punto óptimo. Para la relación convexa,
estudiaremos el caso c=1 y c=0.5 (según [68] c=1 se corresponde con gobiernos actuales y
operaciones industriales mientras que c=0.5 se corresponde con la integración en escala
muy grande de sistemas de circuitos). En el caso lineal puro, tomaremos un b=p*/u* para
que los recursos queden normalizados y tengan unidades de tiempo. Con esto, tanto el caso
lineal puro como el convexo están completamente definidos si se hacen pasar por el punto
óptimo. Quedarán de la siguiente forma:
Lineal puro: (
)
Modelo PSSA (Makespan)
81
Relación convexa: (
) para c=1 y (
)
para c=0.5.
Lineal a trozos (para k=kd=kn=2.5):
Si u<u*: (
)
Si u=>u*: (
)
Para poder relacionar mejor las ecuaciones, representaremos en la Ilustración 4-V todos
estos enfoques. El eje vertical se corresponde con el tiempo de proceso y el horizontal con
la cantidad de recursos asignados a la tarea. El punto en el que se cruzan todas las curvas
es el punto óptimo y las curvas que han sido representadas son:
Relación convexa entre recursos y duraciones con c=1 (en rojo).
Relación convexa entre recursos y duraciones con c=0.5 (en azul).
Relación lineal pura (línea negra discontinua).
Relación lineal a trozos (línea verde).
Ilustración 4-V: Ejemplo de tiempos de proceso dependientes de la cantidad de recursos
En la figura, se puede observar como el caso lineal puro está situado en todo momento por
debajo de la curva convexa c=1, en la zona admisible. Dándose, por ejemplo, que si en vez
de cinco empleados asignásemos siete, se reduciría la duración del proyecto a más de la
mitad y si asignásemos el doble de empleados, la duración de la tarea sería cero, lo cual es
Modelo PSSA (Makespan)
82
totalmente inadmisible. Así, únicamente da buenos resultados en las cercanías del punto
óptimo y va empeorando a medida que se aleja. Por el contrario, el caso convexo de c=1 se
corresponde a una subida inversamente proporcional pura de la duración al aumentar los
recursos y viceversa. De esta forma, todo lo situado por encima de esa línea es un enfoque
más conservador en el que se incluyen perdidas de eficacia. En esta zona se observa que es
en la que se encuentra el modelo lineal a trozos que presentamos para cantidades de los
recursos situadas entre 2 y 8. Sin embargo, si nos alejamos algo más, se cortarán ambas
curvas (lineal a trozos y convexa) pasando la lineal a trozos a representar un caso irreal. La
siguiente gráfica mostrará únicamente ambas curvas con una ventana de representación
más amplia para que se puedan ver los puntos de corte:
Ilustración 4-VI: Diferencia entre relación convexa y lineal a trozos
De la figura observamos como los puntos de corte se dan para la cantidad de dos y de doce
con cinco recursos. Entre estas dos cantidades, la relación lineal a trozos está por encima
de la relación convexa y presenta un resultado algo más realista. No ocurre así fuera de
este intervalo en dónde la línea verde pasará a estar por debajo de la curva roja. Esto indica
resultados no realistas llegando, por ejemplo, a ser la duración de la tarea cero para una
cantidad de recursos de 17,5. No obstante, no tiene mucho sentido que una tarea cuyo
número óptimo de trabajadores sea 5, se ejecute con menos de 2 o más de 12 trabajadores.
Será necesario, entonces, poner un límite superior e inferior del número de empleados que
Modelo PSSA (Makespan)
83
pueden realizar una tarea para evitarnos este problema. Siguiendo con el ejemplo anterior,
se podría poner como límite inferior 3 y como límite superior 11 con lo que quedaría:
Ilustración 4-VII: Diferencia entre relación convexa y lineal a trozos II
Para este intervalo, la relación lineal a trozos se sitúa en todo momento por encima de la
relación convexa evitando, con esto, el problema desarrollado en el párrafo anterior.
Conseguimos además mejorar la relación convexa al presentar un resultado mucho más
realista, puesto que únicamente existe una cantidad de recursos óptima penalizando que se
asignen diferente cantidad de empleados.
Sin embargo, aún no podemos utilizar esta representación en el modelo. Al tratarse de un
modelo de programación lineal entera, las duraciones de las tareas deben ser dadas con
números enteros, por lo que las representaciones anteriores no serán válidas para nuestro
modelo. Habrá que redondear las duraciones a números enteros para obtener la siguiente
figura, que ya sí, será la curva lineal a trozos que consideraremos (se representa junto con
el resto de relaciones analizadas):
Modelo PSSA (Makespan)
84
Ilustración 4-VIII: Relación lineal a trozos con tiempos de proceso redondeados
4.7.7.2. Configuración de los parámetros kd y kn
Como se vio en el punto anterior, la relación lineal a trozos viene dada por las ecuaciones:
A la izquierda del óptimo de recursos:
(
)
A la derecha del óptimo:
(
)
En dónde y son el tiempo de proceso óptimo y el número de recursos óptimos
respectivamente. El problema radica en la obtención de los parámetros kd y kn. Para
entender el significado de estos parámetros es necesario apoyarnos en las pendientes de las
rectas de la relación lineal a trozos:
Pendiente recta izquierda
Modelo PSSA (Makespan)
85
Pendiente recta derecha
Puesto que el óptimo del problema no se puede modificar ( y será dato para cada
tarea), las pendientes de las rectas dependerán exclusivamente de los parámetros kn y kd.
Será entonces importante elegir adecuadamente sus valores para reflejar, con la mayor
exactitud posible, la realidad. Cuanto mayor sean los mismos, estaremos más del lado de la
seguridad. En el extremo, si tomásemos valores extremadamente altos para los parámetros,
entonces el modelo sería equivalente a un modelo sin CPT. Por el contrario, si son
demasiado bajos, se corre el peligro de obtener soluciones infactibles al situarnos por
debajo de la relación convexa. Volviendo al mismo ejemplo del punto anterior,
observaremos las relaciones lineales a trozos para diferentes valores de los parámetros.
Ilustración 4-IX: Definición de kd y kn
La figura se enmarca entre la mitad de la cantidad de recursos óptima y el doble. Valores
fuera de dicho intervalo no resulta realista considerarlos. Comenzando con la línea verde
(kd=kn=2), se sitúa siempre por encima de la relación convexa salvo en los extremos y en
Modelo PSSA (Makespan)
86
el punto óptimo. El problema que conllevaría tomar estos valores de los parámetros sería
que la optimización tendería a usar, además del punto óptimo, los extremos del intervalo al
corresponderse con puntos de óptimos (en la relación convexa). Por debajo de estos
valores, no podemos tomar los parámetros puesto que darían lugar a infactibilidades, al
situarnos bajo línea roja. Por tanto, la otra posibilidad que queda será analizar los valores
superiores a kd=kn=2. Como observamos de la figura, a medida que incrementan el valor
de los parámetros, nos estaremos alejando más de la relación convexa. Sin embargo, como
se comentó con anterioridad, no tiene sentido valores muy elevados puesto que impedirían
que variase la cantidad de trabajadores asignados a las tareas, provocando así que los
tiempos de proceso no fuesen variables. Habrá que quedarse con una solución intermedia.
En este trabajo, se tomará la configuración kd=kn=2.5 para favorecer la posibilidad de que
las duraciones de las tareas sean variables y puesto que, al situarnos en todo momento por
encima de la línea convexa, estaremos presentando una solución que estará más del lado de
la seguridad que la anterior.
4.7.7.3. Aplicación en el modelo
Con la representación lineal a trozos se ha pretendido conseguir que si, para una tarea, se
decide utilizar una cantidad de recursos diferente de la óptima, conlleva entonces una
penalización en la eficacia que ocasionará una penalización en los tiempos de proceso.
Con anterioridad, se presentó la fórmula de los CPT a la izquierda y derecha del óptimo.
Sin embargo, para introducirla en el modelo deberá ser integrada de forma que solamente
una ecuación defina dichos tiempos:
( ) ( ( ∑
∑
∑
∑
))
Los parámetros kd y kn serán los encargados de definir las pendientes de las líneas que
forman la relación lineal a trozos. Además, las holguras se suman en s (habilidad) para
obtener el valor general de los empleados sobrantes o deficientes sobre el deseado.
Modelo PSSA (Makespan)
87
Puesto que pj es una variable entera positiva, necesitamos que el término derecho de la
ecuación sea un entero y, puesto que hay divisiones entre números enteros, esto no va a
ocurrir la mayoría de las veces. Por eso, se añade el término “round” que indica que la
duración de la tarea será igual al número entero más cercano al término de dentro de los
paréntesis.
En el caso de que el programa para la resolución utilizado (CPLEX, gurobi, lingo…) no
permitiese la inclusión de este tipo de terminología, se puede sustituir dicha restricción por
las dos restricciones siguientes que obtendrían el mismo resultado:
( ∑
∑
∑
∑
)
( ∑
∑
∑
∑
)
Así, quedarían definidas completamente las duraciones de las tareas. Únicamente para
cerrar las restricciones del modelo, quedan por tratar las inecuaciones encargadas de la
definición de zjt. Recordemos que zjt es una variable binaria que será igual a uno solamente
cuando se ejecute la tarea j en el instante t. Sabiendo esto, las inecuaciones encargadas de
cumplir la definición serán las siguientes:
( ) ∑
( )
( ) ∑
( )
( )
( )
Modelo PSSA (Makespan)
88
Para la definición de zjt son imprescindibles las seis restricciones. Esto es debido a que
utilizamos CPT y a que el tiempo de comienzo de cada tarea es variable y no es ningún
dato de entrada. En caso contrario, todas estas restricciones habrían podido ser
simplificadas, simplemente, en las siguientes dos ecuaciones:
En nuestro caso no podemos simplificar las restricciones con lo que será necesario utilizar
las seis restricciones (18, 19, 20, 21, 22, 23) mostradas más arriba. Comenzando por la
restricción 18, será la encargada de establecer que la tarea debe procesarse ( debe ser
uno) en tantos periodos como duración tenga la misma. En la restricción 19 se obliga a que
la tarea j debe ser ejecutada obligatoriamente dónde xjt=1, es decir, el periodo de tiempo
dónde comienza la tarea. Con esto conseguimos que zjt comience dónde empieza la tarea.
A continuación, son necesarios en las siguientes restricciones los tiempos en los que
comienza y termina cada tarea, los cuales vendrán dados respectivamente por las
restricciones (20) y (21).
Las restricciones (22) y (23) serán las encargadas de forzar a que las tareas se realicen de
manera continua. Una vez que se comienza con la tarea, se tiene que trabajar en ella hasta
que se acaba, es decir, se fuerza a que los unos de la variable zjt sean consecutivos. Para
ayudar a entender tanto estas dos últimas restricciones (22 y 23) como la definición de zjt,
mostraremos un pequeño ejemplo en donde se muestran los valores que tendrán las
variables zjt y xjt para una tarea con duración de cuatro periodos empezando en el tiempo 2.
TIEMPO 0 1 2= 3 4 5=
6 7 8
xjt 0 0 1 0 0 0 0 0 0
zjt 0 0 1 1 1 1 0 0 0 Tabla 4-I: Ejemplo de variables xjt y zjt
Así, la restricción (22) obliga a que una vez que se sobrepase el tiempo final de la tarea, no
se siga procesando la misma (se obtienen los ceros de zjt de la derecha de ), mientras que
la restricción (23) fuerza a que antes de que comience la tarea, no se esté procesando la
misma (hace cero la variable zjt si t es menor que ).
Modelo PSSA (Makespan)
89
Hemos definido los tiempos de proceso como función de los recursos asignados a la tarea.
Estos tiempos serán variables en el modelo que serán calculadas y modificadas en cada una
de las iteraciones, para la obtención de soluciones. Esto origina un gran incremento de
dificultad en la definición del modelo, pues todas las restricciones en las que haya
sumatorios cuyos límites dependen de las duraciones de las tareas deben ser modificadas,
al ser estas duraciones variables. Igual ocurre si las duraciones de las tareas se encuentran
indicando el número de restricciones que definen determinado conjunto de restricciones.
La mejor forma de ver esto es mediante un ejemplo, como el que aquí se presenta para el
siguiente conjunto de restricciones:
[ ]
Se observa que el número de restricciones depende de la duración de la tarea, pj, y, por
tanto, al variar la misma se modifica el número de restricciones que compondrán el
conjunto. Esto conlleva que no se puedan dejar las restricciones tal cual y haya que buscar
conjuntos análogos cuyo número de restricciones no sea dependiente de las duraciones de
las tareas. Así para este ejemplo, habría que reemplazar el conjunto anterior por los
siguientes:
( )
( )
( ) ( )
Con lo que un conjunto de restricciones muy sencillo para un caso normal como es el de
se convierte, al introducir los CPT, en cinco conjuntos de restricciones con,
además, cada uno de ellos más restricciones que el original, pasando a tener ahora más de
cinco veces el número de restricciones que teníamos antes.
4.8. Modelo sin habilidades
Modelo PSSA (Makespan)
90
La notación del modelo que se ha presentado incluye la utilización de habilidades para
cada una de las tareas de forma que una tarea se subdivide en habilidades que son
necesarias para su ejecución. Un enfoque alternativo del problema sería la sustitución de
dichas habilidades por sub-tareas dentro de las denominadas tareas. Pasaríamos entonces a
tener un problema análogo con muchas más tareas que el anterior en el que la capacidad de
un empleado para realizar una habilidad sería sustituida por la capacidad para realizar
determinadas tareas (las que se correspondiesen con la habilidad en cuestión). Ambos
enfoques resuelven el mismo problema, su principal diferencia es el tratamiento de los
datos de entrada, mucho más sencillos en el caso de usar el modelo con habilidades. Sin
embargo, la mayoría de la literatura utiliza este segundo enfoque por lo que las baterías de
problemas presentadas en ellos están diseñadas acordes con éste. La representación de
cómo quedaría el modelo sin habilidades es mostrada en el Anexo I.