Repository navigation
🧩 Constraint Solving POTD:Problem of the Day: Resource-Constrained Project Scheduling (RCPSP) #67405
Closed
Replies: 1 comment
|
This discussion has been marked as outdated by Constraint Solving — Problem of the Day. A newer discussion is available at Discussion #67706. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Problem Statement
The Resource-Constrained Project Scheduling Problem asks: given a set of tasks with precedence dependencies and limited resources, find a schedule that minimizes makespan (total project duration) while respecting all constraints.
Consider a small example: You have 4 tasks (A, B, C, D) that must be completed on a construction project:
Resource constraint: Only 1 worker is available at any time.
Input:
Output:
Why It Matters
Construction and engineering: General contractors must coordinate subcontractors (electricians, plumbers, carpenters) with limited availability. Delays in one trade cascade through the critical path, making optimal scheduling essential for profitability.
Software project management: Development sprints involve dependencies between modules, limited developer capacity, and integration phases. Poor scheduling causes bottlenecks and missed deadlines.
Manufacturing: Production lines must schedule jobs on bottleneck machines while respecting bill-of-materials dependencies and available labor. Even small improvements in makespan save millions in operational costs.
Modeling Approaches
Approach 1: Mixed-Integer Programming (MIP)
Paradigm: Linear programming with binary variables for task timing.
Decision variables:
s_i= start time of task i (continuous)z_ij= binary variable (1 if task i finishes before task j starts)Key constraints:
Trade-offs:
Approach 2: Constraint Programming (CP)
Paradigm: Declarative modeling with specialized propagation.
Decision variables:
start[i]= start time of task i (integer domain)end[i]= end time of task iKey constraints:
Trade-offs:
Example Model (MiniZinc)
Key Techniques
1. Cumulative Global Constraint with Edge-Finding
The
cumulative(starts, durations, resources, capacity)constraint is the workhorse of RCPSP solvers. Modern implementations use:2. Critical Path Analysis & Precedence Relaxation
Before solving, compute:
This provides a good lower bound on makespan and guides search.
3. Restart Strategy & Variable Ordering
RCPSP can have a large search tree. Effective solvers use:
Challenge Corner
Can you reduce the search space by pre-computing constraints on start times?
Think about this: given a deadline D on the entire project, how would you compute forbidden intervals—time periods during which a task cannot start—without solving the full RCPSP? What role does the cumulative constraint play in eliminating these intervals?
Extension: Suppose now some tasks can be preempted (paused and resumed later). How would this change your model? What additional constraints or decision variables would you need?
References
Brucker, P., Drexl, A., et al. (1999). "Resource-constrained project scheduling: Notation, classification, models, and methods." European Journal of Operational Research, 112(1), 3–41.
Laborie, P. & Godard, D. (2007). "Self-adjusting factory scheduling with double-part systems." Proceedings of the International Conference on Principles and Practice of Constraint Programming.
Schwindt, C. & Zimmermann, J. (2015). Handbook on Project Management and Scheduling (Vol. 1). Springer.
Baptiste, P., Le Pape, C., & Nuijten, W. (2001). Constraint-Based Scheduling: Applying Constraint Programming to Scheduling Problems. Kluwer.
All reactions