$title Resource-Constrained Project Scheduling Problem (RCPSP,SEQ=429)
$ontext
Resource-constrained project scheduling problem (RCPSP) in a formulation
which encodes the schedule using binary finishing time indicator variables
as first proposed by Pritsker.
Problem and model formulation based on:
Pritsker, A. Alan B., Lawrence J. Waiters, and Philip M. Wolfe. "Multiproject
scheduling with limited resources: A zero-one programming approach."
Management science 16.1 (1969): 93-108.
Contains embedded Python code for parsing instance data from the classic
problem library PSPLIB from Kolisch and Sprecher.
Instance library, generator and file format:
Kolisch, Rainer, and Arno Sprecher. "PSPLIB-a project scheduling problem
library: OR software-ORSEP operations research software exchange program."
European journal of operational research 96.1 (1997): 205-216.
http://www.om-db.wi.tum.de/psplib/main.html
As default the first instance from PSPLIBs subset with 30 projects is solved to optimality (makespan=43).
$offtext
* Comment out the following dollar set statement in order to use a tiny explicitly
* specified example project instead of an instance from the PSPLIB
$set instanceName j301_1.sm
* Base project information (primary parameters)
Sets
j 'jobs (must be topologically ordered, i.e. i=ord(t) and ord(tau)<=ord(t)+durations(j)-1 and tw(j,tau)) = yes;
makespan.lo = 0;
solve rcpsp using mip minimizing makespan;
* Derive starting times from binary finishing time indicators
parameter st(j) Starting time of job j in result;
loop(j, loop(t, if(x.l(j,t) = 1, st(j)=ord(t)-durations(j))));
display makespan.l, st;