Managing Projects with Uncertain Deadlines
Tom M Logan
www.tomlogan.co.nz
Please cite this code as:
R.F. Bordley et al., Managing projects with uncertain deadlines, European Journal of Operational Research (2018), https://doi.org/10.1016/j.ejor.2018.09.036
Files
|- main.R
|- generate_projects.R
Steps
- main
- set seed
- vary parameters
- link density
- variance of activity times
- variance of deadline
- baseline deadline (?)
- generate projects (calls
generate_projects.R
) - compare crash strategies
- record result
- repeat
- generate projects
- generate a binary upper triangular matrix using a parameter for link density
- remove paths which are subpaths of other paths
- draw activity mean (random uniform variable (0,1)) and variance (exponential random variable (4))
- compare strategies
- loop crash strategies
- update activities accordingly
- determine project properties (call
CalculatePathProperties
inmain.R
)- identify paths from precedence matrix
- loop through paths
- calculate mean
- calculate variance
- determine covariance
- on-time completion probability (call
CalculateCompletionProbability
inmain.R
)
Crashing rules:
-
Crash the critical path
Calculate a crash reserve (the total amount of crashing we can use): 20% of sum of activity means- Identify the critical path
- Identify activities on the critical path
- Rank the activities based on
- Their mean time
- Crash the activity
- Reduce mean by 50% or the remaining crashing reserve.
- Variance remains constant
Repeat until crashing reserve is depleted.
-
Probability of lateness:
- Calculate the probability that each path is completed before the deadline
- For each activity, calculate the product of the probabilities of its paths completing on-time
- For each activity, subtract this probability from 1. This gives the probability of this activity being on at least one late path.
- Rank by this probability, and if equal, by the mean
- Crash the activity
- Reduce the mean 50%
- Variance constant
Crash the top activities until the crashing reserve is spent.