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

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