Evaluación de riesgo en el cronograma con VBA Excel

Este tema es más aplicable a la gestión de proyectos, específicamente para la gestión del riesgo en el plazo donde uno de los elementos a controlar es la certeza del cronograma que se elabora.

Dependiendo del nivel de descomposición del trabajo para cada actividad se estima un tiempo de duración y, de la culminación de cada actividad (o de parte de ella), depende el inicio de una o más actividades(según el secuenciado de actividades).

La definición de la duración de las actividades se hace mediante Estimación Análoga, el Juicio de Expertos, Estimación por 3 valores, etc. esto último se enmarca dentro de la técnica conocida como PERT-CPM. Para el conjunto de actividades y su correspondiente secuenciado, es posible obtener estimaciones en base a los cálculos de las varianzas de la ruta crítica que nos sirvan para una evaluación del cronograma. En este caso se asume que la duración del proyecto se ajusta a una distribución normal.

El método PERT utiliza tres estimaciones para definir un rango aproximado de duración de una actividad.
  • duración más probable (tm)
  • duración optimista (to)
  • duración pesimista (tp)
La duración esperada se calcula con:  te = (to + 4 tm + tp) / 6

Esto es aplicable a las actividades para las que se espera que su duración tenga un comportamiento del tipo PERT. Es posible que algunos procesos no tienen un comportamiento PERT sino que podrían tener un comportamiento del tipo triangular para el cual:  te = (to + tm + tp) / 3. También se podrá estimar un comportamiento uniforme para otros tipos de procesos, es decir que cualquier tiempo de duración tenga la misma probabilidad de ocurrencia en un rango determinado, y así se podrán identificar otros comportamientos.

Entonces lo que en verdad puede esperarse es que un cronograma de proyecto esté conformado por un conjunto de actividades entre las cuales unas actividades tengan un comportamiento PERT otras tengan un comportamiento lineal, algunas que tengan un comportamiento fijo o constante, etc.  Una buena opción para evaluar este cronograma es aplicando la simulación de Montecarlo que consiste en dar a cada actividad una duración dentro del rango de estimación y, con la secuencia que las interrelaciona, determinar una duración total del proyecto.

En estricto la simulación de Montecarlo aplicable a cualquier campo donde se requiere evaluar el riesgo tiene el siguiente proceso:

1. Diseñar el modelo lógico de decisión
2. Especificar distribuciones de probabilidad para las variables aleatorias relevantes.
3. Incluir posibles dependencias entre variables.
4. Muestrear valores de las variables aleatorias.
5. Calcular el resultado del modelo según los valores del muestreo (iteración) y registrar el resultado.
6. Repetir el proceso hasta tener una muestra estadísticamente representativa.
7. Obtener la distribución de frecuencias del resultado de las iteraciones.
8. Calcular media, desvío y curva de percentiles acumulados.

Las repeticiones de escenarios pueden ser de miles obteniendo tantas duraciones totales con las cuales se hace un cálculo estadístico que nos dirá la duración más frecuente, la que ocurre con una certeza de 100%, 90% 80% etc. y por lo tanto, si se tiene predefinido una duración T, podemos saber cuál es la certeza de que el cronograma cumpla con esta duración.

Las decisiones respecto a los resultados de la evaluación podrían ser las siguientes:
  • Si la duración total T calculada originalmente tiene una certeza de que se cumpla de 50%, hay que recalcular el cronograma o cambiar T por una duración con mayor certeza, por ejemplo mayor a 70%
  • Si la duración total T calculada originalmente tiene una certeza de que se cumpla de 90%, quizás puede uno sentirse más seguro.
  • etc.
Implementación en Excel

Debemos considerar que con cada cambio de las duraciones de las actividades interrelacionadas del proyecto se producirá una duración total. Resolver mediante fórmulas en celdas estos cálculos no es práctico más aún si debemos almacenar miles de duraciones para un postproceso, aquí es mejor recurrir a la programación mediante VBA y usar el excel como interfase para la introducción de datos y la presentación de resultados.

Un tipo de presentación puede ser el siguiente:


En una hoja deben indicarse las actividades y sus predecesoras y, una vez aplicado el proceso de calcular las duraciones para la cantidad de escenarios que se deseen, se puede visualizar los resultados con la siguiente presentación:


Teniendo definidas las formas en que se interrelacionan las actividades (secuenciado) se puede programar el cálculo de los tiempos de inicio y fin más tempranos y más tardíos de cada actividad y con esto encontrar la duración total del proyecto.

En el caso de cada actividad debe calcularse una duración aleatoria que cumpla con la característica que la defina. Es decir definir la distribución aleatoria que mejor represente su duración.

La distribución beta con los adecuados parámetros se ajusta a las probabilidades de duración, para el caso del método PERT, la distribución beta se presenta según lo siguiente:

Por ejemplo: sea una actividad con duración más optimista= 6, duración más pesimista= 16,

si la duración más probable es 13 la distribución beta adoptará la forma asimétrica a la derecha
si la duración más probable es 9 la distribución beta adoptará la forma asimétrica a la izquierda


Una vez determinados los parámetros para la distribución beta lo siguiente es ajustar para cada valor aleatorio entre 0 y 1 la duración de la actividad. Una propuesta de parámetros que produce la suficiente aproximación es:

p = 1 + 4.mo     q = 1 + 4.(1 - mo)

con    mo = (tm - to) / (tp - to)

En el Paper: Teaching Project Simulation in Excel Using PERT-Beta Distributions de Ron Davis, se expone unas ecuaciones que presentan una mejor aproximación:

        mo = (2 / 3 / (tp - to)) * (1 + 4 * (tm - to) * (tp - tm) / (tp - to) ^ 2)
        p = (tp + 4 * tm - 5 * to) * mo
        q = (5 * tp - 4 * tm - to) * mo

para el caso de la distribución triangular el ajuste de un numero aleatorio se puede hacer con las ecuaciones:

para a < (tm - to) / (tp - to)   d = to + raiz(a (tp - to) (tm - to))
para a >= (tm - to) / (tp - to)   d = tp - raiz((1- a) (tp - to) (tp - tm))

el caso en que una actividad tenga como duración cualquier tiempo entre dos valores mínimo y máximo es más simple y desde el número aleatorio a solo hay que aplicar:

d = (tmax - tmin).a + tmin  que corresponde a una distribución uniforme.

Un aplicativo que recoge lo explicado líneas arriba se puede descargar con el siguiente enlace:


algunas vistas de su presentación:



En la columna de distribuciones se hace click derecho para escoger el tipo de distribución:




Un cuadro de diálogo para cada tipo de distribución ayuda a introducir los parámetros:



Es todo por hoy.