Solvers

The Solver interface

jobshop.solvers.Solver provides a common interface for all solvers.

Implementing the Solver interface requires implementing a method solve(Instance instance, long deadline) where:

  • instance is the jobshop instance that should be solved.
  • deadline is the absolute time by which the solver should have exited. This deadline is in milliseconds and can be compared with the result of System.currentTimeMillis().

The solve() method should return a Optional<Schedule> object, that provides the found solution (if any) as a Schedule.

BasicSolver

A very simple solver that tries to schedule all first tasks, then all second tasks, then all third tasks, ... It does so using the ResourceOrder encoding.

GreedySolver

The greedy solver is not implemented yet. Its constructor accepts a parameter that specifies the priority that should be used to produce solutions.

DescentSolver

Not implemented yet. It should use the Nowicki and Smutnicki neighborhood for which some initial code is provided in the jobshop.solver.neighborhood package.