Sie sind auf Seite 1von 61

Planificación de proyectos

Introducción
El PERT (“Program Evaluation and Review Technique” o “Técnica de
evaluación y revisión de programas”) y el CPM (“Critical Path Method”
o “Método del camino crı́tico”) son métodos diseñados para ayudar en
la planificación, la programación y el control de proyectos.
Un proyecto se define como una colección de actividades interrela-
cionadas, en donde cada actividad requiere tiempo y recursos.
Con la ayuda del PERT y del CPM se puede:
1. Planificar el proyecto antes de llevarlo a cabo y prever posibles
fuentes de problemas y retrasos en su realización.
2. Programar las actividades del proyecto en los momentos oportunos
para ajustarse a la secuencia de tareas a realizar, de forma que el
proyecto se termine lo más pronto posible.
3. Coordinar y controlar las actividades del proyecto para que sigan el
calendario previsto y no retrasen la finalización del proyecto.
Estas dos técnicas (el PERT y el CPM) fueron desarrolladas indepen-
dientemente en EE.UU. en los años 50. Son muy semejantes. La única
diferencia que debemos reseñar es la siguiente:
El PERT incorpora incertidumbre mediante la introducción de proba-
bilidades en los tiempos de ejecución de las actividades, mientras que el
CPM supone conocidos los tiempos de duración de las actividades (tiene
un carácter determinista).
Debido al distinto enfoque que tienen el PERT y el CPM con respecto a
los tiempos de las actividades, el PERT trabaja con tres estimaciones del
tiempo (la pesimista, la optimista y la más probable) y el CPM considera
sólo una.
Además el CPM fue posteriormente prolongado, introduciendo la rela-
ción que existe entre coste y duración de una actividad. De esta forma
surgió la PROGRAMACIÓN DE PROYECTOS A COSTE MÍNIMO (MCE: “Min-
imum Cost Expediting” o “aceleración del proyecto a coste mı́nimo”),
una de las variantes del CPM que ha resultado más fructı́fera, donde se
supone que hay una relación entre la cantidad de recursos necesarios
para una actividad y su tiempo de ejecución.

1
APLICACIONES DEL PERT Y DEL CPM
Construcción de edificios, autopistas, casas, puentes, etc.
Fabricación de aviones, barcos, ordenadores, etc.
Diseño, fabricación y distribución de nuevos productos.
Reparación y mantenimiento de barcos, refinerı́as de petróleo, etc.
Proyectos simples como restauración de casas, mudanza a una nueva
casa, etc.

Principios básicos del método PERT


El método PERT parte de la descomposición del proyecto en una serie
de actividades, entendiendo por “actividad” la ejecución de una tarea
que exige para su realización la utilización de recursos tales como mano
de obra, maquinaria, materiales, . . .
Ası́, por ejemplo, la nivelación de terrenos, la excavación de cimientos,
la colocación de tuberı́as,. . ., son actividades en el proyecto de construc-
ción de un edificio.
Además de las actividades, en el método PERT tenemos el concepto
de “suceso”. Un suceso es un acontecimiento que no consume recursos y
que indica el principio o fin de una actividad o conjunto de actividades.
Para representar las actividades en las que se descompone un proyecto,
ası́ como sus correspondientes sucesos se utiliza un grafo:
los arcos del grafo representan las actividades,
los nodos del grafo representan los sucesos.

HIJK
ONML
i
A / HIJK
ONML
j

OBSERVACIÓN
Si A:(i,j) entonces i < j.

Una vez descompuesto el proyecto en actividades, la fase siguiente


del PERT consiste en establecer las “prelaciones” o “prioridades” exis-
tentes entre las diferentes actividades, debidas a razones de tipo técnico,
económico o jurı́dico. (Es decir, las diferentes actividades que consti-
tuyen un proyecto deben ejecutarse según un cierto orden).
Ejemplos:
Para poder iniciar la fase de excavación es necesario que previamente

2
se haya finalizado la actividad de nivelación.
Para poder iniciar la obra se ha tenido que conseguir previamente el
correspondiente permiso administrativo.
• ¿Cómo se representan en el grafo tales prioridades?
Si para iniciar la actividad B es necesario que haya terminado la ac-
tividad A:

HIJK
ONML
1
A / HIJK
ONML
2
B / HIJK
ONML
3

Para poder iniciar la actividad D es necesario que hayan acabado A,


B y C:

ONML
HIJK
1 MMM
MMM
MMA
MMM
MMM
HIJK
ONML / HIJK
ONML / HIJK
ONML
M&
B D
2 qq 8 4 5
qq
Cqqqq
q
qqq
HIJK
ONML
qqq
3

“A precede a B, C y D”, es decir, para poder iniciarse un conjunto de


actividades (B, C y D) es necesario que se haya finalizado previamente
una sola actividad A:

HIJK
ONML
qqq8 3
q
Bqqqq
qq
qq
HIJK
ONML / HIJK
ONML / HIJK
ONML
A qqq C
1 2 MMM 4
MMM
MMD
MMM
MMM
HIJK
ONML
M&
5

“A, B y C preceden a D, E y F”

3
ONML
HIJK
1 MMM HIJK
ONML
MMM qqq8 5
q
MMA
MMM Dqqqq
MMM qq
qq
HIJK
ONML / HIJK
ONML / ONML
HIJK
B
M& qqq E
2 qq8 4 MMMM 6
qqq MM
C qq MMFM
qqqq MMM

HIJK
ONML HIJK
ONML
q MMM
qqq &
3 7

Actividades ficticias
Veamos ciertos problemas que se plantean en la construcción del grafo
PERT.
“A y B preceden a C”
“A precede a D”
En principio podrı́amos pensar en representarlo ası́:

ONML
HIJK
1 OOO HIJK
ONML
4
OOO oooo7
OA
OOO C oo
oo
ooo
HIJK
ONML
OOO o
O' oo
o 7 3 OOO
oo OOO
Boooo OD
OOO
oo
HIJK
ONML HIJK
ONML
ooo OOO
oo O'
2 5

Pero tal representación no es correcta pues indica que para poder


iniciar D es necesario que haya terminado B.
Para resolver este tipo de problemas debemos recurrir a las “activi-
dades ficticias”.
Éstas no consumen tiempo ni recursos. Son únicamente “enlaces
lógicos” que nos permiten reflejar formalmente las prelaciones existentes
entre las diferentes actividades que constituyen el proyecto.
La situación anterior debe representarse ası́:

HIJK
ONML
1
A / HIJK
ONML
3
D / HIJK
ONML
5




HIJK
ONML
2
B / HIJK
ONML
4
C / HIJK
ONML
6

4
Las actividades ficticias también son usadas para resolver el problema
de las actividades “en paralelo”:
“A precede a B, C y D, y éstas a E”

HIJK
ONML / HIJK
ONML / HIJK
ONML / HIJK
ONML
"
A C E
1 2 3 4
<

Este grafo es correcto siempre que el proceso de cálculo del método


PERT se efectúe manualmente, pero si se está usando un ordenador, éste
no distinguirá entre las actividades B, C y D, que tienen los mismos
sucesos inicial y final.
Para resolver este problema recurrimos de nuevo a las actividades
ficticias.
El grafo adecuado serı́a:

HIJK
ONML
qqq8 3 M M
q MM
Bqqqq MM
qqq
HIJK
ONML / HIJK
ONML / ONML
HIJK / HIJK
ONML
qq MM
A qq C & E
1 2 MMM 8 5 6
MMM q qq
MMD
MMM
MMM q qq
HIJK
ONML
M& qq
4

5
CONSTRUCCIÓN DEL GRAFO PERT
SUCESO INICIO DEL PROYECTO
Representa el inicio de una o más actividades, pero no representa el
fin de ninguna.
SUCESO FIN DEL PROYECTO
Representa el fin de una o más actividades, pero no representa el
comienzo de ninguna.
En todo proyecto hay un único suceso inicio y un único suceso fin.

• Para construir el grafo PERT debemos empezar por recoger de un modo


sistematizado las prelaciones o prioridades existentes entre las distintas
actividades del proyecto. Para ello establecemos el CUADRO DE PRELA-
CIONES.
Está formado por dos columnas:
- en la primera columna están representadas todas las actividades en que
se ha descompuesto el proyecto.
- en la segunda columna figuran las actividades precedentes de la actividad
que aparece en la misma fila de la primera columna.
Después se construye el grafo PERT.

EJEMPLO
Construir el grafo PERT de un proyecto cuyas actividades y prelaciones
existentes entre las mismas son:
A precede a C,D,E
B precede a C
C precede a K
D precede a F,G
E precede a J
F precede a I
G precede a H
H,I,J preceden a L
K precede a M
L precede a P
M precede a N
N,P preceden a Q
Q precede a R

6
Construyamos el cuadro de prelaciones correspondiente a este proyecto:

ACTIVIDADES PRECEDENTES
A -
B -
C A,B
D A
E A
F D
G D
H G
I F
J E
K C
L H,I,J
M K
N M
P L
Q N,P
R Q

Construyamos ahora el grafo PERT:

@ABC
GFED
z < 7 FF
FF
F zzzz FFI
FF
zz
@ABC
GFED @ABC
GFED
z FF
z "
<z 4 DD <x 9M 5
DD G x 55
Dzzzz DD H xxx 55
z D xx
GFED
@ABC @ABC
GFED
zz DD xx 55
z " x 55L
55
F 2 DDD 8 55
DDD
E 55
 D
@ABC
GFED @ABC
GFED
 DD 5
"
A  J
 5 115
 55
55

@ABC
GFED
 55
 55P
1 DD  55
DD B  55
DD 55
DD 
@ABC
GFED C @ABC
G FED @ABC
GFED M / @ABC GFED N / @ABC GFED / @ABC
GFED / GFED
@ABC
D"  5
/ K / Q R
3 6 10 12 13 14 15

7
ASIGNACIÓN DE TIEMPOS A LAS ACTIVIDADES
La duración de una actividad no puede fijarse, en la mayorı́a de los
casos, con exactitud. Depende de circunstancias aleatorias (averı́as en
las máquinas, cortes de energı́a eléctrica, retraso en la entrega de sumi-
nistros, enfermedad del personal,. . .).
este problema es abordado por el método PERT de modo muy peculiar,
pues considera tres estimaciones de tiempo distintas:
• LA ESTIMACIÓN OPTIMISTA, que representa el tiempo mı́nimo en que
podrı́a ejecutarse la actividad si todo marchase excepcionalmente bien,
no produciéndose ningún tipo de contratiempo durante la fase de eje-
cución.
Se considera que la probabilidad de poder finalizar la actividad en esta
estimación optimista (o en menos tiempo) no es superior a 0’01.
La denotaremos por “a”.
• LA ESTIMACIÓN MÁS PROBABLE, llamada también “estimación modal”,
y representa el tiempo que “normalmente” se empleará en ejecutar la
actividad.
Se considera que este tiempo es el que se producirı́a con más frecuencia
si la actividad se ejecutase un cierto número de veces.
La denotaremos por “m”.
• LA ESTIMACIÓN PESIMISTA, que representa el tiempo máximo en que
podrı́a ejecutarse la actividad si todas las circunstancias que influyen en
su duración fuesen totalmente desfavorables, produciéndose todo tipo de
contratiempos (exceptuando casos extremos: incendios, huelgas,. . .).
Se considera que la probabilidad de que dure la estimación pesimista
(o más) no es superior a 0’01.
La denotaremos por “b”.
Una vez establecidas las tres estimaciones de tiempo, se calcula el
tiempo PERT tij de ejecución de una actividad (i,j) ponderando las an-
teriores estimaciones por medio de la fórmula:
tij = a+4m+b
6
(Aunque no hay una clara justificación estadı́stica para esta esti-
mación, es ampliamente utilizada.)

8
DEFINICIÓN
Sea tij el tiempo PERT de ejecución de una actividad (i,j).
Se define el TIEMPO MÁS PRONTO POSIBLE (“early”) de un suceso j,
y lo denotaremos por tj , a:
tj = max {ti + tij }
i/(i,j)∈G
donde G nos indica el grafo PERT.
• El tiempo “más pronto posible” de un suceso nos indica el tiempo mı́nimo
necesario para llegar a él.
• El tiempo más pronto posible del suceso fin del proyecto es LA DURACIÓN
DEL PROYECTO.

OBSERVACIÓN
tj nos indica la longitud del camino más largo desde 1 hasta j.
Vamos a demostrarlo por inducción (en j).
j=1
t1 = 0 (cierto)
Lo suponemos cierto para 2,3,. . .,j
j+1
Lo demostramos para j+1 por reducción al absurdo.
Ya sabemos (por definición) que:
tj+1 = max {ti + ti·j+1 } = ti0 + ti0 ·j+1
i/(i,j+1)∈G
Sea ahora C el camino más largo desde 1 hasta j+1, y supongamos,
entonces, que tiene longitud mayor que tj+1 :
L(C) > tj+1
En tal caso, el último arco de C será (ı̂, j + 1) en donde ı̂ < j + 1.
Tendremos entonces:

tj+1 < L(C) = L(camino más largo de 1 a ı̂) + t ı̂·j+1 =


= tı̂ + tı̂·j+1 ≤ max {ti + ti·j+1 } = tj+1
i/(i,j+1)∈G
lo cual es una contradicción.
En consecuencia, tj indica ciertamente el tiempo que, como mı́nimo,
hemos de emplear para poder empezar cualquier actividad que salga del
nodo j.

9
DEFINICIÓN
Se define el TIEMPO MÁS TARDE PERMISIBLE (“last”) de un suceso i,
y lo denotaremos por t∗i , a:
t∗i = min {t∗j − tij }
j/(i,j)∈G
• El tiempo más tarde permisible de un suceso nos indica lo más tarde que
podemos llegar a él sin que se retrase la duración del proyecto.

OBSERVACIÓN
t∗i nos indica la longitud del camino más largo desde el inicio al fin del
proyecto menos la longitud del camino más largo desde i hasta el fin del
proyecto.

1. Para demostrarlo, primero vemos que cualquier t∗i lo podemos poner


como:
t∗i = t∗n − L(Cin )
donde L(Ci,n ) es la longitud de Cin , un camino de i a n.
Lo demostramos por inducción (en i).
i=n
Cierto, pues t∗n = t∗n − 0
Lo suponemos cierto para n-1,n-2,. . .,i
i-1
Lo demostramos para i-1.
Por definición sabemos que:
t∗i−1 = min {t∗j − ti−1·j } = t∗j 0 − ti−1·j 0
j/(i−1,j)∈G
0
donde j > i − 1
entonces, por hipótesis de inducción para j’ (pues j 0 > i − 1),
existe un camino de j’ a n, Cj 0 n , tal que t∗j 0 = t∗n − L(Cj 0 n )
y el camino Ci−1·n = {(i − 1, j 0 ), Cj 0 n }
completa la demostración.

2. Veamos, a continuación, que Cin es el camino más largo de i a n.


La demostración la hacemos por inducción (en i).
i=n
Cierto, pues t∗n = tn , que es la longitud del camino más largo de 1 a
n.
Lo suponemos cierto para n-1,n-2,. . .,i

10
i-1
Lo demostramos para i-1 por reducción al absurdo:
Por un lado, ya sabemos (por definición) que:
t∗i−1 = min {t∗j − ti−1·j } = t∗j 0 − ti−1·j 0
j/(i−1,j)∈G
0
donde j > i − 1
Sea, ahora, C el camino más largo de i-1 a n, y supongamos que:
L(C) > L(Ci−1·n )
es decir:
t∗i−1 = t∗n − L(Ci−1·n ) > t∗n − L(C)
En tal caso, el primer arco de dicho camino C será (i − 1,̂) para algún
̂ > i − 1.
Por lo tanto, h i
∗ ∗
ti−1 > tn − L(C) = L − L(camino más largo de ̂ a n) + ti−1·̂ =
= L − L(camino más largo de ̂ a n) − ti−1·̂
= t̂∗ − ti−1·̂ ≥
≥ min {t∗j − ti−1·j } = t∗i−1
j/(i−1,j)∈G
lo cual nos lleva a una contradicción.
En consecuencia, t∗i nos indica lo más tarde que puedo salir de i si
quiero llegar a n en el tiempo tn .

11
EJEMPLO
Supongamos que tenemos el siguiente grafo PERT, en donde indicamos
las actividades y sus tiempos de ejecución.

GFED
@ABC E,3 @ABC
GFED
/ 5 VV
={ 3O 1 VVVV
VVVV
{{ 1 VVVV
{ VVVV H,2
B,3 {{{ 1 VVVV
{{ 1 VVVV
{{ 1 VVVV
{ VVVV
@ABC
GFED @ABC
GFED @ABC
G/ FED
{{ 1 VVVV
{ 1 VV*
1 CC C,7 1 8
={ O I,2
9
CC 1 {{
CC { 
CCA,2 1 G,8 {{{
CC 1 {{ 
CC 1 {
CC {{ 
@ABC
GFED G/ FED
@ABC @ABC
G/ FED @ABC
GFED
C! 1 {
D,8  F,9 {{ J,10
2 4 6 / 7

Calcular los tiempos “más pronto posible” y “más tarde permisible”


de cada suceso.

tj = max{ti + tij } t∗i = min{t∗j − tij }


i j
1 0 mı́n{10-3,2-2}=0
2 máx{0+2}=2 mı́n{10-7,10-8}=2
3 máx{2+7,0+3}=9 mı́n{29-3,10-0}=10
4 máx{9+0,2+8}=10 mı́n{19-9}=10
5 máx{9+3}=12 mı́n{31-2}=29
6 máx{10+9}=19 mı́n{29-10,29-8}=19
7 máx{19+10}=29 mı́n{29-0}=29
8 máx{29+0,19+8}=29 mı́n{31-2}=29
9 máx{12+2,29+2}=31 31

Por lo tanto, la duración del proyecto es 31.

MATRIZ DE ZADERENKO
Cuando el grafo PERT es muy grande (muchas actividades) el cálculo
de los tiempos “más pronto posible” y “más tarde permisible” puede
ser muy engorroso. Por eso Zaderenko propuso un método matricial de
cálculo de tiempos “más pronto posible” y “más tarde permisible”, que
resulta sencillo para grafos grandes y pequeños, y además, es fácil de
programar.
a) Se construye una matriz cuadrada A de dimensión igual al número

12
de nodos del grafo y tal que aij es el tiempo PERT de la actividad (i,j) si
tal actividad existe, sino, aij no está definido. (En un ordenador, si (i,j)
no existe, hacemos entonces, por ejemplo, aij < 0).
b) Para calcular los tiempos “más pronto posible” se comienza por
agregar una columna adicional a la izquierda de la matriz (en la que se
irán escribiendo los tiempos “más pronto posible”).
El primer elemento de la columna es el cero.
Para calcular los tiempos “más pronto posible” de los demás sucesos:
tj = max {ti + aij }
i/aij ≥0
c) Para calcular los tiempos “más tarde permisible” se agrega una fila
adicional en la parte inferior de la matriz.
el último elemento de la fila es igual al tiempo “más pronto posible”
del nodo final.
Para calcular los tiempos “más tarde permisible” de los demás sucesos:
t∗i = min {t∗j − aij }
i/aij ≥0

En el ejemplo que acabamos de ver:

ti 1 2 3 4 5 6 7 8 9
0 1 2 3
2 2 7 8
9 3 0 3
10 4 9
12 5 2
19 6 10 8
29 7 0
29 8 2
31 9
t∗j 0 2 10 10 29 19 29 29 31

13
HOLGURAS Y CAMINO CRÍTICO EN EL PERT
La información que proporciona el conocimiento de los tiempos “más
pronto posible” y “más tarde permisible” de los diferentes sucesos no es
demasiado importante, salvo los del suceso fin del proyecto, pues este
tiempo representa la duración del proyecto.
La verdadera importancia de los tiempos “más pronto posible” y “más
tarde permisible” es que constituyen la base para el cálculo de las hol-
guras, que son la pieza fundamental en todo el proceso de análisis del
método PERT.
Comenzaremos por el concepto de holgura de un suceso.
La HOLGURA DE UN SUCESO i, que representaremos por Hi , se define
como la diferencia entre los tiempos “más pronto posible” y “más tarde
permisible” de dicho suceso:
Hi = t∗i − ti
Nos da cuánto puede retrasarse la llegada al suceso “i” sin que la
duración del proyecto experimente retraso. Si Hi = 0 entonces coinci-
den el tiempo más pronto posible en que llegamos a “i” y el más tarde
permisible en que podemos salir de “i” (ti y t∗i ).

OBSERVACIÓN
¿Qué nos da ti ?
En términos de grafos, nos da la longitud del camino más largo desde
el inicio hasta i.
¿Qué nos da t∗i ?
En términos de grafos, nos da la diferencia entre la longitud del camino
más largo desde el inicio hasta el fin y la longitud del camino más largo
desde i hasta el fin.
Por lo tanto, cuando Hi = 0, para algún i, esto implica que:
t∗i − ti = 0
pero, como acabamos de indicar,
t∗i = L(I, F ) − L(i, F )
ti = L(I, i)
en consecuencia, se tiene que
L(I,F) - L(i,F) - L(I,i) = 0
lo cual quiere decir que
L(I,F) = L(I,i) + L(i,F)

14
con lo que podemos concluir que entre I y F hay un camino de longitud
máxima que pasa por i.
El recı́proco también es cierto, puesto que si por “i” pasa un camino
de I a F de longitud máxima, tendremos que:
L(I,F) = L(I,i) + L(i,F)
con lo que:
Hi = 0.

HOLGURA TOTAL DE UNA ACTIVIDAD (i,j)


HijT = t∗j − ti − tij
Nos indica cuánto puede retrasarse una actividad, respecto a su tiempo
PERT previsto, de modo que la duración total del proyecto no experi-
mente retraso alguno.
Es muy importante tener en cuenta que si una actividad consume la
totalidad o parte de su holgura total, eso puede producir una disminución
de la holgura total de la actividad siguiente.
En nuestro ejemplo:
HET = H(3,5)
T
= t∗5 − t3 − t35 = 29 − 9 − 3 = 17
HHT = H(5,9)
T
= t∗9 − t5 − t59 = 31 − 12 − 2 = 17
Sin embargo, si E consumiera la totalidad de su holgura, la holgura
correspondiente a H pasarı́a a ser cero, pues el tiempo“más pronto posi-
ble” del suceso 5 pasarı́a a ser 29.

PROPOSICIÓN
 ti = t∗i
HijT = 0 ⇐⇒ tj = t∗j
tj − ti = t∗j − t∗i = tij

DEMOSTRACIÓN
• Primero probaremos que ti ≤ t∗i , ∀i
Supongamos que ∃i, ti > t∗i .
Sea ̂ ∈ N tal que t̂∗ − ti̂ = min {t∗j − tij } = t∗i
j/(i,j)∈G
por lo tanto
t̂∗ − ti̂ = t∗i < ti
con lo que
t̂∗ < ti + ti̂ ≤ max {tk − tk̂ } = t̂
k/(k,̂)∈G

15
Ası́ seguirı́amos hasta llegar a la conclusión de que el tiempo “más
pronto posible” del suceso fin del proyecto es mayor que su tiempo “más
tarde permisible”, lo cual es una contradicción.

Obsérvese que también se podrı́a probar viendo que:


Si ti > t∗i tenemos que
L(I, i) > L(I, F ) − L(i, F )
entonces
L(I, i) + L(i, F ) > L(I, F )
y habrı́a un camino de I a F de longitud mayor que el de longitud máxima,
lo cual es una contradicción.
Por lo tanto, ti ≤ t∗i , ∀i

• Probemos ahora la propiedad enunciada.


“=⇒”
HijT = 0 ⇒ t∗j − ti − tij = 0
⇒ t∗j = ti + tij ≤ max {tk + tkj } = tj
k/(k,j)∈G
⇒ t∗j ≤ tj
⇒ t∗j = tj

HijT = 0 ⇒ t∗j − ti − tij = 0


⇒ ti = t∗j − tij ≥ min {t∗k − tik } = t∗i
k/(i,k)∈G
⇒ t∗i ≤ ti
⇒ t∗i = ti

HijT = 0 ⇒ t∗j − ti − tij = 0




t∗j − t∗i = tij
 
además:


t∗j = tj 
 tj − ti = tij
t∗i = ti

“⇐=”
HijT = t∗j − ti − tij = tj − ti − tij = 0

16
OBSERVACIÓN
Para
 probar “⇐”nos bastó que:

tj = tj
(a)
tj − ti = tij
o, 
equivalentemente,  nos hubiera bastado que:

ti = ti
(b)
t∗j − t∗i = tij
luego,
(a) ⇒ HijT = 0 ⇒ (b) ⇒ HijT = 0 ⇒ (a)
entonces:
HijT = 0 ⇔ (a) ⇔ (b)

CONSECUENCIAS DE ESTA PROPIEDAD


• Podremos afirmar que una actividad (i,j) tiene holgura total cero si y
sólo si:
“i” está en un camino de longitud máxima de I a F,
“j” está en un camino de longitud máxima de I a F,
y, además,
tj − ti = t∗j − t∗i = tij

pero, entonces:
L(I,F) = L(I,j) +L(j,F)=
= tj +L(j,F)=
= ti + tij +L(j,F)=
= L(I,i)+tij +L(j,F)
es decir,
(i,j) forma parte de un camino de longitud máxima de I a F.

HIJK
ONML _ _ _ _ _ti _ _ _ _ _ONML
HIJK / HIJK
ONML
j _ _ _ _ _ _ _ _ _ _ _/ PQRS
WVUT
tij L(j,F )
I I / i F
u :
KL
rs
P o
S k
V Y h
\ t_j b e

• El recı́proco también es cierto:


Si (i,j) forma parte de un camino de longitud máxima de I a F, entonces:
ti = t∗i (Hi =0)
tj = t∗j (Hj =0)
pero, además,

17
tj = ti + tij
pues, en otro caso,
existirı́a k tal que tk + tkj = tj > ti + tij
con lo que
L(I,k)+tkj +L(j,F) > L(I,i) + tij +L(j,F) = L(I,F)
lo cual contradirı́a el hecho de que hay un camino de longitud máxima
de I a F que contiene a (i,j).
Por lo tanto, hemos obtenido que:
“(i,j) tiene holgura total cero si y sólo si forma parte de un camino de
longitud máxima desde el inicio al fin del proyecto”

Las actividades que tienen holgura total cero se llaman ACTIVIDADES


CRÍTICAS.
Por la propiedad que acabamos de enunciar, es evidente que uniendo
todas las actividades crı́ticas se forman uno o más caminos que van
desde el inicio al fin del proyecto (pues en un grafo finito siempre existe
al menos un camino que es más largo que los demás).
A cada uno de estos caminos se le llama CAMINO CRÍTICO, y resultan
esenciales para efectuar el control del proyecto, pues un retraso en la rea-
lización de las actividades crı́ticas producirá un retraso en la finalización
del proyecto.
El responsable del control del proyecto tampoco debe desatender a las
actividades no crı́ticas, pues un retraso en su ejecución puede llegar a
convertirlas en crı́ticas.
En nuestro ejemplo:

ACTIVIDAD DURACIÓN ti tj t∗i t∗j Hi Hj HijT CRÍTICA


A:(1,2) 2 0 2 0 2 0 0 0 SÍ
B:(1,3) 3 0 9 0 10 0 1 7 NO
C:(2,3) 7 2 9 2 10 0 1 1 NO
D:(2,4) 8 2 10 2 10 0 0 0 SÍ
E:(3,5) 3 9 12 10 29 1 17 17 NO
F:(4,6) 9 10 19 10 19 0 0 0 SÍ
H:(5,9) 2 12 31 29 31 17 0 17 NO
J:(6,7) 10 19 29 19 29 0 0 0 SÍ
G:(6,8) 8 19 29 19 29 0 0 2 NO
I:(8,9) 2 29 31 29 31 0 0 0 SÍ

18
El camino crı́tico serı́a:
A/D/F/J/I

OBSERVACIONES
• Si la duración de la actividad C (no crı́tica) se demora en 2 unidades de
tiempo, dejarı́a de ser crı́tica la D y lo serı́a la C.
• Si el tiempo PERT para la actividad G fuese 10, en vez de 8, tendrı́amos
dos caminos crı́ticos:
A/D/F/J/I
A/D/F/G/I
• Tal y como habı́amos indicado, todos los nodos por los que pasa un
camino crı́tico (y sólo éstos) tienen holgura nula.
Sin embargo,
H8 = H6 = 0
pero G:(6,8) no es crı́tica, puesto que:
t8 − t6 = 10 6= 8 = t68 .
• Por último, recordemos que ti nos da, para cada i, la longitud del
camino más largo desde el inicio hasta “i”, y t∗i nos da la diferencia entre
la duración del proyecto y la longitud del camino más largo desde “i”
hasta el final.
HOLGURA LIBRE DE UNA ACTIVIDAD (i,j)
HijL = tj − ti − tij
Nos indica lo que puede retrasarse una actividad, respecto a su tiempo
PERT previsto, sin que disminuya la holgura total de las actividades
siguientes o, lo que es lo mismo, la holgura libre denota el tiempo que
una actividad puede retrasarse sin retrasar el comienzo más temprano
de las actividades siguientes.

OBSERVACIÓN
HijT = 0 ⇒ HijL = 0
pues HijT = 0 ⇒ tj − ti = tij ⇒ HijL = 0
Sin embargo el recı́proco no es cierto, pues sı́ es posible que:
HijL = 0, Hi = 0 (ti = t∗i , Hj > 0 (t∗j > tj ))
(Véase en el ejemplo la actividad C)
pero no es posible que:
HijL = 0, Hi > 0, Hj = 0, HijT > 0
puesto que, en tal caso:

19
tj = t∗j , tj − ti = tij
con lo que, según la propiedad vista,
HijT = 0.
En resumen:
HijL ≤ HijT
HijL = HijT ⇐⇒ Hj = 0 (tj = t∗j )

HOLGURA INDEPENDIENTE DE UNA ACTIVIDAD (i,j)


HijI = tj − t∗i − tij
Nos indica la holgura disponible (el tiempo que se puede retrasar) para
la actividad (i,j) sin retrasar el comienzo más temprano de las actividades
siguientes, si la finalización de las actividades anteriores inmediatas ha
sido la más tardı́a.
Esta holgura es escasa y a veces negativa.

HOLGURA DE RETRASO DE UNA ACTIVIDAD (i,j)


HijR = t∗j − t∗i − tij
Nos indica lo que puede retrasarse la actividad (i,j) sin que se retrase el
fin del proyecto si la finalización de las actividades anteriores inmediatas
ha sido la más tardı́a.

EJEMPLO
Vamos a calcular las holguras libre, independiente y de retraso de las
actividades del ejemplo visto anteriormente.

T
ACTIVIDAD Hij HijL = tj − ti − tij HijI = tj − t∗i − tij HijR = t∗j − t∗i − tij
A : (1, 2) 0 2−0−2=0 2−0−2=0 2−0−2=0
B : (1, 3) 7 9−0−3=6 9−0−3=6 10 − 0 − 3 = 7
C : (2, 3) 1 9−2−7=0 9−2−7=0 10 − 2 − 7 = 1
D : (2, 4) 0 10 − 2 − 8 = 0 10 − 2 − 8 = 0 10 − 2 − 8 = 0
E : (3, 5) 17 12 − 9 − 3 = 0 12 − 10 − 3 = −1 29 − 10 − 3 = 16
F : (4, 6) 0 19 − 10 − 9 = 0 19 − 10 − 9 = 0 19 − 10 − 9 = 0
H : (5, 9) 17 31 − 12 − 2 = 17 31 − 29 − 2 = 0 31 − 29 − 2 = 0
J : (6, 7) 0 29 − 19 − 10 = 0 29 − 19 − 10 = 0 29 − 19 − 10 = 0
G : (6, 8) 2 29 − 19 − 8 = 2 29 − 19 − 8 = 2 29 − 19 − 8 = 2
I : (8, 9) 0 31 − 29 − 2 = 0 31 − 29 − 2 = 0 31 − 29 − 2 = 0

20
ESTABLECIMIENTO DE UN CALENDARIO DE EJECUCIÓN DEL PROYECTO
El proceso de cálculo que hemos desarrollado hasta ahora proporciona
una información de la que puede deducirse fácilmente un calendario de
ejecución del proyecto, que va a constituir un pieza básica para efectuar
el control del mismo.
En dicho calendario se establecen cuatro fechas para cada una de las
actividades:

FECHA DE COMIENZO MÁS TEMPRANA DE (i,j), que representaremos


por ∆ij , y nos indica lo más pronto que puede comenzar la actividad
(i,j).
Obviamente, dicha fecha será igual a la dada por el tiempo “más
pronto posible” del suceso inicio de la actividad (i,j):
∆ij = ti
FECHA DE COMIENZO MÁS TARDÍA DE (i,j), que representaremos por

∆ij , y nos indica lo más tarde que puede comenzar la actividad (i,j) de
manera que la duración prevista del proyecto no se retrase:
∆∗ij = t∗j − tij = ti + HijT
FECHA DE FINALIZACIÓN MÁS TEMPRANA DE (i,j), que representaremos
por ∇ij , y nos indica lo más pronto que puede finalizar la ejecución de
la actividad (i,j):
∇ij = ti + tij = t∗j − HijT
FECHA DE FINALIZACIÓN MÁS TARDÍA DE (i,j), que representaremos
por ∇∗ij , y nos indica la fecha tope en que puede finalizar la actividad
(i,j), de modo que la duración prevista del proyecto no se retrase:
∇∗ij = t∗j

A partir de las fórmulas anteriores se puede establecer fácilmente un


calendario de ejecución del proyecto.
Calculemos, en nuestro ejemplo, las cuatro fechas para la actividad
C si consideramos como fecha de inicio del proyecto el 13 de octubre,
lunes, y no consideramos laborables ni sábados ni domingos:
∆23 = 2 (15 de octubre, miércoles)
∆∗23 = 2 + 1 = 3 (16 de octubre, jueves)
∇23 = 2 + 7 = 9 (24 de octubre, viernes)
∇∗23 = 10 (27 de octubre, lunes)

21
OBSERVACIÓN
Nótese que para las actividades crı́ticas coinciden las fechas de comienzo
más temprana y más tardı́a, ası́ como las fechas de finalización más tem-
prana y más tardı́a, pues HijT = 0.
Además,
∆∗ij − ∆ij = (ti + HijT ) − ti = HijT
= t∗j − ti − tij
= ∇∗ij − ∇ij

22
EJEMPLO
Se pretende controlar el proceso de lanzamiento de un nuevo producto
al mercado. A continuación indicamos las actividades de que consta el
lanzamiento del producto y la duración prevista (en semanas) de cada
una de ellas.
A) Compra de las materias primas (2)
B) Producción del stock inicial (4)
C) Envasado del stock inicial (1)
D) Estudio del mercado (6)
E) Selección de una agencia de publicidad (3)
F) Realización de la campaña de publicidad (5)
G) Estudio y diseño de los envases (2)
H) Preparación de los envases (2)
I) Selección del equipo de vendedores (4)
J) Entrenamiento del equipo de vendedores (4)
K) Selección de los posibles distribuidores (3)
L) Venta a los distribuidores (5)
M) Envı́o de los primeros pedidos (2)

Las relaciones existentes entre las diferentes actividades son:


A precede a B,
B y H preceden a C,
C y L preceden a M,
D precede a G, I y K,
E precede a F,
G precede a E y H,
I precede a J,
J y K preceden a L.
Con estos datos hágase un estudio PERT del proyecto.

Primero establecemos el cuadro de prelaciones:

23
ACTIVIDADES PRECEDENTES
A -
B A
C B,H
D -
E G
F E
G D
H G
I D
J I
K D
L J,K
M C,L

Construcción del grafo PERT:


GFED
@ABC B,4 @ABC
G/ FED C,1 @ABC
G/ FED
=| 2 =| 6 8C
|| || I CCCC
|| ||  CC
A,2 ||| H,2 |||  CC M,2
CC
|| ||
|| ||  CC
|| ||  CC
|| ||  CC
@ABC
GFED @ABC
GFED @ABC
G FED @ABC
GFED
|| ||  C!
E,3 / F,5 /
1 BB |=
4
 9 10
BB || 
BB ||
BB D,6 G,2 ||| 
BB L,5 
BB ||
BB ||| 
BB || 
@ABC
GFED G/ FED
@ABC
BB |
! || I,3 
3 QQQQ 5 BB 
QQQ BB 
QQQ BB
QQQ BB J,4 
QQK,3
QQQ BB 
QQQ B
QQQ BBBB 
QQQ B 
@ABC
GFED
QQQBB 
Q( !
7

24
CÁLCULO DE LOS TIEMPOS “MÁS PRONTO POSIBLE” Y “MÁS TARDE
PERMISIBLE”

tj = max{ti + tij } t∗i = min{t∗j − tij }


i j
1 0 mı́n{6 − 6, 13 − 2} = 0
2 t1 + t12 = 0 + 2 = 2 t∗6 − t26 = 17 − 4 = 13
3 t1 + t13 = 0 + 6 = 6 mı́n{12 − 2, 9 − 3, 13 − 3} = 6
4 t3 + t34 = 6 + 2 = 8 mı́n{17 − 2, 15 − 3} = 12
5 t3 + t35 = 6 + 3 = 9 t∗7 − t57 = 13 − 4 = 9
6 máx{2 + 4, 8 + 2} = 10 t∗8 − t68 = 18 − 1 = 17
7 máx{9 + 4, 6 + 3} = 13 t∗8 − t78 = 18 − 5 = 13
8 máx{10 + 1, 13 + 5} = 18 t∗10 − t8·10 = 20 − 2 = 18
9 t4 + t49 = 8 + 3 = 11 t∗10 − t9·10 = 20 − 5 = 15
10 máx{18 + 2, 11 + 5} = 20 20

DURACIÓN DEL PROYECTO: 20 semanas

MATRIZ DE ZADERENKO

ti 1 2 3 4 5 6 7 8 9 10
0 1 2 6
2 2 4
6 3 2 3 3
8 4 2 3
9 5 4
10 6 1
13 7 5
18 8 2
11 9 5
20 10
t∗j 0 13 6 12 9 17 13 18 15 20

25
Actividad tij ti tj t∗i t∗j Hi Hj HijT HijL HijI HijR ¿Crı́tica?
A : (1, 2) 2 0 2 0 13 0 11 11 0 0 11 No
D : (1, 3) 6 0 6 0 6 0 0 0 0 0 0 Sı́
B : (2, 6) 4 2 10 13 17 11 7 11 4 −7 0 No
G : (3, 4) 2 6 8 6 12 0 4 4 0 0 4 No
I : (3, 5) 3 6 9 6 9 0 0 0 0 0 0 Sı́
K : (3, 7) 3 6 13 6 13 0 0 4 4 4 4 No
H : (4, 6) 2 8 10 12 17 4 7 7 0 −4 3 No
E : (4, 9) 3 8 11 12 15 4 4 4 0 −4 0 No
J : (5, 7) 4 9 13 9 13 0 0 0 0 0 0 Sı́
C : (6, 8) 1 10 18 17 18 7 0 7 7 0 0 No
L : (7, 8) 5 13 18 13 18 0 0 0 0 0 0 Sı́
M : (8, 10) 2 18 20 18 20 0 0 0 0 0 0 Sı́
F : (9, 10) 5 11 20 15 20 4 0 4 4 0 0 No

CAMINO CRÍTICO: D/I/J/L/M

@ABC
GFED B @ABC
G/ FED C @ABC
G/ FED
| =2 | =6 8
EM CCCCCC
|| ||   CCCCC
| || |||  
 CCCC
A ||| H |||  CCCCM
| | 
 CCCC
| | | |  CCCC
|| ||  CCCC
| |   CCCC
@ABC
GFED @ABC
GFED  @ABC G FED / @ABC
GFED
| |   C %
|| || E   F
1 BBBB   /
| =4 

9 10
BBBB || 
B
BBB |  
BBBB || 
BBBBD G ||| L   
BBBB || 
BBBB
B ||| 
BBB |
@ABC
GFED G
@ABC FED
BB% ||| 
I 3 + 
3 QQQQ 5 BBBB 
QQQ BBBB 
QQQ 
QQQ BBBB
BB 
QQQK B
BBBJ  
QQQ BB
QQQ BBBBBB 
QQQ BBBB 
QQQ BBB 
@ABC
GFED
QQBQ % 
(
7

26
CALENDARIO DE EJECUCIÓN DEL PROYECTO

Actividad Fechas de comienzo Fechas de terminación


∆ij /∆∗ij ∇ij /∇∗ij
A : (1, 2) 0/11 2/13
D : (1, 3) 0/0 6/6
B : (2, 6) 2/13 6/17
G : (3, 4) 6/10 8/12
I : (3, 5) 6/6 9/9
K : (3, 7) 6/10 9/13
H : (4, 6) 8/15 10/17
E : (4, 9) 8/12 11/15
J : (5, 7) 9/9 13/13
C : (6, 8) 10/17 11/18
L : (7, 8) 13/13 18/18
M : (8, 10) 18/18 20/20
F : (9, 10) 11/15 16/20

27
DIAGRAMA DE GANTT

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

D
I
J
L
M

∆ ∇ A ∆∗ ∇∗

∆ ∇ B ∆∗ ∇∗

∆ ∇ G ∆∗ ∇∗

∆ K ∇ ∆∗ ∇∗

∆ ∇ H ∆∗ ∇∗

∆ ∇ ∆∗ E ∇∗

∆ ∇ C ∆∗ ∇∗

∆ F ∆∗ ∇ ∇∗

28
El método MCE
El método MCE (MINIMUM COST EXPEDITING o “aceleración del proyecto
a coste mı́nimo”) es una prolongación del método CPM, introduciendo la
relación entre coste y duración de una actividad.
Este método contempla la posibilidad de que el nivel de utilización
de recursos para la realización de una actividad no sea único, y, por lo
tanto, no hablaremos de una duración única sino que a cada nivel de
recursos le corresponderá una determinada duración. Es decir, se puede
reducir la duración de una actividad a base de incrementar su coste de
ejecución.
Ası́, por ejemplo, supongamos que en el proyecto existe una acividad
que es el alicatado de paredes con azulejos. El tiempo PERT previsto es
de 25 dı́as. Ahora bien, este tiempo PERT se ha calculado en base a un
determinado nivel de utilización de recursos (una cuadrilla de albañiles
y un turno de trabajo). Indudablemente, este tiempo PERT podrı́a re-
ducirse sin más que incrementar las cuadrillas de albañiles y/o los turnos
de trabajo.
En definitiva, existirá una relación funcional decreciente, que supon-
dremos lineal, entre el coste (adicional) y el tiempo de ejecución de una
actividad.
T
Cij s (Tij , Cij )
@
@
@
@
@
@
@
s (xij , cij )
@
@
@
@
@
@
@
@
(tij , 0) xij

Llamaremos:
xij : duración de la actividad (i,j).
tij : duración de la actividad (i,j) si le asignamos el mı́nimo nivel de
recursos.

29
Tij : duración de la actividad (i,j) si le asignamos el máximo nivel de
recursos.
cij : coste (adicional) de ejecución de la actividad (i,j).
cTij : coste (adicional) de ejecución de la actividad (i,j) si le asignamos
el máximo nivel de recursos.
además,
el coste adicional de ejecución de la actividad si le asignamos el mı́nimo
nivel de recursos es cero.
OBJETIVO:
Proponer un plan de aceleración del proyecto de modo que se incurra
en un coste lo más pequeño posible.
• ¿Cuál es el coste (adicional) de ejecución de una actividad (i,j) asociado
a una duración xij ?
Basta calcular la ecuación de la recta:
tij − xij 0 − cij
=
tij − Tij 0 − cTij
y despejar cij :
cTij
cij = (tij − xij )
tij − Tij
cTij
• Llamaremos a Qij = el COSTE UNITARIO DE REDUCCIÓN, que
tij − Tij
es el coste (adicional) de ejecución de la actividad (i,j) por unidad de
tiempo que se reduce su duración.
El problema que resuelve el MCE puede plantearse como un problema
de programación lineal paramétrica:
min cij ⇐⇒ max Qij xij
(i,j)∈G (i,j)∈G

y el problema serı́a:
X
maximizar Qij xij
(i,j)∈G
sujeto a ij ≤ xij ≤ tij ∀(i, j) ∈ G
TX
xij ≤ λ ∀C ∈ C = {caminos de 1 a n}
(i,j)∈C
xij : variables de decisión
λ: parámetro (duración del proyecto)

30
Para cada valor que demos al parámetro λ, el problema nos dará el
tiempo óptimo de ejecución de las diferentes actividades (xij ) para que
el coste sea mı́nimo.

EL ALGORITMO DE ACKOFF Y SASIENI


Aunque el método MCE nos lleva a la resolución de un problema de
programación lineal paramétrica, en la práctica suele resolverse con algo-
ritmos especı́ficos que resultan más sencillos de aplicar que los algoritmos
propios de la programación lineal paramétrica.
Vamos a exponer un algoritmo heurı́stico muy sencillo que resulta muy
práctico en proyectos pequeños.
Veámoslo con un ejemplo.
EJEMPLO
En la figura hemos representado el grafo PERT de un proyecto descom-
puesto en nueve actividades: A, B, C, D, E, F, G, H e I.

HIJK
ONML
2 ITITTTT
uu: II TTTT
uu II
A uuuu IID TTTTTTTG
II TTTT
uu II TTTT
uuu II TTTT
HIJK
ONML / ONML
HIJK / HIJK
ONML f/3HIJK
ONML
u II
uu C $ F
TTT*
I
1 II u : 4 5 ff fffff 6
II u fff
II uu fffff
IIB
II E uuuu H
f ffffffff
u f
II uu fffff
II uu ffffffffff
HIJK
ONML
II u
$ ufuffffff
3
En la tabla siguiente tenemos las actividades con sus tiempos “nor-
males” de ejecución, los tiempos “tope” o mı́nimos y los costes unitarios
de reducción:
Actividad tij Tij Qij
A:(1,2) 8 4 2
B:(1,3) 10 5 4
C:(1,4) 12 6 3
D:(2,4) 10 6 4
G:(2,5) 14 9 3
E:(3,4) 7 5 5
H:(3,6) 12 8 2
F:(4,5) 7 4 5
I:(5,6) 10 7 1

31
Para aplicar el algoritmo de Ackoff y Sasieni empezamos construyendo
una tabla que explicaremos a continuación.

32
“tabla MCE”

33
En la primera columna de la tabla representamos los caminos que van
desde el nodo inicio hasta el nodo fin del proyecto.
Las siguientes nueve columnas corresponden a las diferentes activi-
dades en que se ha descompuesto el proyecto. Debajo de cada actividad
se escribe el coste unitario de reducción siempre que esa actividad forme
parte del camino que viene indicado por la fila correspondiente. Si, por
el contrario, la actividad no forma parte de dicho camino, se deja en
blanco el espacio correspondiente.
El cuadro se completa con siete columnas y siete filas que corresponden
a las distintas etapas del algoritmo:
En la columna 1 (etapa 1) tenemos las “longitudes” de los caminos
representados en las filas correspondientes y en la fila 1 (etapa 1) las
reducciones posibles (tiempos normales menos tiempos topes) de las di-
ferentes actividades.
De la observación de la columna 1 se deduce que la duración del
proyecto es de 35 unidades de tiempo y que si queremos reducir dicha
duración habrá que reducir la duración del camino II, ya que este camino
es el crı́tico.
Para reducir la duración de este camino será necesario reducir el
tiempo de ejecución de alguna de las actividades que lo forman. Para
ello elegiremos la actividad cuyo coste unitario de reducción sea el más
pequeño, que, en este caso, es la (5,6), ya que su coste unitario de re-
ducción es 1.
La reducción máxima que puede efectuarse en la duración de esta
actividad es de 3 unidades de tiempo, según nos indica el elemento co-
rrespondiente de la fila 1. Esta reducción origina un cambio en las lon-
gitudes de los caminos que contienen a la actividad (5,6). Estas nuevas
longitudes pasan a formar parte de la columna 2. De esta columna se
deduce que la duración del proyecto ha pasado a ser de 32 unidades de
tiempo.
Para completar esta etapa del algoritmo agregamos a la tabla una
nueva fila, que marcamos con un 2 en la que figuran las reducciones
posibles que presentan ahora las diferentes actividades.
El coste adicional en concepto de reducción lo obtendremos multipli-
cando el coste unitario de reducción (que es uno) por la correspondiente
reducción de tiempo (que es tres); es decir, en esta etapa el coste adi-
cional debido a la reducción es de 3 unidades monetarias.

34
Repitiendo el proceso completarı́amos las demás etapas del algoritmo.
En la gráfica siguiente representamos los tiempos de ejecución del
proyecto y los costes adicionales.

Coste
Adicional
90 t
C
C
80 C
C 15

C
70 C
C
C
60 Ct
C
C
50 C
C 11
C
Ct
40 C
38
T
30
T 6
T
T
20
TTt
J
J5
10 J
tH2
JJ
t``1
` ` t
5 10 15 20 21 23 25 28 30 31 32 35

Duración

OBSERVACIÓN
Ponemos fin al algoritmo cuando no podamos reducir más la duración
del proyecto, o cuando los beneficios marginales que se obtengan por
reducir el tiempo de duración del proyecto sean inferiores a los costes
marginales. En este último caso es conveniente escribir una tabla donde
comparamos los costes y los beneficios.
En el ejemplo que hemos visto, supongamos que el ingreso marginal
debido a la reducción en la duración del proyecto es de 7 unidades mo-
netarias. Entonces, la duración óptima del proyecto será 25, pues si lo

35
reducimos a un tiempo menor lo haremos a un coste (por unidad de
tiempo reducida) de 11 (y posteriormente de 15), que es mayor que 7
(beneficio por unidad de tiempo reducida).

Etapas Costes marginales Beneficios marginales Duración del proyecto


1 1 7 32
2 2 7 31
3 5 7 28
4 6 7 25
...... ................. ..................... .....................
5 11 7
6 15 7

36
Planificación de proyectos con recursos limitados
Desde el primer momento, al tratar la planificación de proyectos,
hemos hablado de “recursos” (por ejemplo, definı́amos “actividad” como
la ejecución de una tarea que consume tiempo y recursos). Sin em-
bargo, hemos dejado de lado este tema haciendo implı́citamente la su-
posicición de que los recursos de que disponı́amos eran ilimitados. Pero
este supuesto es muy fuerte y no muy realista en muchas ocasiones. Por
ello vamos a dedicar ahora nuestra atención a los dos problemas más
importantes que hay en el contexto general de los recursos limitados:
• el problema de la nivelación de recursos
• el problema de la asignación de recursos

La nivelación de recursos
El objetivo es que los consumos de los diferentes tipos de recursos sean
lo más uniforme posible durante el perı́odo de ejecución del proyecto, sin
que la duración de dicho proyecto se exceda de la prevista (la dada por
el camino crı́tico).
La situación óptima, a la que no se podrá llegar en la mayorı́a de los
casos, será aquella en la que el consumo de cada uno de los recursos se
mantiene constante a lo largo del tiempo de ejecuciÛn del proyecto.
Veamos un ejemplo:
Consideremos el siguiente proyecto:

HIJK
ONML
2
uu: E,7
uu
B,2uuuu
u
uu
uu
HIJK
ONML / ONML
HIJK / HIJK
ONML / HIJK
ONML ) HIJK
/ ONML / OHIJK
NML
u
uu A,3 C,4 D,2 F,1 H,2
1 3 4 5 5 6 9 7

G,8

I,2

Calculemos los tiempos “más pronto posible” y “más tarde permisi-


ble”, y las holguras totales de las actividades:

37
ti 1 2 3 4 5 6 7
0 1 2 3 8 2
2 2 7
3 3 4
7 4 2
9 5 1
10 6 2
12 7
t∗j 0 3 3 7 9 10 12

Actividad tij ti t∗j HijT ¿Crı́tica?


B : (1, 2) 2 0 3 1 No
A : (1, 3) 3 0 3 0 Sı́
G : (1, 6) 8 0 10 2 No
I : (1, 7) 2 0 12 10 No
E : (2, 6) 7 2 10 1 No
C : (3, 4) 4 3 7 0 Sı́
D : (4, 5) 2 7 9 0 Sı́
F : (5, 6) 1 9 10 0 Sı́
H : (6, 7) 2 10 12 0 Sı́

A partir de estos datos podemos construir un calendario de ejecución


del proyecto. Lo vamos a hacer basándonos en las fechas más tempranas,
y quedarı́a ası́:

38
A
C
D
F
H

B
E

Días 1 2 3 4 5 6 7 8 9 10 11 12

Para simplificar la situación, vamos a suponer que solamente esta-


mos interesados en nivelar un recurso (por ejemplo, el recurso “mano de
obra”).
Y, por otro lado, sabemos qe las actividades A e I necesitan 10 obreros
para ser ejecutadas en los tiempos previstos, y que las demás actividades
en que se ha descompuesto el proyecto son iguales y necesitan 5 obreros.
Conocidos estos datos podemos deteminar “la carga diaria” del recurso
“mano de obra” (es decir, el número de unidades del mismo que son
usadas cada dı́a) según nuestro calendario de ejecución:

1 2 3 4 5 6 7 8 9 10 11 12 DÍAS
30 30 20 15 15 15 15 15 10 5 5 5 CARGA

y podemos hacer también el llamado diagrama de carga para el re-


curso “mano de obra”, según el calendario de ejecución con fechas más
tempranas:

39
30

25

20

15

10

1 2 3 4 5 6 7 8 9 10 11 12

De la observación del diagrama de carga deducimos que, en nuestro


caso, el consumo del recurso “mano de obra” se realiza de una manera
poco uniforme.
Indudablemente, una distribución de carga de este tipo dista mucho
de ser la óptima.
Esta desigualdad diaria en cuanto a la utilización del recurso difi-
cultará la buena organización del proyecto y generará, casi con toda
seguridad, unos fuertes costes adicionales.
Los métodos de nivelación de recursos pretenden conseguir un dia-
grama de carga tan uniforme como sea posible.
Obviamente la distribución de la carga será óptima cuando la va-
rianza de la variable “carga diaria” sea cero, pues, en tal caso, todos
los dı́as coincidirá la carga con la media de la variable “carga diaria”.
Ahora bien, como en la mayor parte de los proyectos no es posible esa
distribución de carga óptima, el objetivo de la nivelación de recursos
consistirá en disminuir lo más posible la varianza de la variable “carga
diaria” (consideraremos como solución óptima aquélla que minimice la
varianza, aunque ésta no sea cero).
El método que emplearemos consistirá en retrasar la ejecución de las

40
actividades no crı́ticas (siempre que lo permitan sus holguras) tratando
de conseguir ası́ que disminuya la varianza antes citada.

LA NIVELACIÓN DE RECURSOS COMO UN PROBLEMA DE


PROGRAMACIÓN MATEMÁTICA
Las técnicas de programación matemática constituyen un medio que
permite resolver con exactitud los problemas de nivelación de recursos.
No obstante, como veremos, la aplicación de la programación a estos
problemas conduce a modelos de gran dimensión que, en ocasiones, no
son computables a un coste razonable.

• Comencemos definiendo los parámetros y variables que van a intervenir


en el modelo:
i: ı́ndice que indica los recursos que estamos interesados en estudiar.
Supondremos que varı́a desde 1 hasta r.
j: ı́ndice que indica las actividades en que está descompuesto el proyecto.
Como siempre, supondremos que varı́a de 1 a m.
k: ı́ndice que indica los perı́odos de tiempo en que está dividida la
ejecución del proyecto.
Si el proyecto dura p unidades de tiempo, k variará desde 1 hasta p.
cij : necesidades, por unidad de tiempo, del recurso i-ésimo para com-
pletar la actividad j-ésima en el tiempo previsto.
Dj : duraciónde la actividad j-ésima
xjk : variables que estamos programando y que tomarán únicamente
valor 0 ó 1.
Cuando xjk toma el valor cero, significa que la actividad “j” no se
ejecuta en el perı́odo “k” y cuando xjk toma el valor uno significa
que la actividad “j” sı́ se ejecuta en el perı́odo “k”.
• Seguidamente vamos a exponer ordenadamente el conjunto de restric-
ciones que deben satisfacer las variables xjk :
i) Las variables xjk deben valer 0 ó 1 (lo cual convierte el problema en
uno de programación entera):
0 ≤ xjk ≤ 1, j = 1, . . . , m, k = 1, . . . , p
xjk número entero

41
ii) Todas las actividades en que se ha descompuesto el proyecto deben
ser realizadas en el transcurso de los p perı́odos de tiempo:
Xp
xjk = Dj , j = 1, . . . , m
k=1

iii) No se podrá comenzar ninguna actividad antes de que hayan termi-


nado las actividades precedentes (según indica el cuadro de prela-
ciones):
k−1
X
xql ≥ Dq · xjk , j = 1, . . . , m, k = 2, . . . , p
l=1

para toda actividad q que precede a j


iv) No se podrá fraccionar la ejecución de una actividad. Es decir, una
vez comenzada la ejecución de una actividad, debe ser finalizada sin
que se produzca interrupción:
Xp
Dj · xjk − Dj · xjk+1 + xjl ≤ Dj j = 1, . . . , m, k = 1, . . . , p − 2
l=k+2

En algunos proyectos existen actividades cuya ejecución es suscepti-


ble de fraccionamiento. En tal caso, tales actividades no se tendrán
en cuenta a la hora de establecer las restricciones del tipo (iv).

Por lo tanto, el problema de nivelación de recursos nos lleva a un


problema de programación entera con:
mp variables y
2mp+m+(p-1)Q+m(p-2)=3mp-m+(p-1)Q restricciones.
En nuestro ejemplo: m=9, p=12, Q=7, con lo que tendrı́amos 108
variables y 392 restricciones.
No obstante, en realidad el número de variables a programar y el
número de restricciones a tener en cuenta suele ser más bajo que el
que acabamos de indicar. Por ejemplo, las variables xjk , cuando j es
una actividad crı́tica, están determinadas a priori. Por otro lado, como
ninguna actividad puede comenzar antes de su fecha más temprana de
comienzo ni terminar después de su fecha más tardı́a de finalización,
algunas variables xjk también están determinadas a priori sin ser j crı́tica.

42
(La existencia de variables con valores determinados a priori produce
casi siempre una reducción considerable de la dimensión de los modelos.)
• Determinemos ahora la función del objetivo:
Como ya habı́amos indicado, lo que nos interesa es minimizar la va-
rianza de la variable “carga diaria”.
Como su media es fija nos bastará con minimizar la suma de los
cuadrados de las cargas.
Por lo tanto, tendremos!la siguiente función objetivo:
r Xp m 2
X X
min cij xjk
i=1 k=1 j=1

Como hemos visto, el problema de nivelación de recursos puede tratarse


como un problema de porgramación entera y ser resuelto como tal, pero
tal vez el coste en que incurrimos al resolverlo no nos compense los be-
neficios que vamos a obtener, puesto que el problema de programación
será excesivamente largo, salvo que las redes sean muy pequeñas.
Por ello se han desarrollado métodos “heurı́sticos” para resolver la
nivelación de recursos, que aunque dan soluciones aproximadas son acep-
tablemente cortos.

PROCEDIMIENTO HEURÍSTICO DE BURGESS-KILLEBREW


PARA LA SOLUCIÓN DEL PROBLEMA DE NIVELACIÓN DE RECURSOS
Paso 1
Nos fijamos en el calendario de ejecución del proyecto, buscando la
actividad no crı́tica que tenga la fecha más temprana de finalización
mayor.
En esta actividad se retrasa su finalización unidad por unidad de
tiempo, de acuerdo con lo que permite su holgura.
Se elegirá como fecha más temprana de finalización de la actividad la
que haga mı́nima la suma de los cuadrados de las cargas.
Paso 2
Entre todas las actividades no crı́ticas, excluida la actividad que hayamos
estudiado en el primer paso, se vuelve a elegir la que tenga la fecha más
temprana de finalización mayor.
Una vez encontrada esta actividad, se le aplica el mismo tratamiento
que el descrito en el primer paso.

43
Seguidamente, continuaremos el proceso hasta llegar a la actividad
que posee la fecha más temprana de finalización menor, aplicándole el
mismo tratamiento.
Cuando dos o más actividades tengan la misma fecha más temprana de
finalización, se actuaráprioritariamente sobre la actividad cuya holgura
permita un retraso mayor en su finalización.
Paso 3
Una vez analizada la actividad con una fecha más temprana de fina-
lización menor, se vuelve a iniciar un nuevo ciclo de iteraciones.
El proceso de cálculo se detendrá cuando, finalizado un ciclo, no resulte
posible disminuir la suma de los cuadrados de las cargas.
Aunque el algoritmo lo hemos aplicado a un calendario de ejecución
del proyecto basado en las fechas más tempranas, puede aplicarse de
igual forma a un calendario que esté basado en las fechas más tardı́as.
En ambos casos, como es lógico, se llega a la misma solución, aunque el
número de ciclos e iteraciones puede cambiar.
Al ser este algoritmo de tipo “heurı́stico” nunca nos indicará si hemos
llegado a una solución optima, excepto en aquellos casos en los que se
alcanza el valor de la varianza cero (carga diaria constante).
Una de las ventajas que presenta este algoritmo es el de ser factible
de procesar en un ordenador, lo cual permite su aplicación a proyectos
complejos. Y uno de los principales inconvenientes es el de estar pensado
fundamentalmente para la nivelación de un único recurso.

44
• Vamos a resolver ahora el ejemplo planteado anteriormente:

A 10

C 5

D 5

F 5

H 5

B 5

E 5

G 5

I 10

1 2 3 4 5 6 7 8 9 10 11 12

30 30 20 15 15 15 15 15 10 5 5 5

900 900 400 225 225 225 225 225 100 25 25 25 3.500

30

25

20

15

10

1 2 3 4 5 6 7 8 9 10 11 12

45
Paso 1
La actividad E:(2,6) es la que posee la fecha más temprana de finali-
zación mayor y su holgura total es de un dı́a, entonces:

Retraso Variación en la suma de cuadrados


1 (202 + 52 ) − (152 + 102 ) = 100
entonces retrasamos la actividad E:(2,6) en una unidad.
Paso 2
A continuación pasamos a estudiar la actividad G:(1,6), pues de entre
las actividades crı́ticas restantes es la que posee la fecha más temprana
de finalización mayor. Como la holgura total disponible de esta actividad
es de dos dı́as, retrasamos su finalización primero en un dı́a y después
en otro, comprobando la repercusión que tiene esta acción en la suma
de los cuadrados de las cargas.
Retraso Variación en la suma de cuadrados
1er dı́a (302 + 102 ) − (252 + 152 ) = 150
2o dı́a (302 + 102 ) − (252 + 152 ) = 150
Conviene retrasar la ejecución de la actividad G:(1,6) en dos dı́as, pues
de esta forma la suma de los cuadrados de las cargas desciende en 300
unidades.
A continuación aplicamos el mismo porceso a la actividad I:(1,6), re-
sultando conveniente un retraso en su finalización de diez dı́as, pues de
esta forma conseguimos disminuir la suma de los cuadrados de las cargas
en 400 unidades.
Retraso Variación en la suma de cuadrados
1er dı́a (252 + 152 ) − (152 + 252 ) = 0
2o dı́a (252 + 152 ) − (152 + 252 ) = 0
3er dı́a (252 + 152 ) − (152 + 252 ) = 0
4o dı́a (252 + 152 ) − (152 + 252 ) = 0
5o dı́a (252 + 152 ) − (152 + 252 ) = 0
6o dı́a (252 + 152 ) − (152 + 252 ) = 0
7o dı́a (252 + 152 ) − (152 + 252 ) = 0
8o dı́a (252 + 152 ) − (152 + 252 ) = 0
9o dı́a (252 + 52 ) − (152 + 152 ) = 200
10o dı́a (252 + 52 ) − (152 + 152 ) = 200
Y ya hemos terminado porque hemos obtenido la solución óptima
(hemos nivelado al máximo los recursos), como puede verse en el dia-

46
grama de cargas:

30

25

20

15

10

1 2 3 4 5 6 7 8 9 10 11 12

En este ejemplo ha bastado efectuar un único ciclo de iteraciones para


llegar no sólo a una situación en la que no es posible disminuir la suma
de los cuadrados de las cargas sino a la que es la “solución óptima”, pues
las cargas diarias son constantes, es decir, la varianza es cero.
En la siguiente tabla indicamos las cargas diarias, los cuadrados de las
cargas diarias ası́ como la suma de los cuadrados de las cargas en todo
el proceso.

47
carga2
P
1 2 3 4 5 6 7 8 9 10 11 12
30/900 30/900 20/400 15/225 15/225 15/225 15/225 15/225 10/100 5/25 5/25 5/25 3.500
15/225 10/100 3.400
25/625 15/225 3.250
25/625 15/225 3.100
15/225 25/625 3.100
15/225 25/625 3.100
15/225 25/625 3.100
15/225 25/625 3.100
15/225 25/625 3.100
15/225 25/625 3.100
15/225 25/625 3.100
15/225 25/625 3.100
15/225 15/225 2.900
15/225 15/225 2.700

El calendario óptimo de ejecución será:

A
C
D
F
H

1 2 3 4 5 6 7 8 9 10 11 12

15 15 15 15 15 15 15 15 15 15 15 15

48
La asignación de recursos
El objetivo es minimizar la duración del proyecto, de forma que en
ninguno de los perı́odos de tiempo en los que se ejecuta el proyecto el
consumo de algún recurso supere las disponibilidades del mismo.
Obsérvese que, por primera vez, contemplamos la posibilidad de que
no tengamos recursos suficientes para que el proyecto se ejecute en el
tiempo PERT previsto.
Para explicar la asignación de recursos nos apoyaremos en el mismo
ejemplo modificándolo ligeramente. Ahora consideraremos que las necesi-
dades de mano de obra son: las de las actividades B, E, y G, de 3 obreros;
las de las actividades A, C y F de 5 obreros y las de las actividades D,
H, e I de 9 obreros.
Como en la nivelación, supondremos que estamos interesados únicamente
en el recurso mano de obra y que las disponibilidades de éste se estiman
en 12 obreros por dı́a.
Calculemos la carga diaria y el diagrama de carga correspondientes al
calendario de ejecución basado en las fechas más tempranas.

49
A 5

C 5

D 9

F 5

H 9

B 3

E 3

G 3

I 9

1 2 3 4 5 6 7 8 9 10 11 12

1 2 3 4 5 6 7 8 9 10 11 12 DÍAS
20 200 11 11 11 11 11 15 12 5 9 9 CARGA

20

19

18

17

16

15

14

13

12

11

10

1 2 3 4 5 6 7 8 9 10 11 12

50
A la vista del diagrama está claro que este calendario no se podrá
cumplir, pues necesitarı́amos más recursos los dı́as 1, 2 y 8.
Por ello hemos de modificar el calendario de ejecución, lo cual puede
repercutir en un retraso en la terminación del proyecto.
El objetivo de los métodos de asignación de recursos constirá en obtener
un nuevo calendario de ejecución que haga mı́nima la duración del proyecto,
satisfaciendo las restricciones impuestas por las disponibilidades de los
recursos.
Es decir, la asignación de recursos busca el calendario de duración
mı́nima en el que se cumpla que los consumos diarios (cargas) de los
recursos que estamos estudiando no superen las disponibilidades de los
mismos.
Igualmente a lo que ocurrı́a con la nivelación de recursos, el método
que se emplea en la asignación de recursos consiste en retrasar la eje-
cución de las actividades, con respecto a sus fechas más tempranas, den-
tro de lo que permitan sus holguras.
Asimismo, para buscar soluciones exactas acudiremos a la progra-
mación, obteniendo problemas de enorme dimensión, por lo que también
describiremos métodos heurı́sticos que, aunque no garantizan soluciones
óptimas, nos dan buenas soluciones en poco tiempo.

LA ASIGNACIÓN DE RECURSOS COMO UN PROBLEMA DE


PROGRAMACIÓN MATEMÁTICA
El modelo de programación matemática que hemos desarrollado para
la nivelación es suceptible de poder aplicarse, después de algunas modi-
ficaciones, a este problema de asignación de recursos.
En primer lugar, hemos de tener en cuenta que, ahora, p tomará un
valor que, siendo mayor o igual que la duración prevista del proyecto,
nos garantiza una solución posible.
Por lo tanto, p va a ser una cota superior de la duración óptima del
proyecto, con nuestras limitaciones en los recursos.
Las restricciones del problema de asignación de recursos serán las mis-
mas que las del problema de nivelación, agregando un nuevo conjunto
de restricciones que nos garantice que los consumos de los diferentes re-
cursos en cada uno de los perı́odos de tiempo no serán superiores a las
disponibilidades que existan de los mismos.
Si representamos por aik la disponibilidad del recurso i-ésimo en el

51
perı́odo k-ésimo, se tendrá que cumplir:
X m
cij xjk ≤ aik , i = 1, 2, . . . , r, k = 1, 2, . . . , p
j=1
el añadir esta nueva condición supone incluir en el modelo rp restric-
ciones más.
La mayor diferencia en los modelos de asignación y nivelación reside
en la estructura de la función objetivo.
En este caso el objetivo es encontrar un calendario de ejecución que,
cumpliendo las correspondientes restricciones, minimice la duración del
proyecto.
Una forma de expresar este objetivo es la siguiente:
Xm m
X m
X
min α1 xj1 + α2 xj2 + . . . + αp xjp
j=1 j=1 j=1
siendo α1 < α2 < . . . < αp .
Obviamente esta función del objetivo nos asegura una duración del
proyecto mı́nima, pues cuando haya que elegir entre ejecutar una activi-
dad en el perı́odo s o en el perı́do t (siendo ambas elecciones compatibles
con las restricciones y siendo s < t), elegirá realizarla en el perı́odo s.

Obsérvese que las dimensiones de los problemas de asignación de re-


cursos son mayores aún que en los problemas de nivelación. En nuestro
ejemplo ha aumentado el número de variables y el de restricciones:
• m y Q no han variado (valen 9 y 7, respectivamente), pero sı́ ha
variado p, al que hemos de dar un valor suficientemente alto para que el
problema tenga solución (por ejemplo, 20). Por lo tanto, el número de
variables ahora será 180.
• Hemos creado un nuevo grupo de restricciones lo cual, en nuestro
ejemplo, suponen 3mp-m+(p-1)Q+rp=684 restricciones.
Como ocurrı́a en la nivelación, la dimensión “real” de los problemas
de asignación disminuye al estar algunas variables determinadas de an-
temano. La existencia de variables con valores determinados a priori se
debe, en este caso, únicamente a que ninguna actividad puede comenzar
a ejecutarse antes de su fecha más temprana de comienzo, por lo que la
reducción en la dimensión del modelo de asignación de recursos no es
tan considerable como en el caso de la nivelación de recursos.

52
ALGORITMO HEURÍSTICO PARA LA ASIGNACIÓN DE RECURSOS
La idea de este algoritmo es la de asignar los recursos, perı́odo por
perı́odo.
En el primer perı́odo se programarán todas las actividades que se
puedan ejecutar en el mismo, siempre que no se superen las disponibili-
dades existentes del recurso. A continuación se procede de igual forma
con los demás perı́odos y ası́ sucesivamente. Cuando las disponibilidades
de un perı́odo no cubren la carga del mismo, se dará preferencia de
realización a las actividades que dispongan de menos holgura.
En resumen, el algoritmo quedarı́a ası́:
Paso 1
Hacer un estudio PERT del proyecto y obtener el calendario en el que
todo ocurre lo más pronto posible.
Hacer T=1.
Paso 2
Determinar el conjunto de actividades elegibles “AE”, es decir, el con-
junto de actividades que no están definitivamente programadas, y que
son tales que todas las que las preceden ya están totalmente progra-
madas.
Paso 3
Determinar el conjunto ordenado de actividades elegibles “OAE”: las
actividades elegibles se ordenarán en orden creciente de sus “holguras
restantes” para T, es decir, la holgura de la correspondiente actividad si
empezara a ejecutarse en T.
En caso de empate, orden arbitrario.
Paso 4
Obtener por orden las actividades del conjunto OAE que se pueden
ejecutar en el perı́odo T sin sobrepasar el nivel de recursos disponibles.
Modificar, si es preciso, el tiempo de comienzo de cada actividad del
conjunto OAE.
Actualizar el nivel de recursos.
Obtener el nuevo conjunto AE y las holguras restantes para T+1.
Paso 5
Si todas las actividades han sido programadas: fin del algoritmo.
En otro caso, hacer T=T+1 e ir al paso 3.

Veámoslo en el ejemplo ya propuesto anteriormente:

53
HIJK
ONML
2
uu: E,7
uu
B,2uuuu
uu
uu
uu
HIJK
ONML / ONML
HIJK / HIJK
ONML / HIJK
ONML ) HIJK
/ ONML / OHIJK
NML
uu A,3 C,4 D,2 F,1 H,2
1 3 4 5 5 6 9 7

G,8

I,2

Indicamos en una tabla las holguras de las actividades del proyecto:

Actividad B:(1,2) A:(1,3) G:(1,6) I:(1,7) E:(2,6) C:(3,4) D:(4,5) F:(5,6) H:(6,7 )
Holgura 1 0 2 10 1 0 0 0 0

Y el calendario de ejecución del proyecto de fechas más tempranas


(indicando también las necesidades diarias del recurso estudiado).

A 5

C 5

D 9

F 5

H 9

B 3

E 3

G 3

I 9

1 2 3 4 5 6 7 8 9 10 11 12

54
20

19

18

17

16

15

14

13

12

11

10

1 2 3 4 5 6 7 8 9 10 11 12

Paso 1
Una vez hecho el estudio PERT del proyecto y el calendario de fechas
más tempranas, sea T=1.
Paso 2
AE={A,B,G,I}
Paso 3
HA = 0
HB = 1
HG = 2
HI = 10
entonces OAE={A,B,G,I}
Paso 4
Las actividades que se pueden ejecutar en T=1 son: A,B,G

55
Recursos utilizados 11<12
entonces
A comienza en 1
B comienza en 1
G comienza en 1
El próximo nivel de recursos es 12.

T=2
AE={A,B,G,I}
HA = −1
HB = 0
HG = 1
HI = 9
OAE={A,B,G,I}
Pueden ejecutarse en T=2 las actividades: A, B, G.
Recursos 11<12
B terminada
Próximo nivel de recursos 12.

T=3
AE={A,E,G,I}
HA = −2
HE = 1
HG = 0
HI = 8
OAE={A,G,E,I}
Pueden ejecutarse en T=3 las actividades: A, G, E.
Recursos 11<12
A terminada
E comienza en 3.
Próximo nivel de recursos 12.

T=4
AE={G,I,C,E}
HG = −1
HI = 7
HE = 0

56
HC = 0
OAE={G,E,C,I}
Pueden ejecutarse en T=4 las actividades: G, E, C.
Recursos 11<12
C comienza en 4.
Próximo nivel de recursos 12.

T=5
AE={G,E,C,I}
HG = −2
HI = 6
HE = −1
HC = −1
OAE={G,E,C,I}
Pueden ejecutarse en T=5 las actividades: G, E, C.
Recursos 11<12
Próximo nivel de recursos 12.

T=6
AE={G,E,C,I}
HG = −3
HI = 5
HE = −2
HC = −2
OAE={G,E,C,I}
Pueden ejecutarse en T=6 las actividades: G, E, C.
Recursos 11<12
Próximo nivel de recursos 12.

T=7
AE={G,E,C,I}
HG = −4
HI = 4
HE = −3
HC = −3
OAE={G,E,C,I}
Pueden ejecutarse en T=7 las actividades: G, E, C.

57
Recursos 11<12
C terminada
Próximo nivel de recursos 12.

T=8
AE={G,E,I,D}
HG = −5
HE = −4
HI = 3
HD = −0
OAE={G,E,D,I}
Pueden ejecutarse en T=8 las actividades: G, E.
Recursos 6<12
G terminada
Próximo nivel de recursos 12.

T=9
AE={E,D,I}
HE = −5
HD = −1
HI = 2
OAE={E,D,I}
Pueden ejecutarse en T=9 las actividades: E,D.
Recursos 12≤12
E terminada
D comienza en 9
Próximo nivel de recursos 12.

T=10
AE={D,I}
HD = −2
HI = 1
OAE={D,I}
Pueden ejecutarse en T=10 la actividad D.
Recursos 9<12
D terminada
Próximo nivel de recursos 12.

58
T=11
AE={I,F}
HI = 0
HF = −1
OAE={F,I}
Pueden ejecutarse en T=11 la actividad F.
Recursos 5<12
F comienza en 11
F terminada
Próximo nivel de recursos 12.

T=12
AE={I,H}
HI = −1
HH = −1
OAE={I,H}
Pueden ejecutarse en T=12 la actividad I.
Recursos 9<12
I comienza en 12
Próximo nivel de recursos 12.

T=13
AE={I,H}
HI = −2
HH = −2
OAE={I,H}
Pueden ejecutarse en T=13 la actividad I.
Recursos 9<12
I terminada
Próximo nivel de recursos 12.

T=14
AE={H}
HH = −3
OAE={H}
Pueden ejecutarse en T=14 la actividad H.

59
Recursos 9<12
H comienza en 14
Próximo nivel de recursos 12.

T=15
AE={H}
HH = −4
OAE={H}
Pueden ejecutarse en T=15 la actividad H.
Recursos 9<12
H terminada

Todas las actividades están definitivamente programadas: fin del al-


goritmo.
El calendario de ejecución del proyecto y el diagrama de cargas queda
como sigue:

60
A
C
D
F
H

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Días

11 11 11 11 11 11 11 6 12 9 5 9 9 9 9 Carga Diaria

12

11

10

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

61