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.

EncodingTests.java 2.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package jobshop.encodings;
  2. import jobshop.Instance;
  3. import jobshop.Result;
  4. import jobshop.solvers.Solver;
  5. import jobshop.solvers.BasicSolver;
  6. import org.junit.Test;
  7. import java.io.IOException;
  8. import java.nio.file.Paths;
  9. public class EncodingTests {
  10. @Test
  11. public void testJobNumbers() throws IOException {
  12. Instance instance = Instance.fromFile(Paths.get("instances/aaa1"));
  13. // numéro de jobs : 1 2 2 1 1 2 (cf exercices)
  14. JobNumbers enc = new JobNumbers(instance);
  15. enc.jobs[enc.nextToSet++] = 0;
  16. enc.jobs[enc.nextToSet++] = 1;
  17. enc.jobs[enc.nextToSet++] = 1;
  18. enc.jobs[enc.nextToSet++] = 0;
  19. enc.jobs[enc.nextToSet++] = 0;
  20. enc.jobs[enc.nextToSet++] = 1;
  21. Schedule sched = enc.toSchedule().get();
  22. // TODO: make it print something meaningful
  23. // by implementing the toString() method
  24. System.out.println(sched);
  25. assert sched.isValid();
  26. assert sched.makespan() == 12;
  27. // numéro de jobs : 1 1 2 2 1 2
  28. enc = new JobNumbers(instance);
  29. enc.jobs[enc.nextToSet++] = 0;
  30. enc.jobs[enc.nextToSet++] = 0;
  31. enc.jobs[enc.nextToSet++] = 1;
  32. enc.jobs[enc.nextToSet++] = 1;
  33. enc.jobs[enc.nextToSet++] = 0;
  34. enc.jobs[enc.nextToSet++] = 1;
  35. sched = enc.toSchedule().get();
  36. assert sched.isValid();
  37. assert sched.makespan() == 14;
  38. }
  39. @Test
  40. public void testBasicSolver() throws IOException {
  41. Instance instance = Instance.fromFile(Paths.get("instances/aaa1"));
  42. // build a solution that should be equal to the result of BasicSolver
  43. JobNumbers enc = new JobNumbers(instance);
  44. enc.jobs[enc.nextToSet++] = 0;
  45. enc.jobs[enc.nextToSet++] = 1;
  46. enc.jobs[enc.nextToSet++] = 0;
  47. enc.jobs[enc.nextToSet++] = 1;
  48. enc.jobs[enc.nextToSet++] = 0;
  49. enc.jobs[enc.nextToSet++] = 1;
  50. Schedule sched = enc.toSchedule().get();
  51. assert sched.isValid();
  52. assert sched.makespan() == 12;
  53. Solver solver = new BasicSolver();
  54. Result result = solver.solve(instance, System.currentTimeMillis() + 10).get(0);
  55. assert result.schedule.get().isValid();
  56. assert result.schedule.get().makespan() == sched.makespan(); // should have the same makespan
  57. }
  58. }