1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 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().get();
- // 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().get();
- 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().get();
- assert sched.isValid();
- assert sched.makespan() == 12;
-
- Solver solver = new BasicSolver();
- Result result = solver.solve(instance, System.currentTimeMillis() + 10).get(0);
-
- assert result.schedule.get().isValid();
- assert result.schedule.get().makespan() == sched.makespan(); // should have the same makespan
- }
-
- }
|