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.

MainTest.java 3.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package jobshop;
  2. import jobshop.encodings.JobNumbers;
  3. import jobshop.encodings.ResourceOrder;
  4. import jobshop.encodings.Schedule;
  5. import jobshop.encodings.Task;
  6. import java.io.IOException;
  7. import java.nio.file.Paths;
  8. import java.util.NoSuchElementException;
  9. /** A java main classes for testing purposes. */
  10. public class MainTest {
  11. public static void main(String[] args) {
  12. try {
  13. // load the aaa1 instance
  14. Instance instance = Instance.fromFile(Paths.get("instances/aaa1"));
  15. // builds a solution in the job-numbers encoding [0 0 1 1 0 1]
  16. JobNumbers enc = new JobNumbers(instance);
  17. enc.addTaskOfJob(0);
  18. enc.addTaskOfJob(0);
  19. enc.addTaskOfJob(1);
  20. enc.addTaskOfJob(1);
  21. enc.addTaskOfJob(0);
  22. enc.addTaskOfJob(1);
  23. // convert to a schedule and display
  24. Schedule schedule = enc.toSchedule().get();
  25. System.out.println("VALID: " + schedule.isValid());
  26. System.out.println("MAKESPAN: " + schedule.makespan());
  27. System.out.println("SCHEDULE: " + schedule.toString());
  28. System.out.println("GANTT: " + schedule.asciiGantt());
  29. // Création du schedule a la main
  30. Schedule manualSchedule = new Schedule(instance);
  31. manualSchedule.setStartTime(0,0,0);
  32. manualSchedule.setStartTime(0,1,3);
  33. manualSchedule.setStartTime(0,2,6);
  34. manualSchedule.setStartTime(1,0,6);
  35. manualSchedule.setStartTime(1,1,8);
  36. manualSchedule.setStartTime(1,2,10);
  37. System.out.println("SCHEDULE: " + manualSchedule.toString());
  38. System.out.println("GANTT: " + manualSchedule.asciiGantt());
  39. //Creation du RO a la main
  40. ResourceOrder manualRO = new ResourceOrder(instance);
  41. manualRO.addTaskToMachine(0, new Task(0,0));
  42. manualRO.addTaskToMachine(0, new Task(1,1));
  43. manualRO.addTaskToMachine(1, new Task(0,1));
  44. manualRO.addTaskToMachine(1, new Task(1,0));
  45. manualRO.addTaskToMachine(2, new Task(0,2));
  46. manualRO.addTaskToMachine(2, new Task(1,2));
  47. System.out.println("SCHEDULE: " + manualRO.toSchedule().get().toString());
  48. System.out.println("GANTT: " + manualRO.toSchedule().get().asciiGantt());
  49. //Modification du RO vers optimum
  50. manualRO.swapTasks(1,0,1);
  51. manualRO.swapTasks(2,0,1);
  52. System.out.println("VALID: " + manualRO.toSchedule().get().isValid());
  53. System.out.println("MAKESPAN: " + manualRO.toSchedule().get().makespan());
  54. System.out.println("SCHEDULE: " + manualRO.toSchedule().get().toString());
  55. System.out.println("GANTT: " + manualRO.toSchedule().get().asciiGantt());
  56. //Creation du RO INVALIDE a la main
  57. ResourceOrder manualROInvalid = new ResourceOrder(instance);
  58. manualROInvalid.addTaskToMachine(0, new Task(1,1));
  59. manualROInvalid.addTaskToMachine(0, new Task(0,0));
  60. manualROInvalid.addTaskToMachine(1, new Task(0,1));
  61. manualROInvalid.addTaskToMachine(1, new Task(1,0));
  62. manualROInvalid.addTaskToMachine(2, new Task(0,2));
  63. manualROInvalid.addTaskToMachine(2, new Task(1,2));
  64. try {
  65. System.out.println("GANTT: " + manualROInvalid.toSchedule().get().asciiGantt());
  66. } catch (NoSuchElementException e ){
  67. System.out.println("On ne peut pas générer le Schedule");
  68. }
  69. } catch (IOException e) {
  70. e.printStackTrace();
  71. System.exit(1);
  72. }
  73. }
  74. }