123456789101112131415161718192021222324252627282930313233343536 |
- package jobshop.solvers;
-
- import jobshop.Instance;
- import jobshop.Result;
-
- /** Common interface that must implemented by all solvers. */
- public interface Solver {
-
- /** Look for a solution until blocked or a deadline has been met.
- *
- * @param instance Jobshop instance that should be solved.
- * @param deadline Absolute time at which the solver should have returned a solution.
- * This time is in milliseconds and can be compared with System.currentTimeMilliseconds()
- * @return A Result containing the solution found and an explanation of why the solver exited.
- */
- Result solve(Instance instance, long deadline);
-
- /** Static factory method to create a new solver based on its name. */
- static Solver getSolver(String name) {
- switch (name) {
- case "basic": return new BasicSolver();
- case "random": return new RandomSolver();
- case "spt": return new GreedySolver(GreedySolver.Priority.SPT);
- case "lpt": return new GreedySolver(GreedySolver.Priority.LPT);
- case "srpt": return new GreedySolver(GreedySolver.Priority.SRPT);
- case "lrpt": return new GreedySolver(GreedySolver.Priority.LRPT);
- case "est_spt": return new GreedySolver(GreedySolver.Priority.EST_SPT);
- case "est_lpt": return new GreedySolver(GreedySolver.Priority.EST_LPT);
- case "est_srpt": return new GreedySolver(GreedySolver.Priority.EST_SRPT);
- case "est_lrpt": return new GreedySolver(GreedySolver.Priority.EST_LRPT);
- // TODO: add new solvers
- default: throw new RuntimeException("Unknown solver: "+ name);
- }
- }
-
- }
|