package jobshop.encodings; import jobshop.Instance; import jobshop.Result; import jobshop.solvers.Solver; import jobshop.solvers.BasicSolver; import org.junit.Test; import java.io.IOException; import java.nio.file.Paths; public class EncodingTests { @Test public void testJobNumbers() throws IOException { Instance instance = Instance.fromFile(Paths.get("instances/aaa1")); // numéro de jobs : 1 2 2 1 1 2 (cf exercices) JobNumbers enc = new JobNumbers(instance); enc.jobs[enc.nextToSet++] = 0; enc.jobs[enc.nextToSet++] = 1; enc.jobs[enc.nextToSet++] = 1; enc.jobs[enc.nextToSet++] = 0; enc.jobs[enc.nextToSet++] = 0; enc.jobs[enc.nextToSet++] = 1; Schedule sched = enc.toSchedule(); // TODO: make it print something meaningful // by implementing the toString() method System.out.println(sched); assert sched.isValid(); assert sched.makespan() == 12; // numéro de jobs : 1 1 2 2 1 2 enc = new JobNumbers(instance); enc.jobs[enc.nextToSet++] = 0; enc.jobs[enc.nextToSet++] = 0; enc.jobs[enc.nextToSet++] = 1; enc.jobs[enc.nextToSet++] = 1; enc.jobs[enc.nextToSet++] = 0; enc.jobs[enc.nextToSet++] = 1; sched = enc.toSchedule(); assert sched.isValid(); assert sched.makespan() == 14; } @Test public void testBasicSolver() throws IOException { Instance instance = Instance.fromFile(Paths.get("instances/aaa1")); // build a solution that should be equal to the result of BasicSolver JobNumbers enc = new JobNumbers(instance); enc.jobs[enc.nextToSet++] = 0; enc.jobs[enc.nextToSet++] = 1; enc.jobs[enc.nextToSet++] = 0; enc.jobs[enc.nextToSet++] = 1; enc.jobs[enc.nextToSet++] = 0; enc.jobs[enc.nextToSet++] = 1; Schedule sched = enc.toSchedule(); assert sched.isValid(); assert sched.makespan() == 12; Solver solver = new BasicSolver(); Result result = solver.solve(instance, System.currentTimeMillis() + 10); assert result.schedule.isValid(); assert result.schedule.makespan() == sched.makespan(); // should have the same makespan } }