Planning and Scheduling Problem Instances

The instances are in http://public.tepper.cmu.edu/jnh/planningandscheduling.zip.

The instance files are named XNjMmK.dat, where

X = problem class (c, e, de, or df)
N = number of tasks
M = number of facilities
K = instance number (1-5)

For example, file c10j3m1.dat contains the first random problem in class c with 10 tasks and 3 facilities.

Problem classes:

c: All tasks in a given instance have the same release date (0) and due date.  M = 2,3,4, N = 10, ..., 38.  Machine speeds vary by as much as a factor of M.  See "problem generation" below for details.  Used in , , .
e: All tasks in a given instance have the same release date (0) and due date.  M = 2,3,...,10, N = 5M.  Machine speeds vary by as much as a factor of 1.5.  Used in , .
de: Tasks have the same release date (0) but different due dates.  M = 3, N = 14, ..., 28.  Used in ,.
df: Tasks have different release dates and due dates.  M = 3, N = 14, ..., 28.  Used in .

References:

 J. N. Hooker, A hybrid method for planning and scheduling, CP 2004.
 J. N. Hooker, Planning and scheduling to minimize tardiness, CP 2005.
 J. N. Hooker, Planning and scheduling by logic-based Benders decomposition, working paper.

Input format:

The input files XNjMmK.dat are designed to be read by OPL studio with the following code:

struct MachineJobData {
int+ duration;
int+ resource;
int+ cost;
};
struct JobData {
int+ release;
int+ deadline;
};
range Jobs 1..JobCount;
range Machines 1..MachineCount;
int JobCount = ...;
int MachineCount = ...;
MachineJobData machjob[Machines,Jobs] = ...;
JobData job[Jobs] = ...;
int+ Limit[Machines] = ...;

The file format is:

JobCount = 10 ;
MachineCount = 3 ;
machjob = [
[<p11 c11 f11> ... <p1N c1N f1N>]
...
[<pM1 cM1 fM1> ... <pMN cMN fMN>]
];
Limit = [C1, ..., CM];
job = [<r1 d1> ... <rN dN>];

where

pij = processing time of task j on facility i
cij = resource consumption of task j on facility i
fij = fixed cost of running task j on facility i
Ci = resource limit on facility i
rj = release time of job j
dj = due date of job j

Problem generation:

• Capacity limit on each facility = 10.
• Capacity requirement of each task on each facility is drawn from a uniform distribution on [1,10].
• Processing time for each task on each facility is drawn from a uniform distribution on [P1,P2].
• Release date for each task is drawn from a uniform distribution on [R1,R2].
• Due date for each task is drawn from a uniform distribution on [D1,D2].
• Cost of each task on each facility is drawn from a uniform distribution on [F1,F2].

where:

 Problem class [R1,R2] [D1,D2] [P1,P2] [F1,F2] c [0,0] [D(1/3),D(1/3)]* [i,10i] where i = facility number [2(M-i+1),20(M-i+1)] where i = facility number e [0,0] [33,33] [2,25-(i-1)(10/(M-1))] where i = facility number [400/(25-(i-1)(10/(M-1))), 800/(25-(i-1)(10/(M-1)))] where i = facility number de [0,0] [(1/4)D(1/3),D(1/3)]* [P1,30] for i = 1 [P1,25] for i = 2 [P1,20] for i = 3 where P1 = 2 for N <= 20 and P1 = 5 for N > 20, and where i = facility number [10,40] for i = 1 [20,50] for i = 2 [30,60] for i = 3 where i = facility number df [0,D(1/2)]* [r+(1/4)D(1/2),r+D(1/2)] where r = randomly chosen release time* same as de same as de

*D(a) = 5aN(M+1)/M