No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long. 3.4KB

Heuristic methods for JobShop scheduling

This repository contains the starter code for the assignment.


Compilation instructions are given for Linux. On windows you can use the gradlew.bat script.

❯ ./gradlew build  # Compiles the project
❯ ./gradlew jar      # Creates a fat-jar in build/libs/JSP.jar

The compiled jar is now build/libs/JSP.jar can be executed like so :

❯ java -jar build/libs/JSP.jar --solver basic --instance ft06

The command line above indicates that we want to solve the instance namedft06 with the basic solver. It should give an output like the following :

instance size  best      runtime makespan ecart
ft06     6x6     55            1       60   9.1
AVG      -        -          1.0        -   9.1

Fields in the result view are the following :

  • instance: name of the instance
  • size: size of the instance {nom-jobs}x{num-tasks}
  • best: best known resultfor this instance
  • runtime: time taken by the solver in milliseconds (rounded)
  • makespan: makespan of the solution
  • ecart: normalized distance to the best result: 100 * (makespan - best) / best

One can also specify multiple solvers (below basic and random) and instances (below ft06, ft10 and ft20) for simultaneous testing:

❯ java -jar build/libs/JSP.jar --solver basic random --instance ft06 ft10 ft20

                         basic                         random
instance size  best      runtime makespan ecart        runtime makespan ecart
ft06     6x6     55            1       60   9.1            999       55   0.0
ft10     10x10  930            0     1319  41.8            999     1209  30.0
ft20     20x5  1165            0     1672  43.5            999     1529  31.2
AVG      -        -          0.3        -  31.5          999.0        -  20.4

Here the last line give the average runtime and ecart for each solver.

usage: jsp-solver [-h]  [-t TIMEOUT] --solver SOLVER [SOLVER ...]
                  --instance INSTANCE [INSTANCE ...]

Solves jobshop problems.

named arguments:
  -h, --help             show this help message and exit
  --solver SOLVER [SOLVER ...]
                         Solver(s) to use  (space  separated  if  more than
  -t TIMEOUT, --timeout TIMEOUT
                         Solver  timeout  in  seconds   for  each  instance
                         (default: 1)
  --instance INSTANCE [INSTANCE ...]
                         Instance(s) to  solve  (space  separated  if  more
                         than one)

Running directly from Gradle

The project can be executed directly with gradle by specifying the arguments like so :

❯ ./gradlew run --args="--solver basic random --instance aaa1 ft06 ft10 ft20"

This notably ensures that sources have been recompiled whenever necessary.

IDE Support

Most IDEs should provide support for importing gradle projects. However, our experience has been best with IntelliJ so far and we would recommend it.


IntelliJ has worked best, with out of the box support for the import of gradle projets:


Most technical problems have been related to the use of Eclipse so we don’t recommend using it unless you have a good reason to. We have however configured gradle to allow generating an eclipse configuration like so :

./gradlew eclipseClean eclipse