Input Data¶
The input data for partial flexible job shop schedule problem instances with sequence dependent setup times is encoded in three csv files.
The input data for flexible job shop schedule problem instances is encoded in a .fjs
file.
To see the full example files, view them on GitHub.
FJS Instances with Sequence Dependent Setup Times¶
jobTasks.csv¶
Contains a table of all job-tasks and their sequence numbers, usable machines, and pieces.
Job-tasks need to be in ascending order according to (job_id, task_id)
Job | Task | Sequence | Usable_Machines | Pieces |
0 | 0 | 0 | [4 5] | 19116 |
0 | 1 | 1 | [0 1 2 4 5 6 7] | 7897 |
0 | 2 | 2 | [0 1 2] | 23430 |
0 | 3 | 2 | [2 7] | 21321 |
0 | 4 | 3 | [0 3 6] | 15368 |
0 | 5 | 3 | [3 4] | 23025 |
0 | 6 | 4 | [2 3 4 6 7] | 20115 |
1 | 0 | 0 | [3 6] | 22455 |
1 | 1 | 1 | [3 6] | 19165 |
1 | 2 | 1 | [2] | 8762 |
1 | 3 | 2 | [5 7] | 18824 |
1 | 4 | 2 | [0 2] | 9305 |
2 | 0 | 0 | [0 3 4] | 19368 |
2 | 1 | 1 | [1 4 5 6] | 20875 |
2 | 2 | 1 | [1 2 4 6] | 12997 |
2 | 3 | 1 | [2 3 4 6] | 6134 |
machineRunSpeed.csv¶
Contains a list of all machine IDs and run speeds.
Machine | RunSpeed |
0 | 123 |
1 | 58 |
2 | 76 |
3 | 83 |
4 | 111 |
5 | 100 |
6 | 98 |
7 | 151 |
sequenceDependencyMatrix.csv¶
Contains a matrix of job-task setup times.
Job-tasks need to be in ascending order according to (job_id, task_id)
. | 0_0 | 0_1 | 0_2 | 0_3 | 0_4 | 0_5 | 0_6 | 1_0 | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_1 | 2_2 |
0_0 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | 5 | 2 | 3 | 1 | 1 | 8 | 7 | 3 |
0_1 | 1 | -1 | -1 | -1 | -1 | -1 | -1 | 8 | 2 | 1 | 8 | 7 | 8 | 1 | 5 |
0_2 | -1 | 7 | -1 | 4 | -1 | -1 | -1 | 8 | 8 | 6 | 3 | 2 | 8 | 6 | 1 |
0_3 | -1 | 2 | 6 | -1 | -1 | -1 | -1 | 3 | 2 | 3 | 7 | 8 | 5 | 7 | 2 |
0_4 | -1 | -1 | 2 | 3 | -1 | 2 | -1 | 5 | 8 | 9 | 5 | 5 | 7 | 6 | 2 |
0_5 | -1 | -1 | 5 | 4 | 2 | -1 | -1 | 2 | 3 | 9 | 2 | 8 | 9 | 3 | 7 |
0_6 | -1 | -1 | -1 | -1 | 9 | 9 | -1 | 5 | 1 | 5 | 3 | 8 | 5 | 5 | 6 |
1_0 | 7 | 7 | 8 | 1 | 6 | 5 | 8 | -1 | -1 | -1 | -1 | -1 | 5 | 7 | 7 |
1_1 | 4 | 4 | 5 | 2 | 3 | 5 | 9 | 2 | -1 | 4 | -1 | -1 | 1 | 8 | 9 |
1_2 | 7 | 4 | 8 | 9 | 5 | 9 | 3 | 7 | 7 | -1 | -1 | -1 | 6 | 8 | 9 |
1_3 | 3 | 6 | 2 | 7 | 7 | 1 | 4 | -1 | 8 | 1 | -1 | 7 | 9 | 3 | 9 |
1_4 | 8 | 9 | 3 | 5 | 7 | 1 | 8 | -1 | 9 | 6 | 5 | -1 | 4 | 6 | 9 |
2_0 | 3 | 1 | 7 | 9 | 6 | 8 | 4 | 6 | 1 | 4 | 1 | 9 | -1 | -1 | -1 |
2_1 | 3 | 2 | 4 | 3 | 6 | 8 | 1 | 7 | 7 | 2 | 1 | 7 | 6 | -1 | 8 |
2_2 | 5 | 5 | 3 | 9 | 3 | 2 | 6 | 8 | 6 | 5 | 7 | 6 | 4 | 9 | -1 |
The rows of sequenceDependencyMatrix.csv represent the current job-task in the form j_t where j is the job ID and t is the task ID. The columns represent the previous job-task. A matrix value at index (j_t, x_y) represents the setup time to schedule job-task j_t after job-task x_y on a machine. Matrix values with the value -1 represent cases where the current job-task (row) cannot be scheduled after the previous job-task (column).
FJS Instances¶
In the first line there are (at least) 2 numbers:
- the number of jobs
- the number of machines
- the average number of machines per operation (optional)
Every row represents one job:
- the first number is the number of operations of that job
- the second number (let’s say k>=1) is the number of machines that can process the first operation; then according to k, there are k pairs of numbers (machine, processing time) that specify which are the machines and the processing times
Example: Fisher and Thompson 6x6 instance, alternate name (mt06)
6 6 1
6 1 3 1 1 1 3 1 2 6 1 4 7 1 6 3 1 5 6
6 1 2 8 1 3 5 1 5 10 1 6 10 1 1 10 1 4 4
6 1 3 5 1 4 4 1 6 8 1 1 9 1 2 1 1 5 7
6 1 2 5 1 1 5 1 3 5 1 4 3 1 5 8 1 6 9
6 1 3 9 1 2 3 1 5 5 1 6 4 1 1 3 1 4 1
6 1 2 3 1 4 3 1 6 9 1 1 10 1 5 4 1 3 1
first row: 6 jobs, 6 machines, and 1 machine per operation
second row: job 1 has 6 operations; the first operation can be processed by 1 machine, that is machine 3 with processing time 1.