Logo Studenta

Programação de Projetos com Restrição de Tempo

¡Este material tiene más páginas!

Vista previa del material en texto

PROGRAMACIÓN DE MULTIPLES PROYECTOS CON TIEMPO RESTRINGIDO 
MINIMIZANDO COSTOS DE RECURSOS 
 
 
 
 
 
 
ILMER ANDREY CAÑÓN DÍAZ 
 
 
DIRECTOR: 
JOSE FIDEL TORRES 
 
 
 
JURADOS: 
CARLOS EDUARDO MONTOYA CASAS 
DAVID ÁLVAREZ MARTÍNEZ 
 
 
 
 
 
 
UNIVERSIDAD DE LOS ANDES 
FACULTAD DE INGENIERÍA 
DEPARTAMENTO DE INGENIERÍA INDUSTRIAL 
JUNIO DE 2017 
PROGRAMACIÓN DE MULTIPLES PROYECTOS CON TIEMPO RESTRINGIDO 
MINIMIZANDO COSTOS DE RECURSOS 
Ilmer Andrey Cañón Díaz 
Departamento de Ingeniería Industrial, Universidad de los Andes, Bogotá, Colombia 
 
Resumen 
Este artículo presenta la propuesta de una variante del problema conocido como Resource 
Availability Cost Problem y la implementación de un algoritmo heurístico basado en redes de Petri 
y el algoritmo Beam A* Search. El objetivo es determinar un agendamiento de las actividades y la 
asignación de recursos que permita cumplir con la fecha límite de entrega del proyecto. Las 
actividades del proyecto requieren una cantidad de diferentes tipos de recurso y se deben respetar 
las relaciones de precedencia entre las actividades. La motivación de utilizar redes de Petri y el 
algoritmo Beam A* Search se da porque este enfoque ha sido utilizado con éxito en otro tipo de 
problemas de proyectos. El método propuesto se comparó con uno de los algoritmos heurísticos de 
mejor desempeño en la literatura sin que éste resultase competitivo en el grupo de instancias de 
prueba. Los resultados son reportados y se realizan recomendaciones para trabajo futuro. 
 
Aspectos Destacados y Principales Aportes 
Se realizó una revisión bibliográfica extensa en la que se determinó que no se encuentra una variante 
del problema RACP que comprendiera un ambiente de múltiples proyectos, así que se propone dicha 
variante en el presente trabajo. Se propuso un algoritmo basado en redes de Petri y el algoritmo 
Beam A* Search, lo cual no había sido utilizado para la solución del problema RACP. Experimentos 
computacionales fueron realizados para comprobar el desempeño del método propuesto. Se propone 
el modelo matemático para el problema RACP multi proyecto teniendo en cuenta las condiciones 
explicadas en la descripción del problema. Se tomaron instancias de la literatura para el RCPSP 
multi proyecto y se adaptaron a las condiciones del problema aquí propuesto. Adicionalmente se 
proponen instancias de elaboración propia. Utilizando el optimizador Gurobi, de las instancias 
propias como de las adaptadas de la literatura se cuenta con soluciones óptimas obtenidas de la 
implementación del modelo matemático. Esta información puede ser utilizada en futuras 
investigaciones. 
 
Palabras Clave: Red de Petri, Beam A* Search, Resource Availability Cost Problem (RACP). 
 
 
 
 
Tabla de contenido 
 
1. INTRODUCCIÓN ..................................................................................................................... 4 
2. DESCRIPCIÓN DEL PROBLEMA .......................................................................................... 5 
3. OBJETIVOS .............................................................................................................................. 8 
3.1. Objetivo General ................................................................................................................. 8 
3.2. Objetivos Específicos ......................................................................................................... 8 
4. MARCO TEÓRICO ................................................................................................................... 9 
4.1. Revisión Bibliográfica ........................................................................................................ 9 
5. METODOLOGÍA .................................................................................................................... 15 
5.1. Propuesta del Modelo Matemático Multiproyecto ........................................................... 15 
5.2. Modelamiento mediante Redes de Petri ........................................................................... 18 
5.3. Algoritmo Beam A* Search ............................................................................................. 19 
5.4. Estructura del Algoritmo de Solución Propuesto ............................................................. 21 
6. RESULTADOS ........................................................................................................................ 26 
6.1. Instancias de prueba .......................................................................................................... 26 
6.2. Comparación de Resultados para el RACP de un proyecto ............................................. 28 
6.3. Resultados en Instancias RACP Multiproyecto ................................................................ 32 
7. CONCLUSIONES ................................................................................................................... 36 
7.1. Conclusiones ..................................................................................................................... 36 
7.2. Recomendaciones para Trabajo Futuro ............................................................................ 37 
8. BIBLIOGRAFÍA ..................................................................................................................... 38 
 
 
 
 
 
 
 
 
1. INTRODUCCIÓN 
 
La programación de proyectos ha sido estudiada cada vez con mayor atención en los últimos 50 
años (Weglarz et. al. 2010) debido a sus diversas aplicaciones prácticas y al interés que han puesto 
en los diferentes problemas los investigadores dada su llamativa complejidad. Así pues, el desarrollo 
que ha mostrado el estudio de esta temática se ha dirigido tanto al modelamiento adecuado de 
condiciones más realistas en los problemas de proyectos como a generar más y mejores métodos de 
solución. 
La aplicación práctica de la programación de proyectos con tiempo restringido minimizando el costo 
de los recursos se dio desde la concepción del llamado Resource Availability Cost Problem (RACP) 
propuesto por Mohring, (1984) al enfrentarse a dicho problema real en la construcción de un puente, 
mientras otros autores señalan que su aplicabilidad se extiende no solo a proyectos de construcción 
sino a problemas de administración de personal (Jedrzejowicz y Ratajczak-Ropel, 2012), a 
proyectos de ingeniería de diseño de autopartes (Hsu y Kim, 2004) pero aún más importante, de 
acuerdo con Drexl & Kimms (2001), la solución de este problema sujeto a diferentes tiempos límite 
da una idea del balance de acuerdos que puedan pactarse en términos de costo y tiempo, por lo cual, 
este problema puede brindar información muy preciada dado que permite estimar el precio de 
negociación que tendrá un proyecto. 
Por otra parte, de acuerdo con diversas investigaciones, se ha establecido que las empresas 
normalmente no realizan un solo proyecto a la vez, sino que desarrollan un conjunto de proyectos 
al mismo tiempo. Según Payne (1995), el 90% de los proyectos se generan y desarrollan en 
contextos de múltiples proyectos. Los proyectos simultáneos pueden incluso (dependiendo de la 
situación) requerir diversos tipos de recursos en común, por lo cual, la toma de decisiones en cuanto 
a la asignación de recursos, el inicio de las actividades y el tiempo de ejecución de los proyectos se 
convierte en una tarea compleja. 
El problema de minimización del costo de los recursos (RACP), a pesar tener un objetivo distinto 
al tradicional, está estrechamente relacionado con éste (programación de proyectos en donde dadas 
las condiciones del problema en cuanto a recursos limitados y precedencias de actividades se busca 
minimizar el tiempo de ejecución total del proyecto). Aun así, con las similitudes existentes y con 
la aplicabilidad práctica que en la industria tiene el Resource Availability CostProblem, éste 
problema ha recibido poca atención y la literatura existente acerca de este problema es escasa (Zhu 
et. al, 2016). 
A este respecto se puede resumir la literatura más relevante acerca del RACP con la aplicación de 
cuatro algoritmos exactos: Mohring, 1984. Demeulesmeester, 1995. Rangaswamy, 1998. Rodriguez 
y Yamashita, 2010. El cálculo de cotas inferiores propuesto por Drexl & Kimms (2001) y el 
desarrollo de ocho algoritmos entre heurísticos y metaheurísticos: Yamashita & Armentano, 2006. 
Shadrokh & Kianfar, 2007. Ranjbar, Kianfar & Shadrokh, 2008. Peteghem & Vanhoucke, 2012 y 
2013. Hsu & Kim, 2005. Qi, Liu & Jiang, 2015. Zhu, Ruiz y demás: 2016. 
Cabe agregar que los mencionados autores han realizado sus trabajos para el problema RACP 
consistente de un único proyecto, además algunos contemplaron variantes como múltiples modos, 
tardanza permitida y escenarios estocásticos, sin embargo, ninguno de ellos ha estudiado la 
extensión del problema a múltiples proyectos. 
2. DESCRIPCIÓN DEL PROBLEMA 
 
En este trabajo se busca dar solución a través del desarrollo de un algoritmo heurístico, al problema 
de minimización del costo total de los diversos recursos renovables necesarios para la ejecución de 
múltiples proyectos en los cuales el tiempo es limitado, es decir, se cuenta con fecha límite de 
terminación o entrega de cada uno de los proyectos. 
El problema mencionado ha sido abordado sólo en contextos de un único proyecto y se conoce en 
la literatura como Resource Availability Cost Problem. Éste fue propuesto por Mohring (1984) 
inicialmente como Resource Investment Problem1. Mohring realizó una clasificación de los 
problemas de programación de proyectos definiendo las siguientes categorías: 
 
1. Problema de escasez de recursos: en el cual se tiene un límite en la cantidad de recursos 
disponibles para la realización de las actividades del proyecto y se pretende encontrar la 
duración mínima que tendría el proyecto dada la condición de recursos limitados. 
2. Problema de Tiempo Limitado: en este problema se tiene el supuesto de contar con 
cantidades ilimitadas de recursos pero un tiempo límite en el cual debe terminar la ejecución 
del proyecto, por lo cual se busca encontrar el mínimo costo total de recursos necesarios 
para ejecutar el proyecto en el tiempo límite. 
El problema de minimización de costos de los recursos (RACP) se ubica en la segunda categoría 
mencionada anteriormente y consiste2 en un proyecto el cual está compuesto de N+2 actividades (N 
actividades propias del proyecto y 2 actividades ficticias que son utilizadas para representar el inicio 
y la finalización del proyecto siendo éste último modelado mediante un grafo de actividades sobre 
nodos). Las actividades están sujetas a un conjunto de relaciones de precedencia, cada una de ellas 
tiene un tiempo de duración determinístico definido y requieren una cantidad fija de diversos 
recursos renovables a lo largo de su duración. Por último, como parámetro de entrada del problema 
se tiene un tiempo límite de terminación del proyecto (debe ser mayor o igual a la duración de la 
ruta crítica del proyecto). 
El objetivo en este problema es encontrar la programación de todas las actividades del proyecto de 
tal manera que se respeten las relaciones de precedencia de las actividades, el tiempo de ejecución 
del proyecto sea menor o igual a la fecha límite de entrega y se logre minimizar el costo total de los 
recursos necesarios para el desarrollo del proyecto. 
 
1 Hsu, C. Kim, D. A New Heuristic For The Multi-Mode Resource Investment Problem. Journal Of The Operational 
Research Society. P 406-413. 2005. 
2 Demeulemeester, E. Minimizing Resource Availability Costs In Time-Limited Project Networks. Management 
Scinence Vol. 41, No. 10. 1995. 
Entre los supuestos3 del problema se tienen: 
 No hay prelación o prioridad en la ejecución de las actividades y su desarrollo está sujeto 
únicamente a sus relaciones de precedencia. 
 Una vez una actividad inicia, ésta se ejecuta sin interrupción hasta ser terminada. 
 Los parámetros del problema, tales como los tiempos de ejecución y la cantidad de recurso 
de cada tipo requerido por cada actividad son valores determinísticos positivos que no 
varían en el tiempo. 
 Existe un único modo en que se realizará cada actividad (single-skill). 
 Se asume que el costo total de un recurso k (𝐶𝑘 ∗ 𝑎𝑘) depende de la disponibilidad 𝑎𝑘 de 
dicho recurso, sin considerar si el recurso es o no utilizado por las actividades, por lo tanto, 
el menor costo de disponibilidad de recurso 𝐶𝑘 ∗ 𝑎𝑘 es establecido por la disponibilidad para 
cada tipo de recurso k. Esto quiere decir que un recurso es asignado a un proyecto durante 
toda su duración (el recurso está disponible en toda la ejecución y ésta es la que genera 
costo), entonces se tendrá un costo total a nivel general que dependerá de la cantidad de 
recurso que se asigna al proyecto para toda su duración. 
La formulación del modelo matemático4y5 para el problema teniendo en cuenta un único proyecto 
con las condiciones y supuestos mencionados es la siguiente: 
𝑰𝒏𝒅𝒊𝒄𝒆𝒔 
j: actividades. j=0 y j=N+1 son actividades ficticias que representan la actividad inicial y la 
actividad final del proyecto respectivamente siendo N el número de actividades propias (reales) del 
proyecto. 
k: índice para el tipo de recurso. k = 1…K con K recursos totales. 
t: índice relacionado con el tiempo (unidad de tiempo depende del contexto del proyecto). t = 
0,1,2,3…T (tiempo límite). 
𝑷𝒂𝒓á𝒎𝒆𝒕𝒓𝒐𝒔 
T: fecha de entrega o tiempo límite de entrega/terminación del proyecto. 
Ck: costo unitario del recurso tipo k. 
dj: duración de la actividad j. 
rkj: cantidad de recurso tipo k requerido para la ejecución de la actividad j. 
 
3 Vanhoucke, M. Project Management With Dynamic Scheduling. Cap 8. Resource Constrained Scheduling 
Extensions. P 141-174. Springer-Verlag Berlin Heidelberg. 2012. 
4 Rodriguez, S. Yamashita, D. Exact Methods for the Resource Availablity Cost Problem. Handbook on Project 
Management and Scheduling. Vol 1. Cap 15. Springer International Publishing Switzerland. 2015. 
5 Hsu, C. Kim, D. A New Heuristic For The Multi-Mode Resource Investment Problem. Journal Of The Operational 
Research Society. P 406-413. 2005. 
Pj: conjunto de predecesores inmediatos de la actividad j. 
𝑽𝒂𝒓𝒊𝒂𝒃𝒍𝒆𝒔 𝒅𝒆 𝑫𝒆𝒄𝒊𝒔𝒊ó𝒏 
𝑋𝑗𝑡: variable binaria. Toma valor de 1 si la actividad j inicia en el tiempo t. 0 de lo contrario. 
𝑅𝑘: variable que indica la cantidad unidades de recurso tipo k requeridas en el proyecto (cantidad 
disponible de recurso tipo k que se debe asignar a lo largo del proyecto). 
 
𝑀𝑖𝑛 ∑ 𝐶𝑘𝑅𝑘
𝑘 𝑒𝑛 𝐾
 
Sujeto a: 
∑ 𝑋𝑗𝑡
𝑡∈{0..𝑇}
= 1 ∀ 𝑗 𝑒𝑛 𝐽 (1) 
∑ 𝑋𝑁𝑡 ∗ 𝑡
𝑡∈{0..𝑇}
≤ 𝑇 ∀ 𝑗 𝑒𝑛 𝐽 (2) 
∑ ∑ 𝑟𝑘𝑗 ∗ 𝑋𝑗𝑦
𝑡
𝑦=(𝑡−𝑑𝑗)
+𝑗 𝑒𝑛 𝐽
≤ 𝑅𝑘 ∀ 𝑗 𝑒𝑛 𝐽, 𝑡 𝑒𝑛 (0… 𝑇) | 𝑦 > 0 (3) 
∑ (𝑡 + 𝑑𝑖) ∗ 𝑋𝑖𝑡
𝑡∈{0..𝑇}
≤ ∑ 𝑡 ∗ 𝑋𝑗𝑡
𝑡∈{0..𝑇}
 ∀ 𝑗 𝑒𝑛 𝐽, 𝑖 ∈ 𝑃𝑗 (4) 
𝑋𝑗𝑡 ∈ {0, 1} ∀ 𝑗𝑒𝑛 𝐽, 𝑡 𝑒𝑛 (0…𝑇) (5) 
𝑅𝑘 ≥ 0 ∀ 𝑘 𝑒𝑛 𝐾 𝑐𝑜𝑛 𝑅𝑘 ∈ Ζ+ (6) 
La función objetivo del problema establece la minimización del costo total de los recursos asignados 
al proyecto. La restricción (1) refuerza la condición de que una actividad inicia y se realiza una sola 
vez. La restricción (2) determina que la última actividad del proyecto debe iniciar (y terminar puesto 
que su duración es cero) antes de la fecha límite de entrega del proyecto. La restricción (3) permite 
determinar la cantidad de recurso de cada tipo que debe ser asignada al proyecto (disponibilidad de 
recursos). La restricción (4) permite el cumplimiento de las relacionesde precedencia entre 
actividades. Las restricciones (5) y (6) respectivamente definen la naturaleza binaria de las variables 
de decisión relacionadas con tiempo de inicio de las actividades y la cantidad entera de recurso 
necesaria. 
A la luz de lo mencionado anteriormente con la descripción del problema en casos de un único 
proyecto, cabe mencionar que el trabajo a realizar en este proyecto es estudiar el problema de 
minimización de costos de recursos, extendido a un contexto de múltiples proyectos. 
 
 
Problema RACP Multiproyecto 
Se considera una situación hipotética en la que una empresa planea la realización de múltiples 
proyectos, para los cuales deberá asignar una cantidad de diferentes tipos de recursos comunes a 
utilizar en todos los proyectos. Cada uno de los proyectos cuenta con una fecha límite de entrega y 
está obligada a demostrar la gestión de cada proyecto iniciando máximo cada proyecto también en 
una fecha determinada, por lo cual, si no todos, habrá varios proyectos que se estén ejecutando 
simultáneamente. 
A cada tipo de recurso debe asignarse una cantidad que estará disponible a lo largo de la duración 
de todo el conjunto de proyectos a realizar (desde el momento 0 hasta la entrega del proyecto con 
mayor fecha límite de terminación). Se deben respetar las relaciones de precedencia de las 
actividades de todos los proyectos. Una vez iniciada una actividad, ésta debe ejecutarse por 
completo. No hay preferencias entre actividades y se deben cumplir las fechas de entrega de cada 
proyecto iniciando mínimo en su fecha de inicio preestablecida. 
 
El objetivo de este problema es encontrar la asignación de recursos disponibles para los proyectos 
y el agendamiento de todas las actividades de todo el conjunto de proyectos de tal manera que se 
garantice el cumplimiento de sus fechas de entrega y sea minimizado el costo de disponibilidad de 
los recursos necesarios. En el capítulo Metodología, se establece el modelo matemático para el 
problema descrito. 
 
De acuerdo a la revisión bibliográfica realizada, se estableció que, al iniciar este trabajo, dada la 
escasa bibliografía acerca del problema RACP y a que no se encontraba en la literatura una variante 
que considerara un contexto multi proyecto, se decidió proponer esta variante del problema. 
 
3. OBJETIVOS 
 
3.1. Objetivo General 
 
Diseñar un algoritmo heurístico para resolver el problema de minimización de costos de recursos 
para múltiples proyectos con tiempo restringido mediante un enfoque de modelamiento basado en 
redes de Petri. 
 
3.2. Objetivos Específicos 
 
 Desarrollar el modelo matemático del problema de minimización de costos de recursos en 
múltiples proyectos con tiempo restringido. 
 Proponer el modelo matemático para el problema RACP multi proyecto. 
 Aplicar el algoritmo Beam A* Search para la solución del problema descrito. 
 Validar y comparar el desempeño del algoritmo respecto a otros algoritmos propuestos para 
la solución del problema mencionado en el caso de un solo proyecto. 
 Generar resultados de instancias del problema multiproyecto para que puedan utilizarse en 
futuras investigaciones. 
 Generar conclusiones y proponer recomendaciones para futuras investigaciones. 
4. MARCO TEÓRICO 
 
4.1. Revisión Bibliográfica 
 
Estado del Arte: Variantes y Métodos de Solución del Resource Availability Cost Problem 
 
Citando a Zhu et. al. (2016), se sabe que Mohring (1984) al proponer el problema RACP también 
conocido inicialmente como Resource Investment Problem, desarrolló un método exacto de 
solución basado en algoritmos de teoría de grafos además de que demostró la relación de dualidad 
existente entre el RACP y el problema de programación de proyectos con recursos restringidos 
RCPSP. Posteriormente Demeulemeester (1995) desarrolló un algoritmo basado en Branch & 
Bound en el que generaba un agendamiento de las actividades de tal manera que si la duración total 
sobrepasara la fecha límite de entrega del proyecto se asignaba una unidad adicional de recurso, con 
lo cual el problema se convertía en minimización del makespan con recursos limitados. Se repetía 
el procedimiento hasta que el makespan no supere la fecha de entrega del proyecto. 
 
Rodríguez y Yamashita (2010) desarrollaron una versión mejorada del algoritmo de 
Demeulemeester denomiado MMBA donde las soluciones iniciales eran generadas por una 
heurística logrando también reducir el espacio de búsqueda mejorando la efectividad del método. 
Por otra parte, Drexl & Kimms (2001) propusieron dos cotas inferiores por medio de métodos de 
relajación lagrangiana y generación de columna, además, afirman que la solución del RACP para 
distintas fechas de entrega proporciona información relevante en cuanto al precio de negociación de 
un proyecto. 
 
Yamashita, Armentano y Laguna (2006) propusieron una meta-heurística basada en búsqueda 
dispersa (Scatter Search SS) compuesta por una heurística de mejoramiento para hacer factibles 
soluciones iniciales que no lo son y en seguida es aplicado un procedimiento de vinculación de 
caminos (Path relinking), el cual genera nuevos elementos en la población de búsqueda. Estos 
autores lograron obtener buenos resultados en calidad y tiempo computacional. 
 
Shadrokh & Kianfar (2007) propusieron un algoritmo genético para resolver el RACP con tardanza 
permitida con costos de penalización. Los cromosomas utilizados son representados por una lista de 
prioridad y una lista de disponibilidad de recursos mientras que Ranjbar, Kianfar & Shadrokh (2008) 
propusieron un algoritmo basado en revinculación de caminos (Path Relinking) y un algoritmo 
genético. Las soluciones representadas por listas de actividades son asignadas a un vector y el 
agendamiento es generado usando un esquema basado en el planteado por Burgess & Killebrew 
(1962) donde se busca nivelar el uso de diferentes tipos de recurso. Como resultado obtuvieron que 
el algoritmo Path Relinking superó el desempeño del algoritmo genético. 
 
Peteghem & Vanhoucke (2013) presentaron un algoritmo denominado Artificial Inmune System, el 
cual utiliza mecanismos inspirados en el sistema inmune de los vertebrados. Los autores representan 
los vectores solución como listas de actividades y de capacidad e incluyen una función de 
probabilidad para la lista de capacidad. Los autores logran establecer que su algoritmo supera el 
genético de Shadrokh & Kianfar. Posteriormente en 2015, Peteghem & Vanhoucke proponen aplicar 
un método basado en el comportamiento de la “hierva mala” denominado Invasive Weed 
Optimization6 desarrollado por Mehrabian & Lucas (2006), conservando el uso de las listas 
mencionadas y modificando la búsqueda de acuerdo a la proliferación de semillas de las hiervas en 
que está inspirado el método. Los autores con este algoritmo superan los resultados obtenidos con 
el Artificial Inmune System. 
 
Cabe agregar que en su estudio, Peteghem & Vanhoucke (2013) también proponen una variante del 
problema en el que agregan la posibilidad de no satisfacer la restricción de la fecha de entrega del 
proyecto e incluyen al costo a minimizar, los relacionados a la penalización por la entrega tardía del 
proyecto. 
 
La variante de múltiples modos del RACP fue abordada por Hsu & Kim (2005) utilizando una 
heurística basada en reglas de prioridad para la generación del agendamiento de actividades, donde 
a través del cálculo de una función de prioridad que tiene en cuenta el tiempo faltante del proyecto 
y el mínimo de inversión (costo) selecciona la actividad a desarrollar y el modo en que se realizará. 
 
Los autores Qi, Liu & Jiang (2015) para el problema RACP multi modo presentan un algoritmo 
basado en Particle Swarm Optimization. Inicialmente generan una reparación de soluciones iniciales 
no factibles y posteriormente aplican un proceso modificado de la PSO que la combina con Scatter 
Search. Los autores reportanresultados promisorios de esta variante del problema. 
 
Zhu, Ruiz y demás (2016) proponen un algoritmo heurístico en el que no utilizan el enfoque 
comúnmente observado en la literatura de resolver el RACP solucionando iterativamente un 
problema de recursos limitados (RCPSP), sino que dividen el RACP en dos sub problemas: 
problema de secuenciación y problema de recursos. La heurística propuesta es iterativa multi inicio, 
comenzando por la secuenciación de las actividades y al abordar el problema de recursos realiza 
una eliminación de los picos de recurso existentes. Los autores se comparan con los tres métodos 
considerados los mejores hasta el momento: Scatter Search (Yamashita, 2006), Path Relinking y el 
algoritmo genético (Ranjbar, Kianfar & Shadrokh, 2008) reportando la superación del desempeño 
de estos algoritmos en efectividad y eficiencia7. 
 
En trabajos más recientes, variantes del RACP han sido estudiadas con el objetivo de dar mayor 
realismo al problema, modificando los supuestos mencionados anteriormente. Una de estas 
variantes es propuesta por Afshar-Nadjafi (2014) donde a través de algoritmos de búsqueda 
exhaustiva (GRASP) y la metaheurística recocido simulado (SA) aborda el problema del costo de 
disponibilidad de recursos (RACP) con múltiples modos, contratación y fechas de liberación de 
 
6 Peteghem, V. Vanhoucke, M. Heuristic Methods for the Resource Availability Cost Problem. Handbook on Project 
Management and Scheduling. Vol 1. Capítulo 16. 2015. 
7 X. Zhu et al., An effective heuristic for project scheduling with resource availability cost, European Journal of 
Operational Research. 2016. 
recurso. El problema tiene en cuenta la relajación del supuesto de que los recursos asignados al 
proyecto se contratan para toda la duración del mismo aunque solo sean utilizados en un periodo 
reducido de tiempo, por lo cual, el autor incluye la posibilidad de utilizar un recurso cuando se 
requiere y posteriormente ser liberado, evitando el costo de mantenerlo disponible durante todo el 
proyecto, al mismo tiempo que establece que el costo de contratar un recurso depende del tiempo 
que será utilizado. El objetivo bajo estas condiciones sigue siendo minimizar el costo total de los 
recursos necesarios para desarrollar el proyecto dentro de la fecha límite. 
 
Otra variante fue propuesta por Verbeeck y Van Peteghem, et. al (2016)8. Los autores lo denotan 
problema de programación de proyectos con tiempo restringido (TCPSP), donde la diferencia 
principal con el RACP clásico es que se cuenta con un conjunto de recursos con una determinada 
capacidad fija, tal como en el Resource Constrained Project Scheduling Problem (RCPSP), además 
de una fecha límite de tiempo de entrega, donde el objetivo no es determinar la cantidad de recurso 
necesario a lo largo del proyecto sino decidir la cantidad de recurso de cada tipo, cúando debe ser 
asignada y para cuáles tipos de recurso se requiere adquirir capacidad adicional por encima de la 
capacidad disponible inicialmente. En este sentido el problema tiene como fin minimizar el costo 
total de contratación de recursos adicionales. 
 
Una parte de la literatura existente aborda el Resource Investment Problem con distintas variantes 
tales como RIP/Max, en donde el objetivo es encontrar la máxima tardanza de cada actividad. Para 
resolver este problema Zimmermann & Englehardt (1998) realizaron un algoritmo de ramificación 
y acote basado en ventanas de tiempo, mientras que Nübel (1999) propuso un método de solución 
considerando capacidades de recurso ficticias, con lo cual resolviendo el problema de conflictos de 
recurso solucionaba el agendamiento de las actividades en sus ventanas de tiempo. 
 
Najafi y Seyed (2006)9 proponen un algoritmo genético para la solución del problema RIP de tal 
manera que se logre la asignación de recursos que permita encontrar una agenda que garantice la 
maximización del valor presente neto del proyecto. De acuerdo con Najafi y Seyed (2006), gran 
parte de las variantes del Resource Investment Problem se enfocan en el aspecto financiero cuyo 
objetivo principal en le programación de proyectos es la maximización del valor presente neto. 
Autores como Doersch y Patterson (1977), Grinold (1972) y Russell (1970) consideraron el 
problema con dicho objetivo, proponiendo una variante distinta al problema, tales como fechas de 
entrega, limitación de recursos y demás variantes donde se tiene en cuenta el valor del dinero en el 
tiempo, pagos recibidos a medida que el proyecto progresa, etc. 
 
Red de Petri 
Una red de Petri10 es un grafo bipartito con dos tipos de nodos denominados plazas y transiciones. 
Dichos nodos están conectados a través de arcos dirigidos. Se aclara que los arcos conectan los 
 
8 Verbeeck, C. Van Peteghem, V. Vanhoucke, M. Vansteenwegen, P. A Metaheuristic Solution Approach for the 
Time-Constrained Project Scheduling Problem. Springer-Verlag Berlin Heideberg. 2016. 
9 Najafi, A. Seyed, T.N. A Genetic algorithm for resource investment problema with discounted cash flows. Applied 
Mathematics and Computation 183. 1057-1070. 2006. 
10 W.M.P. Van der Aalst. Petri Net Based Scheduling. OR Spektrum, Springer-Verlag. 1996. 
nodos y éstos deben ser de diferentes tipos. Las plazas contendrán un número determinado de tokens, 
los cuales son disparados por las transiciones a las plazas sucesoras. Las plazas usualmente 
representan acciones o condiciones y las transiciones representan eventos. El número necesario de 
tokens para que una transición sea disparada depende del peso de los arcos de entrada, siendo esto 
la condición de verdad para la acción asociada a su correspondiente plaza. La transición será 
disparada si y sólo si, las plazas de entrada de dicha transición contienen tantos o más tokens como 
indiquen los pesos de los arcos de entrada de la transición en cuestión. 
 
Los arcos conectan las plazas con las transiciones y las transiciones con las plazas, sin que sea 
permitido conectar dos plazas o dos transiciones a través de un arco. Al ser disparada una transición, 
el cambio de estado de la red se registra cuantificando la cantidad de tokens en cada plaza, esto es 
conocido como marcaje11, el cual es definido como un arreglo que contiene en cada posición el 
número de tokens en cada plaza, lo cual representa uno de todos los posibles estados de la red. Se 
dice que un marcaje M’ es alcanzable desde un estado M si y sólo si, existe una secuencia válida de 
transiciones que lleven la red del estado M al M’. 
 
Diversas modificaciones se han propuesto a las clásicas redes de Petri, tales como las 
temporizadas12, redes de Petri con colores13, estocásticas14, con prioridades, etc. Las distintas 
modificaciones propuestas para las redes de Petri se resumen en la figura 1. 
 
Figura 1. Variantes de las Redes de Petri 
 
Fuente: Zhou, K. Zain, A. 2016. 
 
Gran cantidad de sistemas complejos pueden ser modelados y analizados utilizando redes de Petri 
de alto nivel. De acuerdo con Reddy et. al. (2001) y Zhou & Zain (2016), las diversas clases de 
redes de Petri han sido utilizadas exitosamente en modelamiento de prototipos de software, 
 
11 Mejía, G. Montoya, C. Applications of Resource Assignment and Scheduling with Petri Nets and Heuristic Search. 
Springer Science+Business Media. 2010. 
12 Aalst, W.M.P. Petri Net Based Scheduling. OR Spektrum. Springer-verlag. 1996. 
13 Jensen, K. Kristensen, L. Coloured Petri nets: modelling and validation of concurrent systems. Springer, Berlin. 
2009. 
14 Reddy, J. Kumanan, S. Krishnaiah, C. Application of Petri Nets and a Genetic Algorithm to Multi-Mode Multi-
Resource Constrained Project Scheduling. International Journal of Advanced Manufacturing Technology. Springer 
Verlag London.2001. 
protocolos de comunicación (Co, Swami, Chen, 2012), para el diseño de sistemas logísticos y 
organizaciones administrativas, así como redes de Petri temporizadas y con colores se han utilizado 
para modelar sistemas flexibles de manufactura (Ha & Suh, 2008), sistemas de manejo de materiales 
y máquinas en general. 
 
Las redes de Petri también han sido aplicadas en la solución de problemas de secuenciación de 
múltiples proyectos con recursos limitados RCMPSP, como es el caso de Zhuang, Song et. al (2008), 
quienes utilizaron las redes de Petri coloridas y temporizadas para modelar el ambiente 
multiproyecto donde obtienen soluciones cercanas al óptimo y concluyen que utilizar redes de Petri 
temporizadas y coloridas no solo resulta factible sino efectivo. 
 
Hu y Wang (2014) obtienen también resultados competitivos respecto a otros algoritmos propuestos 
para el RCMPSP. Estos autores realizan modificaciones a la red de Petri formada con la información 
del proyecto añadiendo plazas y reemplazando transiciones de liberación de recurso con transiciones 
de retraso. 
 
Kao, Wang, Dong et. al. utilizan el modelamiento a través de redes de Petri para considerar eventos 
inesperados en la ejecución de un portafolio de proyectos. El marco de solución propuesto es 
beneficioso ya que en la evaluación del desempeño del agendamiento se cuenta con una perspectiva 
multi criterio con el balance entre duración del proyecto y costo. 
 
Beam Search 
 
El algoritmo Beam Search, es la versión más general de una heurística cuyo propósito fundamental 
es la búsqueda controlada de la solución de un problema combinatorio expandiendo solo una 
cantidad de nodos determinada en cada nivel del árbol de branch & bound. Este enfoque heurístico 
ha sido utilizado en problemas de secuenciación de trabajos (Bautista, et. al, 2008) 15, (Bautista, 
Corominas, 1996) (Blum, 2005). Della Croce y demás aplicaron una versión modificada16 del 
método para resolver un problema de secuenciación de dos máquinas y el problema de optimización 
combinatoria conocido como el p-median problem. Reyes, Araya et. al. (2016) aplicaron el enfoque 
del Beam Search para resolver un problema de Set Covering17. 
 
Algoritmo A * 
 
Este algoritmo consiste en una modificación del conocido Branch & Bound. En un problema 
combinatorio, por ejemplo, progresivamente condicionar una variable a tomar un valor entero abre 
un conjunto de posibilidades, lo cual es representado como un nodo en un árbol cuya expansión 
crece exponencialmente (Velez-Gallego, et al. 2016). 
 
15 Bautista, J. Pereira, J. et. al. A beam search approach for the optimization versión of the car sequencing problema. 
Springer Science+Business Media. 2007. 
16 Della Croce, F. et. al. Recovering Beam Search: enhancing the beam search approach for combinatorial 
optimization problems. Journal of heuristics. 10:89-104. 2004. 
17 Reyes, V. Araya, I. et. al A Beam Search approach to the Set Covering Problem. Springer International Publishing 
Switzerland. 2016. 
 
Considerando la desventaja mencionada, el A* Search modifica el proceso de ramificación y 
acotamiento controlando el crecimiento del árbol de exploración18. El proceso de exploración 
consiste en expandir únicamente los nodos más promisorios en el árbol de acuerdo a una función 
heurística asociada al objetivo que se quiere lograr en el problema de optimización. El criterio de 
expansión Best-first selecciona el nodo que tenga el mejor valor de la función heurística 
mencionada. 
 
El nodo raíz representa el nodo Mo y sus nodos sucesores se van generando a medida que se realiza 
la generación de sus nodos hijos. La función heurística que contempla el criterio de exploración es 
de la forma 𝑓(𝑀) = 𝑔(𝑀) + ℎ(𝑀) siendo g(M) el valor de la función objetivo del nodo actual 
(makespan, costo de recurso, etc) desde el nodo inicial Mo hasta dicho nodo nodo M. h(M) es un 
estimado del valor de la función objetivo desde el nodo M hasta el nodo que representaría el final 
del problema Mf. Aquellos nodos que tengan los mejores valores de f(M) tendrán prioridad en la 
expansión del árbol (espacio de búsqueda) de modo tal que la expansión avance en profundidad más 
que horizontalmente para forzar el método a alcanzar el nodo objetivo (Lee y DiCesare, 1994). 
 
La función h(M) es admisible si subestima el verdadero valor de la función objetivo de alcanzar el 
nodo final, por lo cual, si h(M) es admisible para todos los nodos, el A* Search garantiza optimalidad 
aunque tendría complejidad exponencial en cuanto a tiempo y esfuerzo computacional (Mejía y 
Odrey, 2005). Debido a esta dificultad, diversos autores han propuesto modificaciones a este 
algoritmo, tales como Lee y DiCesare (1995), Mejía y Odrey (2005), Xion y Zhou (1998), Yu et. 
al. (2003) y Mejía, Sánchez, Niño y Figueroa (2013). Entre dichas mejoras se encuentran cotas más 
herméticas para la función h(M), reducción del espacio de búsqueda por recorte de nodos no 
promisorios, incluso la incorporación de cotas superiores e inferiores para mejorar la dirección de 
la búsqueda. 
 
En la literatura existente se encuentra que las modificaciones propuestas para el Algoritmo A* 
incluyen adoptar el criterio Depth-First (Huang, Sun y Sun, 2008), poda selectiva de nodos para 
mejor reducción del espacio de búsqueda (Abdallah, Elmaraghy, 1998. Elmakkawy y Elmaraghy, 
2003. Kim, Suzuki y Narikiyo, 2007). Otras tendencias respecto al algoritmo se enfocan en el 
estudio de las funciones heurísticas utilizadas, donde se encuentra que han sido propuestas tanto 
admisibles como no admisibles. De acuerdo con Mejía, Niño (2017), las funciones admisibles (que 
garantizarían soluciones óptimas), son basadas por lo general en características de las redes de Petri, 
tales como la ruta más corta, mientras que funciones no admisibles utilizan reglas de despacho19, 
cabe agregar que al ser un método heurístico, en algún momento de la expansión del árbol pudo 
haber podado la solución óptima. 
 
 
 
18 Mejía, G. Montoya, C. Applications of Resource Assignment and Scheduling with Petri Nets and Heuristic Search. 
Springer Science+Business Media. 2010. 
19 Mejía, G. Niño, K. A new hybrid filtered beam search algorithm for deadlock-free scheduling of flexible 
manufacturing systems using Petri Nets. Computers & Industrial Engineering 108. 2017. 
5. METODOLOGÍA 
 
5.1. Propuesta del Modelo Matemático Multiproyecto 
 
Tal como se mencionó anteriormente, en la revisión bibliográfica no se encontró estudios del RACP 
multiproyecto, por lo cual se propone esta variante y el presente modelo matemático correspondiente 
a la situación mencionada en la descripción del problema. 
𝑰𝒏𝒅𝒊𝒄𝒆𝒔 
j: actividades de cada proyecto. 
k: índice para el tipo de recurso. k = 1…K con K recursos totales. 
t: índice relacionado con el tiempo (unidad de tiempo depende del contexto del proyecto). t = 
0,1,2,3…T. T representa el largo del horizonte de planeación de todo el conjunto de proyectos, 
consistiendo en la fecha de entrega del proyecto con tiempo límite más alejado). 
S: índice relacionado a cada proyecto a ejecutar. 
𝑷𝒂𝒓á𝒎𝒆𝒕𝒓𝒐𝒔 
T: Horizonte de planeación. Fecha de entrega más alejada. 
Ck: costo unitario del recurso tipo k. 
djs: duración de la actividad j del proyecto s. 
rkjs: cantidad de recurso tipo k requerido para la ejecución de la actividad j del proyecto s. 
Pjs: conjunto de predecesores inmediatos de la actividad j del proyecto s. 
𝐸𝑆𝑗𝑠: tiempo de inicio temprano de la actividad j del proyecto s 
𝐿𝑆𝑗𝑠: tiempo de inicio más tardío de la actividad j del proyecto s. 
𝑽𝒂𝒓𝒊𝒂𝒃𝒍𝒆𝒔 𝒅𝒆 𝑫𝒆𝒄𝒊𝒔𝒊ó𝒏 
𝑋𝑗𝑡𝑠: variable binaria. Toma valor de 1 si la actividad j del proyecto s, inicia en el tiempo t. 0 de lo 
contrario. t ∈ [ ESjs , LSjs ]. 
𝑅𝑘: variableque indica la cantidad de unidades de recurso tipo k requeridas en todo el conjunto de 
proyectos (cantidad disponible de recurso tipo k que se debe asignar a lo largo del conjunto de 
proyectos). 
𝐹𝑂:𝑀𝑖𝑛 ∑ 𝐶𝑘𝑅𝑘
𝑘∈𝐾
 
∑ 𝑋𝑗𝑡𝑠
𝐿𝑆𝑗𝑠
𝑡=𝐸𝑆𝑗𝑠
= 1 ∀ 𝑗 ∈ 𝐽, 𝑠 ∈ 𝑆 (1) 
∑ 𝑋𝑖𝑡𝑠
𝐿𝑆𝑖𝑠
𝑡=𝐸𝑆𝑖𝑠
∗ (𝑡 + 𝑑𝑖𝑠) ≤ ∑ 𝑋𝑗𝑡𝑠
𝐿𝑆𝑗𝑠
𝑡=𝐸𝑆𝑗𝑠
∗ 𝑡 ∀ 𝑠 ∈ 𝑆, (𝑖, 𝑗) ∈ �⃑� 𝑗,𝑠 (2) 
∑ ∑ ∑ 𝑟𝑘𝑗𝑠 ∗ 𝑋𝑗𝑦𝑠
𝑡
𝑦=(𝑡−𝑑𝑗𝑠)𝑗∈𝐽𝑠∈𝑆
≤ 𝑅𝑘 ∀ 𝑘 ∈ 𝐾 , 𝑡 ∈ (0… 𝑇) | 𝑦 > 0 (3) 
𝑋𝑗𝑡𝑠 ∈ {0, 1} ∀ 𝑗 ∈ 𝐽, 𝑡 ∈ [ ESjs , LSjs ] , 𝑠 ∈ 𝑆 (4) 
𝑅𝑘 ≥ 0 ∀ 𝑘 ∈ 𝐾 𝑐𝑜𝑛 𝑅𝑘 ∈ Ζ+ (5) 
Es importante mencionar que este problema y en general los problemas de proyectos implican un 
pre-procesamiento de las instancias, ya que en esta formulación es necesario calcular como datos 
de entrada los tiempos de inicio tempranos y tardíos (ESis, LSis) de cada actividad. Dentro de este 
procesamiento está contemplada la información de fechas de inicio máxima de los proyectos y sus 
respectivas fechas de entrega, por lo tanto, con ES y LS siendo calculados respecto a dichas fechas, 
un proyecto tendrá entonces como intervalo posible de ejecución el tiempo de inicio de su primera 
actividad y su fecha de entrega 𝐷𝑢𝑒𝐷𝑎𝑡𝑒𝑠 así [ 𝐸𝑆0𝑠 , 𝐷𝑢𝑒𝐷𝑎𝑡𝑒𝑠 ]. Los tiempos de terminación e 
inicio tardíos de las actividades de cada proyecto están calculados respecto a la fecha de entrega de 
cada proyecto, por esto se cumple: 
[ 𝐸𝑆0𝑠 , 𝐷𝑢𝑒𝐷𝑎𝑡𝑒𝑠 ] = [ 𝐸𝑆0𝑠 , 𝐿𝐹𝑁𝑠 ] 
Donde 𝐿𝐹𝑁𝑠 corresponde a la fecha de terminación tardía de la última actividad del proyecto s. 
La función objetivo del problema establece la minimización del costo total de los recursos asignados 
al conjunto de proyectos. 
La restricción (1) refuerza la condición de que una actividad de cada proyecto inicia y se realiza una 
sola vez. La restricción (2) establece las relaciones de precedencia entre las actividades de cada 
proyecto s. La restricción (3) permite determinar la cantidad de recurso de cada tipo que debe ser 
asignada al conjunto de proyectos (disponibilidad de recursos). Las restricciones (4) y (5) 
respectivamente definen la naturaleza binaria de las variables de decisión relacionadas con tiempo 
de inicio de las actividades de cada proyecto y la cantidad entera de recurso necesaria para el 
horizonte de planeación. 
El modelo matemático fue implementado en Python y se utilizó el optimizador Gurobi para obtener 
soluciones óptimas de las instancias propuestas. Ver capítulo resultados. 
 
 
 
 
Modelo Matemático sin Tiempos de Inicio Tempranos y Tardíos. 
 
También se presenta el modelo matemático indexado en tiempo que no incluye los tiempos de inicio 
tempranos y tardíos de las actividades de todos los proyectos. En esta formulación se hacen 
explícitas las condiciones de cumplimiento de fechas de entrega de cada proyecto y las fechas 
permitidas de inicio de los mismos. 
 
Utilizando los mismos parámetros de la formulación anterior, a excepción de los ES y LS, la 
formulación es la siguiente: 
 
𝐹𝑂:𝑀𝑖𝑛 ∑ 𝐶𝑘𝑅𝑘
𝑘∈𝐾
 
∑ 𝑋𝑗𝑡𝑠
𝑡∈[0, 𝑇]
= 1 ∀ 𝑗 ∈ 𝐽, 𝑠 ∈ 𝑆 (1) 
 
∑ 𝑋𝑖𝑡𝑠
𝑡∈[0, 𝑇]
∗ (𝑡 + 𝑑𝑖𝑠) ≤ ∑ 𝑋𝑗𝑡𝑠
𝑡∈[0, 𝑇]
∗ 𝑡 ∀ 𝑠 ∈ 𝑆, (𝑖, 𝑗) ∈ �⃑� 𝑗,𝑠 (2) 
 
∑ (𝑋𝑁𝑡𝑠 ∗ 𝑡)
𝑡∈[0, 𝑇]
+ 𝑑𝑁𝑠 ≤ 𝑇𝑠 ∀ 𝑠 ∈ 𝑆 (3) 
 
∑ 𝑋1𝑡𝑠
𝑡∈[0, 𝑇]
≥ 𝑡𝑜𝑠
 ∀ 𝑠 ∈ 𝑆 (4) 
 
∑ ∑ ∑ 𝑟𝑘𝑗𝑠 ∗ 𝑋𝑗𝑦𝑠
𝑡
𝑦=(𝑡−𝑑𝑗𝑠)𝑗∈𝐽𝑠∈𝑆
≤ 𝑅𝑘 ∀ 𝑘 ∈ 𝐾 , 𝑡 ∈ (0… 𝑇) | 𝑦 > 0 (5) 
 
𝑋𝑗𝑡𝑠 ∈ {0, 1} ∀ 𝑗 ∈ 𝐽, 𝑡 ∈ [ 0 , 𝑇] , 𝑠 ∈ 𝑆 (6) 
𝑅𝑘 ≥ 0 ∀ 𝑘 ∈ 𝐾 𝑐𝑜𝑛 𝑅𝑘 ∈ Ζ+ (7) 
 
El horizonte de planeación es el intervalo 𝑡 ∈ [ 0 , 𝑇] con T igual a la máxima fecha de entrega 
entre los distintos proyectos. La restricción (1) establece que cada actividad puede iniciar y 
realizarse una sola vez en todo el horizonte de planeación. La restricción (2) asegura el 
cumplimiento de las relaciones de precedencia entre actividades. La restricción (3) garantiza el 
cumplimiento de las fechas de entrega de cada proyecto mientras que la restricción (4) establece el 
inicio de cada proyecto a mínimo desde su fecha permitida de inicio. La restricción (5) calcula el 
requerimiento de recurso máximo debido a la ejecución de actividades en simultáneo, lo cual 
representa la disponibilidad de recurso que debe asegurarse a lo largo del horizonte de planeación 
del conjunto de proyectos. Por último, las restricciones (6) y (7) indican la naturaleza binaria y 
entera de las variables inicio de actividad y requerimiento de recurso. 
5.2. Modelamiento mediante Redes de Petri 
 
En este trabajo se utilizaron las redes de Petri temporizadas en las plazas, consistiendo en que cada 
plaza retiene los tokens que alberga por un tiempo determinado, asociando dicho tiempo a la 
duración de las distintas actividades del proyecto. Las redes de Petri utilizadas en este proyecto 
además de la temporización, conservan características como las relaciones de precedencia entre 
actividades, el modelamiento de recursos renovables que son el tipo de recurso incluido en este 
problema y tan solo un modo de realización de las actividades (single skill). 
 
En la figura 1 se muestra un ejemplo de la representación de un proyecto a través de una red de Petri 
con las características descritas en la tabla 1. 
 
Tabla 1. Actividades, duraciones y requerimientos de recurso. 
Actividad Sucesor Modo Duración Recurso 1 Recurso 2 
A B,C 1 8 2 0 
B D 
1 6 1 0 
2 4 2 0 
C D 
1 6 0 3 
2 3 0 2 
D - 1 8 0 0 
Fuente: Mejía, Sánchez, Niño y Figueroa. 2013. 
 
Figura 2. Representación del Proyecto Mediante una Red de Petri 
 
Fuente: Mejía, Sánchez, Niño y Figueroa. 2013. 
 
Se puede observar en la figura 2 que todas las características señaladas en la tabla 1 son 
representadas en la red de Petri. Éstas incluyen el requerimiento de recursos renovables, como es el 
caso de los requeridos en las actividades A (P13), recursos no renovables como el requerido por la 
actividad C, la cual cuenta con dos modos de ejecución mutuamente excluyentes (P7 modo 2, P5 
modo 1), múltiples modos y recursos renovables en la actividad B (P12 modo 2 y P10 modo 1), se 
representan las relaciones de precedencia de las actividades del proyecto (D depende de B y C) así 
como el caso de la actividad D que no requiere ningún tipo de recurso. 
 
Entre las ventajas del modelamiento de los proyectos a través de Redes de Petri se encuentran20: 
 
 Las redes de Petri y sus extensiones capturan la esencia de la mayoría de características de 
los proyectos tales como relaciones de precedencia, restricciones de recurso, retrasos de 
tiempo y demás. 
 La lógica de entendimiento es relativamente sencilla. 
 El agendamiento de actividades puede ser llevado a cabo con técnicas de optimización cuyas 
búsquedas serían realizadas sobre el espacio de estados de la red de Petri. 
 Es posible modelar interrupciones y reprocesos debidos a agentes externos, esto 
especialmente en secuenciación de trabajos y proyectos. 
 Las redes de Petri permitirían realizar el ajuste del modelamiento de un único proyecto para 
contemplar contextos multi proyecto gracias a que la lógica de la red de Petri en cuanto a 
estructura y características principales como tipos de recurso y precedencias se conserva en 
el contexto de múltiples proyectos. 
 
5.3. Algoritmo Beam A* Search 
 
En la aplicación de este algoritmo a problemas de programación de proyectos modelados a través 
de redes de Petri, se establece que el espacio de búsqueda será compuesto por cada uno de los 
distintos estados de la red de Petri. A medida que una transición es disparada, los nodos hijos 
representarán cada una delas posibles rutas (bifurcaciones) que se desprendan del disparo de dicha 
transición. De esta manera es que se genera el árbol de branch and bound, donde encontrar la 
secuencia de transiciones que lleve la red de Petri desde el estado inicial hasta el marcaje final (se 
tiene un token en la última plaza), es equivalente a generar un agendamiento de las actividades del 
proyecto. 
La poda inteligente de los nodos del espacio de búsqueda evita la exploración de todo el espacio de 
estados y tiene las siguientes ventajas: 
 La posibilidad de controlar la expansión del árbol de branch & bound también en cuanto a 
profundidad. 
 La utilización del algoritmo Beam A* Search es conveniente dada la gran cantidad de 
estados que presentaría una red de Petri que represente un proyecto, así pues, aunque el 
método puede obtener soluciones óptimas, la complejidad del problema llevaría a optar por 
bajos y competitivos tiempos computacionales a expensas de optimalidad para instancias 
grandes, lo cual se lograría con las ventajas de este algoritmo. 
 
 
20 Mejía, G. Niño, K. Montoya, C. et. al. A Petri Net-based Framework for Realistic Project Management and 
Scheduling: An application in animation and videogames. Computers and Operations Research. 2016. 
Cabe resaltar que el Beam A* Search ha sido utilizado exitosamente en problemas de secuenciación 
de trabajos modelados a través de redes de Petri obteniendo buenos resultados en cuanto a calidad 
de la solución y tiempo computacional (Mejía y Odrey, 2005) (Mejía y Montoya, 2010) y en 
problemas de programación de proyectos con recursos limitados con múltiples modos (MSRCPSP) 
(Mejía, Sánchez, Niño y Figueroa, 2013). 
 
El algoritmo Beam A* Search utilizado en los trabajos mencionados estaba enfocado en la 
minimización del makespan del proyecto con la siguiente lógica21: 
 
a. Cálculo de la función heurística. 
La función es de la forma 𝑓(𝑀) = 𝑔(𝑀) + ℎ(𝑀). Dado que el objetivo del MSRCPSP es la 
minimización del makespan, la función ℎ(𝑀) es un estimado del tiempo que resta para la 
finalización del proyecto desde el marcaje M, tomando como referencia la ruta crítica, mientras que 
𝑔(𝑀) es el tiempo transcurrido desde el marcaje inicial hasta el marcaje actual M. La cota inferior 
es el cálculo del tiempo restante, teniendo en cuenta la relajación de la restricción de recursos y 
disparando las transiciones de acuerdo a una regla de prioridad. De este modo también es calculada 
la cota superior de cada marcaje. 
 
b. Expansión y búsqueda. 
Como parámetro de entrada del algoritmo se tiene la magnitud del rayo de expansión (Beam), el 
cual consiste en el número de nodos máximo a expandir en cada nivel. El algoritmo a medida que 
genera los hijos de los nodos del árbol, va registrando en una lista denominada OPEN aquellos 
nodos generados pero aún no expandidos, almacenados en orden ascendente respecto la cota 
inferior. Se da prelación al nodo de mayor profundidad y con mejor cota superior en caso de 
empates. 
 
La información de los nodos ya explorados es guardada en la lista CLOSE, por lo cual el algoritmo 
toma el primer nodo de la lista OPEN, genera sus respectivos hijos y lo lleva a la lista CLOSE. 
 
c. Pseudocódigo 
El funcionamiento puede describirse como sigue (tomado de Mejía, Niño, et. al. 2013): 
 
1. Establece el marcaje inicial Mo como el marcaje actual, se incluye en la lista OPEN. 
2. Establece el conjunto de transiciones activas para el marcaje actual. 
3. Genera el conjunto de marcajes (nodos) hijos del marcaje actual disparando cada una de las 
transiciones activas. Luego de generar esta expansión calcula las cotas superior e inferior de 
cada marcaje hijo. 
4. Inserta los nodos hijos en la lista OPEN en la posición derecha de acuerdo a sus valores de 
cota superior e inferior. Retira el marcaje actual de la lista OPEN y lo incluye en la lista 
CLOSE. 
 
21 Mejía, G. Niño, K. Montoya, C. et. al. A Petri Net-based Framework for Realistic Project Management and 
Scheduling: An application in animation and videogames. Computers and Operations Research. 2016. 
5. Si la lista OPEN está vacía el algoritmo termina con falla intentando buscar el marcaje final. 
En caso contrario, selecciona el primer marcaje disponible en la lista OPEN si es susceptible 
de expansión, es decir, si el número de marcajes expandidos en su nivel no supera la 
magnitud del beam. Establece el marcaje expandido como marcaje actual. 
6. Borra aquellos marcajes que no son susceptibles de expansión. 
7. Si el marcaje actual es igual al marcaje final, la construcción de la solución se realiza 
retrocediendo desde el nodo final, rastreando su nodo padre hasta llegar al nodo inicial, 
siendo esto la secuencia de transiciones generada (equivalente al agendamiento de 
actividades). Devuelve el valor f(M) del marcaje final. 
8. Mientras no se encuentre el marcaje final, vuelve al paso 2. 
 
5.4. Estructura del Algoritmo de Solución Propuesto 
 
El método de solución del problema propuesto en este trabajo se ideó bajo el enfoque tradicional de 
solución del RACP que se encuentra en la literatura para un solo proyecto, consistiendo en 
iterativamente realizar una asignación de recursos y posteriormente solucionar un problema de 
programación de proyectos con recursos limitados estableciendo la duración del proyecto. Si la 
duración excede la fecha de entrega del proyecto, la asignación es infactible y se requiere aumentar 
la cantidad de recursos, repitiendo este proceso hasta encontrar una asignación factible de recursos. 
En este enfoque de solución autores como Demeulemeester (1995) y Rodrígues y Yamashita (2010) 
han propuesto métodos exactos donde realizan iterativamente cortes en el espacio de búsqueda de 
las cantidades de los tipos de recursos dentro de una región limitada por una línea incumbente que 
representa las combinaciones de recurso con el mismo valor objetivo de costo total como se muestra 
en la figura 2. El vector de recurso es evaluado por un método de solución del RCPSP para saber si 
es factible o no. 
Figura 2. Línea incumbente CD en el espacio de valores de recurso R1 y R2 
 
Fuente: Rodriguez. S. Yamashita, D. 2015. 
En total se propusieron cuatro versiones del método de solución que funcionan bajo el enfoque de 
los métodos exactos mencionados anteriormente. 
 Métodos lógicos: 
o AStar-Add 
o AStar-Remove 
 Métodos Exhaustivos 
o G-Add 
o G-Remove 
En los dos primeros métodos, las decisiones de aumentos de recurso se realizan mediante el uso de 
indicadores con una lógica de utilización de recurso. Los últimos dos no tienen en cuenta dichos 
indicadores sino que realizan una búsqueda exhaustiva, explorando todas las posibilidades de 
aumento de recurso y seleccionando el aumento que permite la mayor reducción de la duración del 
proyecto, lo cual implica un considerable aumento del tiempo computacional. 
El método propuesto en este trabajo consiste en los siguientes pasos: 
1. Lectura de información del problema y modelamiento del proyecto como una red de Petri. 
2. Calcular el vector de recurso inicial a asignar. Para este cálculo se utilizó la cota inferior22 
propuesta por Drexl & Kimms (2001). Este será el vector de recurso mínimo necesario para la 
ejecución de las actividades del proyecto. 
𝐶𝑜𝑡𝑎 𝐼𝑛𝑓𝑒𝑟𝑖𝑜𝑟: R k = 𝑚𝑎𝑥 {max𝑗 ∈𝐽 𝑟𝑗𝑘 , ⌈
∑ 𝑟𝑗𝑘∗𝑑𝑗𝑗 ∈𝐽
𝑚𝑖𝑛{𝑇 , ∑ 𝑑𝑗𝑗 ∈𝐽, 𝑟𝑗𝑘>0 }
⌉} 
3. Llamar la sub rutina que calcula la duración del proyecto teniendo en cuenta la limitación del 
recurso asignado. Ver la sub rutina makespan. 
4. Establecer el denominado recurso cuello de botella de acuerdo al criterio seleccionado. Ver 
determinación del recurso crítico. Añadir una unidad de recurso al recurso crítico. 
(Si el método es exhaustivo se omite este paso y se evalúa el efectode añadir una unidad a todos 
los tipos de recurso, uno a la vez). 
5. Llamar la sub rutina makespan para calcular la duración del proyecto con la nueva asignación 
de recursos. Si la duración del proyecto es menor a la fecha de entrega, ir al paso 6. De lo 
contrario ir al paso 4. 
6. Realizar un proceso de búsqueda local para determinar a cuál de los recursos puede reducirse su 
cantidad sin afectar el cumplimiento de la fecha de entrega. 
7. Cuando no hay más opción de reducir el recurso, terminar. Recuperar secuencia de transiciones 
y vector final de recurso. 
 
 
22 Drexl, A. Kimms, A. Optimization guided lower and upper bounds for the resource investment problem. Journal of 
the operational research society. 2001. 
Sub Rutinas Makespan 
a. Disparo de Transiciones según regla de despacho. 
Este método consiste principalmente en el disparo de las transiciones activas seleccionadas 
de acuerdo a la regla de despacho seleccionada. Una vez disparada la última transición, se 
retorna el valor de la duración calculada del proyecto. 
 
Cabe agregar que se tiene en cuenta las restricciones de precedencia y la limitación del 
recurso asignado. Sin embargo, al no ser una aproximación robusta al vector óptimo de 
recurso, el tiempo computacional de esta subrutina es considerablemente bajo, pero, la 
cantidad asignada de recurso será aproximada por exceso. 
 
b. Beam A* Search 
Tal como se mencionó anteriormente, este método tiene por objetivo la minimización de la 
duración del proyecto asumiendo los recursos asignados como limitados. No se optó por 
modificar este algoritmo para establecer una función heurística basada en costo por las 
mencionadas dificultades que esto conlleva en cuanto a admisibilidad. 
 
El Beam A* Search explora la red de Petri con las características del proyecto y con el 
recurso asignado en cada iteración, determina la duración del proyecto, sirviendo como 
método robusto de determinación de la factibilidad del vector de recurso. 
 
El algoritmo también hace uso de las siguientes reglas de despacho: 
 
 SPT: selecciona la transición que da paso a la actividad con la menor duración. 
 LPT: selecciona la transición que da paso a la actividad con la mayor duración. 
 MWR (most remaining work time): selecciona la transición que da paso a la 
actividad con mayor tiempo remanente. El tiempo remanente es el tiempo restante 
desde dicha actividad hasta el final del proyecto. 
 LWR (least remaining work time): selecciona la transición que da paso a la actividad 
con menor tiempo remanente. 
 SPR: basada en un indicador de criticidad del recurso en el tiempo. Selecciona la 
actividad con mayor valor del indicador de criticidad descrito a continuación. 
Se propuso una regla de despacho denominada SPR para considerar no solo aspectos como la 
duración de las actividades sino el uso que hacen de los recursos. 
Consiste en calcular un indicador de criticidad del uso del recurso en el tiempo como el costo total 
de requerimiento de recurso sobre la holgura de la actividad j: 
𝐼𝑛𝑑𝑟𝑒𝑐 =
{
 
 
 
 
∑ 𝑟𝑗𝑘 ∗ 𝐶𝑘𝑗 ∈𝐽
𝐻𝑜𝑙𝑔𝑢𝑟𝑎𝑗
=
∑ 𝑟𝑗𝑘 ∗ 𝐶𝑘𝑗 ∈𝐽
𝐿𝑆𝑗 − 𝐸𝑆𝑗
, 𝑠𝑖 𝐿𝑆𝑗 > 𝐸𝑆𝑗
∑ 𝑟𝑗𝑘 ∗ 𝐶𝑘
𝑗 ∈𝐽
 , 𝑠𝑖 𝐿𝑆𝑗 = 𝐸𝑆𝑗
}
 
 
 
 
 
Este indicador es mayor para las actividades críticas, por lo cual da prioridad al cumplimiento de la 
ruta crítica mientras que se esperaría que las actividades que no son críticas tiendan a seleccionarse 
en un momento posterior dentro del intervalo que permite su holgura. Las reglas basadas en tiempo 
tienden a disparar las transiciones de tal manera que las actividades inicien en su tiempo de inicio 
más temprano, mientras que con esta regla se intenta permitir en el agendamiento de las actividades 
que se logre mayor flexibilidad en la agenda al iniciar dentro del intervalo de holgura de las 
actividades, buscando así la posibilidad de necesitar menor asignación de recursos al permitir a las 
actividades dicho margen de maniobra. 
Determinación del Recurso Crítico 
Se establece que el recurso cuello de botella es aquel cuya cantidad representa la mayor limitante 
para la duración del proyecto y cuyo aumento permitiría la reducción del makespan. Para determinar 
el recurso crítico o cuello de botella, se cuenta con tres criterios para determinar un indicador de 
utilización de recurso. 
1. Utilización temporal: es la relación entre la ponderación del recurso requerido con la 
duración de las actividades que lo requieren y el recurso actualmente asignado 𝑅𝑘 por la 
fecha de entrega. 
𝑈𝑡𝑖𝑙𝑖𝑧𝑎𝑐𝑖ó𝑛 𝑡𝑒𝑚𝑝𝑜𝑟𝑎𝑙 =
∑ 𝑟𝑗𝑘 ∗ 𝑑𝑗𝑗 ∈𝐽
𝑅𝑘 ∗ 𝐷𝑢𝑒𝐷𝑎𝑡𝑒
 
El recurso cuello de botella será aquel que presente mayor valor en su indicador de utilización 
temporal. 
2. Utilización: es la relación entre la sumatoria del requerimiento de recurso y la cantidad 
actualmente asignado 𝑅𝑘. 
𝑈𝑡𝑖𝑙𝑖𝑧𝑎𝑐𝑖ó𝑛 =
∑ 𝑟𝑗𝑘𝑗 ∈𝐽
𝑅𝑘
 
El recurso crítico será el de mayor indicador de utilización. 
3. Sensibilidad: es el cálculo de la variación en el indicador de utilización temporal ante 
cambios en la duración permitida del proyecto (se tomó como base su fecha de entrega). 
𝑆𝑒𝑛𝑠𝑖𝑏𝑖𝑙𝑖𝑑𝑎𝑑 =
∑ 𝑟𝑗𝑘 ∗ 𝑑𝑗𝑗 ∈𝐽
𝐷𝑢𝑒𝐷𝑎𝑡𝑒 − 1
−
∑ 𝑟𝑗𝑘 ∗ 𝑑𝑗𝑗 ∈𝐽
𝐷𝑢𝑒𝐷𝑎𝑡𝑒
 
𝑅𝑘
 
Este indicador refleja qué tan sensible es el requerimiento de recurso ante cambios en la fecha de 
entrega, con lo cual, el recurso crítico será el que presente mayor indicador de sensibilidad. 
Enfoques de Aproximación a la solución óptima 
Se utilizaron dos enfoques para la aproximación al vector óptimo de recuso. 
a. Enfoque de Aumento de Cota Mínima 
Se utiliza la sub rutina Makespan basada en el algoritmo Beam A* Search, para establecer la 
duración del proyecto, tratando de que al ser utilizado éste algoritmo robusto en el presente método, 
se logre alcanzar la fecha de entrega sin asignar recursos en exceso. 
La figura 3 ilustra la secuencia de pasos para la aplicación del método propuesto bajo este enfoque. 
Figura 3. Secuencia del Método Propuesto – Enfoque Cota Mínima 
 
Fuente: Elaboración propia. 
 
b. Enfoque de Reducción de Cota Superior 
Consta de dos fases. Primero se utiliza la sub rutina Disparo de transiciones según regla de despacho 
hasta establecer una cantidad de recursos que garantiza para dicha subrutina el cumplimiento de la 
fecha de entrega. Se entiende que las reglas de despacho proporcionan un agendamiento de 
actividades y un vector de recurso factible pero con excesos de asignación. 
La segunda fase es en proceso de mejora en la estimación del vector recurso a través del algoritmo 
Beam A* Search, el cual obtendrá iterativamente la duración del proyecto a medida que se reduce 
la cantidad de recurso asignada a aquel que resulte ser el más costoso no crítico. Se utilizan los 
criterios de criticidad de modo invertido para establecer el recurso no crítico. Este proceso se repetirá 
hasta el punto en que la reducción de recurso ya no permita cumplimiento de la fecha de entrega. 
La figura 4 ilustra la secuencia de pasos del método propuesto bajo este enfoque. 
Figura 4. Secuencia del Método Propuesto – Enfoque Cota Mínima 
 
Fuente: Elaboración propia 
6. RESULTADOS 
 
6.1. Instancias de prueba 
 
Para obtener las instancias del RACP, se pueden modificar las del RCPSP existentes en la literatura 
de acuerdo a la metodología propuesta por Drexl and Kimms (2001), en la cual establecen que las 
características de ambos problemas son similares y el RACP puede hacer uso de los mismos datos 
de relaciones de precedencia y requerimientos de recurso. 
 
Como la fecha de entrega es un parámetro de entrada del RACP, los autores proponen igualar la 
fecha de entrega como mínimo a la duración de la ruta crítica del proyecto o aumentarla de acuerdo 
a un factor DF = Ɵ (Deadline Factor) cuyos valores pueden ser 0, 0.1,0.2, 0.3, 0.4, 0.5. 
𝐷𝑢𝑒𝑑𝑎𝑡𝑒 = (1 + Ɵ) ∗ 𝑀𝑎𝑘𝑒𝑠𝑝𝑎𝑛 
 
Adicional a la fecha de entrega, el RACP requiere costos de los recursos Ck y éstos pueden ser 
determinados como un valor aleatorio uniformemente distribuido con parámetros a=1, b=10, así, 
Ck ~ U[1, 10]. 
 
Se utilizaron dos conjuntos de instancias existentes en la literatura para comparar los resultados del 
método propuesto en problemas de un solo proyecto, con los reportados en la literatura. 
 
Conjunto 1: es el conjunto de instancias PSPLIB23 utilizado por Yamashita, Armentano y Laguna 
(2006) consistente de 30, 60, 90 y 120 actividades con 4, 6 y 8 recursos. El factor de fecha de entrega 
es de 1.2. El factor de recurso es RF=0.25, 0.5, 0.75 y 1. La complejidad de la red es 1.5, 1.8 y 2.1. 
 
Conjunto 2: conjunto de instancias RACP30 utilizado por Van Pethegen y Vanhoucke, quienes lo 
obtuvieron del generador de instancias RANGEN24 compuestas por un proyecto de 30 actividades 
y 4 recursos renovables. Las especificaciones de complejidad de la red (order strenth, Mastor, 1970) 
son de 0.25, 0.5 y 0.75. El factor de recurso indica la densidad de los tipos de recursos utilizados 
por actividad (Pascoe, 1966) y son de 0.25, 0.5 y 0.75. El tamaño del conjunto es de 240 instancias, 
las cuales pueden modificarse expandiendo la duración de la ruta crítica del proyecto de acuerdo al 
factor de fecha de entrega (Deadline Factor Ɵ) con Ɵ = 0, 0.1, y 0.2. El costo de los recursos en un 
valor entero aleatorio según metodología de Drexl & Kimms. Éstas instancias se encuentran 
disponibles en http://www.projectmanagement.ugent.be. 
 
Instancias Propuestas Multi Proyecto 
 
Se proponen instancias multiproyecto construidas teniendo en cuenta las condiciones mencionadas 
en la descripción del problema, por lo cual siguiendo la metodología de Drexl & Kimms se modificó 
el conjunto de instancias de Perez, Posada y Lorenzana (2016), compuestas de 2, 3, 4, 5 y 10 
proyectos con 90, 20, 60, 60 y 10 actividades por proyecto respectivamente. 
 
Adicionalmente se propusieron instancias pequeñas de elaboración propia con un número de 
proyectos y actividades así:3x5, 3x6, 2x10, 2x15, 3x10 y 4x10. A cada combinación de número de 
proyectos y actividades se asignó un total de 4 y 6 recursos. 
 
Las instancias propias fueron resueltas a optimalidad aplicando el modelo matemático propuesto 
mediante Python y utilizando el optimizador Gurobi. Se solucionaron a optimalidad también las 
instancias modificadas de Perez et. al. que comprenden un máximo número de actividades totales 
(nxp) de 60. 
 
Tanto para las instancias propias como para las de Perez et. al. se determinó con un valor aleatorio 
el número de proyectos que inician en el tiempo t=0. Se calculó la duración de cada proyecto y se 
tomó como parámetro el proyecto de mayor duración. D = max{𝐷𝑠} 
El tiempo de inicio 𝑡𝑜𝑠 de cada proyecto que no inicia en t=0 se determinó como un valor aleatorio 
en el intervalo [
𝐷
3
 , 𝐷]. 
Las fechas de entrega fueron establecidas una vez se calculó la fecha inicial, de acuerdo a la 
expansión según el Deadline Factor Ɵ: 
𝐷𝑑𝑎𝑡𝑒𝑠 = 𝑡𝑜𝑠 + (1 + Ɵ) ∗ 𝐷𝑠 
 
23 Kolisch, J. Sprecher, A. PSPLIB – A Project scheduling Project library. European Journal of Operational Research, 
96. 1996. 
24 Demeulemeester, E. Vanhoucke, M. Herroelen, W. RANGEN: A random network generator for activity on the node 
networks. Journal of Scheduling 6: 17-38. 2003. 
http://www.projectmanagement.ugent.be/
Donde Ɵ toma valores de 0.1, 0.2 y 0.3. 
 
6.2. Comparación de Resultados para el RACP de un proyecto 
 
Las pruebas computacionales se realizaron en un computador con procesador Intel Corei3 de 2GHz 
y RAM de 4GB. El algoritmo cuyo pseudocódigo fue descrito anteriormente está programado en 
Java. 
 
Resultados Conjunto 1: se comparan los resultados obtenidos con el método propuesto respecto a 
los algoritmos propuestos por Yamashita (2006), es decir, Scatter Search y los multinicio RMS y 
FMS en las instancias de 4, 6 y 8 recursos con 30 actividades. Se logró resolver las instancias de 
este conjunto, sin embargo, los resultados no son tan competitivos como se esperaba. 
Es importante recalcar que la implementación del método inicialmente no contemplaba la búsqueda 
local que se realiza al finalizar los métodos AStar-Add y AStar-Remove. Dados los resultados al 
realizar esta comparación, se optó por incluir esta búsqueda local como medida para mejorar la 
calidad de la solución. La tabla 2 muestra los resultados para las instancias con 4, 6 y 8 recursos con 
las cuatro versiones del método propuesto incluyendo las versiones que no incluyen la búsqueda 
local mencionada, donde se evidencia el efecto de mejora de la solución a través de dicho 
procedimiento. 
Tabla 2. Comparacion con Scatter Search 
Método Recursos Gap Promedio Gap Mínimo 
Astar Remove sin BL 4 58.30% 6.21% 
 6 48.08% 23.76% 
 8 53.31% 13.98% 
Astar Add sin BL 4 48.60% 12.46% 
 6 42.75% 17.99% 
 8 49.06% 11.98% 
Astar Remove 4 36.17% 9.61% 
 6 32.58% 17.61% 
 8 30.79% 14.79% 
Astar Add 4 47.72% 10.25% 
 6 36.57% 22.87% 
 8 40.64% 22.86% 
G Remove 4 35.93% 9.61% 
 6 30.80% 17.94% 
 8 30.31% 14.79% 
G Add 4 37.79% 12.74% 
 6 29.79% 17.99% 
 8 33.34% 17.25% 
Fuente: elaboración propia 
Se esperaba que para las instancias de menor cantidad de recursos se tuvieran los mejores resultados 
promedio, sin embargo, el desempeño es mejor en las de 6 recursos para 3 de los 4 métodos 
definitivos. Los GAP mínimos si son como se esperaba obtenidos en las instancias de 4 recursos. 
La figura 5 resume los resultados, donde se puede concluir que los métodos con mejor desempeño 
general en estas instancias son los exhaustivos, principalmente G-Remove. La diferencia de 
desempeño entre el método exhaustivo G Remove y el basado en indicadores lógicos Astar Remove 
no es considerable, por lo cual se puede decir que este enfoque de reducción por medio del Beam 
A* Search, de la cota superior de recurso es suficientemente bueno como para igualar a la búsqueda 
exhaustiva. 
Figura 5. Comparación con SS, GAP Mínimo y Gap Promedio 
 
Fuente: elaboración propia 
El efecto de la búsqueda local en las versiones del método basadas en indicadores lógicos es evidente 
en la calidad de la solución a nivel general, pues se observan reducciones en el valor del GAP 
promedio, consistiendo en una mejora del 61%, 47% y 73% en la calidad de la solución para las 
instancias de 4, 6 y 8 recursos respectivamente. 
Efecto de las reglas de despacho y de los indicadores de criticidad de recurso 
Se realizaron pruebas ANOVA para establecer si hay diferencias en los resultados de las versiones 
del método respecto a las reglas de despacho utilizadas. Con una confianza del 95% se concluye 
que para los métodos Astar Add las reglas de despacho si son incidentes (p-value=0,0448), pudiendo 
afirmarse que la regla con mejor funcionamiento en este método es MWR, esto se ilustra en la figura 
6 usando como referente el GAP obtenido en una muestra de instancias. Para esta misma versión se 
encontró que no hay diferencia significativa en los resultados obtenidos con los diferentes 
indicadores de determinación del recurso crítico para realizar la adición de recurso. 
Figura 6. Resultados con Diferentes Reglas de Despacho 
 
Fuente: Elaboración propia 
En la versión Astar Remove no se encontró diferencia significativa en los resultados obtenidos 
utilizando las diferentes reglas de despacho. Para esta versión se utilizaron los indicadores de 
determinación del recurso crítico y sus correspondientes criterios invertidos para establecer el 
recurso no crítico al cual remover una unidad de recurso. Se encuentra que hay evidencia estadística 
para afirmar que no hay efecto en la combinación de indicadores lógicos de criticidad de recurso. 
Para los métodos exhaustivos tampocose encontró impacto en las reglas de despacho, ni en los 
indicadores de recurso crítico y no crítico, esto es explicado debido a que la exploración exhaustiva 
no está ligada a dichos criterios, sino que selecciona un recurso luego de evaluar la reducción lograda 
al agregar a todos, una unidad a la vez. 
 
Resultados Conjunto 2: en las instancias RACP30 de Van Pethegen y Vanhoucke se obtuvieron 
resultados positivos ya que el algoritmo logró en tres versiones evaluadas un GAP promedio del 
orden del 14% y cada versión resolvió a optimalidad un 12%, 13% y 9% del total de 720 instancias 
evaluadas. La tabla 3 muestra los resultados obtenidos con los métodos evaluados y para cada uno 
de los 3 factores de fecha de entrega (DF). 
Tabla 3. Resultados Métodos Propuestos en Instancias RACP30 
 DF 
GAP 
Promedio 
GAP 
mínimo 
GAP 
Máximo Óptimos % Óptimos 
Total 
Óptimos 
Astar Remove 1 11.5% 0.0% 66.9% 38 16% 
87 1.1 14.0% 0.0% 46.7% 21 9% 
 1.2 14.8% 0.0% 48.6% 28 12% 
G Add 1 9.8% 0.0% 59.3% 41 17% 
96 1.1 12.2% 0.0% 45.6% 24 10% 
 1.2 12.8% 0.0% 47.3% 31 13% 
G Remove 1 11.6% 0.0% 64.6% 30 13% 
65 1.1 14.0% 0.0% 43.9% 13 5% 
 1.2 14.8% 0.0% 47.3% 22 9% 
Fuente: Elaboración propia 
Las pruebas de significancia demuestran con un p-value de 0.039 considerando un nivel de 
confianza del 95% que el desempeño de los algoritmos probados es significativamente diferente 
pudiendo afirmarse la superioridad de la versión G Add para este grupo de instancias puesto que en 
este método se observa el menor gap promedio y la mayor cantidad de soluciones óptimas 
encontradas. 
Se esperaba un mejor desempeño de la versión basada en los indicadores lógicos planteados (Astar 
Remove), aunque si bien es superada por el G Add, resulta tener mejores resultados que la versión 
exhaustiva G Remove. En la tabla 4 se presenta el tiempo computacional promedio en segundos, de 
las versiones del método en evaluación. 
 
 
 
Tabla 4. Resultados RACP30 - Tiempo computacional 
 DF 
Tiempo 
Computacional 
(Segundos) 
Desviación 
Estándar 
Astar Remove 1 16.41 14.52 
 1.1 13.77 15.70 
 1.2 11.70 15.78 
G Add 1 61.65 35.01 
 1.1 45.63 30.74 
 1.2 41.52 75.35 
G Remove 1 12.51 9.85 
 1.1 10.49 7.97 
 1.2 8.58 6.55 
Fuente: elaboración propia 
Se aprecia que tal como se esperaría de los métodos exhaustivos, son los que presentan los mayores 
tiempos computacionales. Precisamente la versión G Add es la que requiere mayor tiempo, como 
se esperaba ya que utiliza el algoritmo robusto Beam A* Search en cada iteración del método. Este 
hecho es la principal diferencia en el tiempo computacional al compararlo con el disparo de las 
reglas de despacho en la adición de recursos que se usa en las versiones G Remove y Astar Remove. 
En la figura 7 se ilustra esta afirmación. 
Figura 7. Tiempo Computacional de los Métodos Propuestos. DF=1 
 
Fuente: Elaboración propia 
Como máximo, se registraron tiempos de 331, 276 y 243 segundos necesarios para resolver 
instancias para los factores de expansión DF de 1, 1.1 y 1.2 respectivamente, lo cual permite afirmar 
que los métodos propuestos en este grupo de instancias son competitivos en cuanto a tiempo 
computacional. 
Cabe agregar que el tiempo computacional es más bajo a medida que aumenta el valor del factor de 
expansión de la fecha de entrega. Esto es consistente dado que, a mayor fecha de entrega, se le da 
mayor margen de maniobra a las actividades de tal manera que menor cantidad de actividades 
realizándose simultáneamente posibilitan la asignación de una menor cantidad de recurso, por lo 
cual, se realizan menos llamadas al algoritmo Beam A* Search en la fase del cálculo de la duración 
del proyecto. 
Las figuras 8, 9 y 10 ilustran el comportamiento del tiempo computacional en una escala logarítmica 
(base 10) para cada uno de los factores de expansión de la fecha de entrega (DF) respectivamente 
para los tres métodos utilizados en este grupo de instancias. 
 
Figura 8. Tiempo Computacional G Remove 
 
Fuente: Elaboración propia 
Figura 9. Tiempo Computacional G Add 
 
Fuente: Elaboración propia 
 
Figura 10. Tiempo Computacional Astar Remove 
 
Fuente: Elaboración propia 
 
6.3. Resultados en Instancias RACP Multiproyecto 
 
Procedimiento de Solución 
El método propuesto con sus cuatro versiones debe contemplar el cumplimiento de la fecha de 
entrega de cada proyecto y que cada uno puede iniciar máximo en una fecha de inicio 𝑡𝑜𝑠 
predefinida. 
Para la solución de las instancias multiproyecto conservando la misma estructura del método 
propuesto, se realizó el ajuste de la información de las instancias para que pueda ser cumplida la 
fecha de entrega de cada proyecto y que cada uno de éstos inicie en sus fechas de inicio permitidas. 
Siguiendo el enfoque tradicional de los problemas multiproyecto en el que el conjunto de proyectos 
puede ser visto como un mega proyecto, con la modificación realizada, las soluciones obtenidas 
cumplen las restricciones del problema mientras se intenta minimizar el costo total de recursos 
asignado a todo el conjunto de proyectos. 
La figura 11 muestra la estructura básica del problema multiproyecto propuesto. El horizonte de 
planeación T corresponde a la máxima fecha de entrega. En este ejemplo se tienen cuatro proyectos 
con fecha de entrega definida y una fecha de inicio máxima permitida según la descripción del 
problema. Tan solo el proyecto 1 inicia en el momento 0, mientras que los demás proyectos tienen 
tiempos de inicio 𝑡𝑜𝑠 > 0 . 
Figura 11. Estructura Básica del Problema RACP Multiproyecto propuesto 
 
Fuente: Elaboración propia 
Para logar el cumplimiento de las fechas de entrega de cada proyecto y del inicio de las actividades 
iniciales de cada uno en las fechas permitidas, se incluyeron actividades ficticias a cada proyecto 
cuya fecha de inicio permitida sea mayor que cero (𝑡𝑜𝑠 > 0). Estas actividades ficticias tendrán una 
duración equivalente a sus respectivos inicios permitidos 𝑡𝑜𝑠. Mientras que para lograr el 
cumplimiento de las fechas de entrega de cada proyecto se incluyeron actividades ficticias 
seguidamente a las actividades finales de cada proyecto. La figura 12 ilustra esta situación para un 
ejemplo de 4 proyectos, donde el proyecto 2 debe ser entregado en t=100 y el horizonte de 
planeación es T=200. 
Figura 12. Ejemplo de Conjunto de 4 Proyectos – Actividades Ficticias Incluidas 
 
Fuente: Elaboración propia 
Se puede observar que las actividades ficticias incluidas B’, C’ y D’ para los proyectos 1, 2 y 3 
deben tener una duración pero no un requerimiento de recurso. Para establecer la duración de las 
actividades ficticias se toma como ejemplo el proyecto 2. Tanto B como C son actividades que por 
tarde deben terminar en t=100 para cumplir la entrega del proyecto 2. La diferencia entre dicha 
entrega y el horizonte de planeación es de t=200-100 =100 unidades de tiempo, entonces dicha 
diferencia será la duración que tendrán las actividades B’ y C’ del proyecto 2. Este valor de duración 
es consistente al conservar la criticidad de la actividad B, y la holgura presente en la actividad C, 
puesto que por temprano termina en 90, es decir que por temprano C’ iniciaría en 90 y terminaría 
en 190, sin alterar el horizonte de planeación. 
Adicionalmente, si se evalúan los tiempos tardíos, se observa que por tarde la actividad C puede 
terminar en 100, cumpliendo la entrega del proyecto 2, por lo cual la actividad C’ iniciaría por tarde 
en 100 y terminaría por tarde en t=200, cumpliendo con el horizonte de planeación, así se permite 
que la actividad C y su ficticia C’ conserven su holgura. 
Se obtuvieron soluciones de las instancias propuestas y debido al esfuerzo computacional, para las 
instancias adaptadas de Perez, et. al. solo se resolvieron las que corresponden a un total de 60 
actividades en total (p*a). En la tabla 5 se muestra el valor del GAP promedio y el