Generator of flexible job shops

Flexible job shop scheduling problems are a generalization of classical job shop scheduling problems which allows an operation to be processed by a subset of machines. Furthermore, an operation has machine-dependent processing times.

Running the following code generates an instance of such a problem

python3 main.py [-pmin PROCESSING_TIME_MIN] [-pmax PROCESSING_TIME_MAX]
                [-dp DELTA_PROCESSING_TIME] [-am AVG_ASSIGNED_MACHINES]
                [-mm MAX_ASSIGNED_MACHINES]
                jobs machines

Afterwards, the instance, which is created as explained in ./Instances/DataSetExplanation.txt, is stored in ./Instances/. Some examples with varying problem sizes can be found in ./Instances/Jawaid/.

Background and assumptions

jobs and machines not only determine the number of jobs and machines in a flexible job shop scheduling problem, the parameter machines also equals the number of operations of each job.

As mentioned above, a flexible job store scheduling problem allows an operation to be processed by a subset of machines. In this generator, the subset is bounded by the parameters max_assigned_machines and avg_assigned_machines. Thus, the maximum and the average number of machines assigned to an operation are determined by max_assigned_machines and avg_assigned_machines. According to "Tabu Search for the Job-Shop Scheduling Problem with Multi-Purpose Machines" Hurink et. al, 1994.

Additionally, processing times of operations are limited. On the one hand, processing times are limited over a entire scheduling problem by processing_time_min and processing_time_max. On the other hand, delta_processing_time defines the difference of processing times within operations.