Mise en place de code et Manupulation des représentations : TERMINE

This commit is contained in:
Faure Paul 2021-04-14 10:38:06 +02:00
parent fcf0a8b19a
commit 9bc6dfdec3
2 changed files with 56 additions and 4 deletions

22
notes.txt Normal file
View file

@ -0,0 +1,22 @@
Encodage : ordre des jobs [0,0,1,1,0,1]
=> job 0 puis job 0 puis 1 ...
Du coup :
J0T0 -> machine0 [0,3]
J0T1 -> machine1 [3,6]
J1T0 -> machine1 [6,8]
J1T1 -> machine0 [8,10]
J0T2 -> machine2 [6,8]
J1T2 -> machine2 [10,14]
Validé par experimentation
Version optimum
J0T0 -> machine0 [0,3]
J1T0 -> machine1 [0,2]
J0T1 -> machine1 [3,6]
J1T1 -> machine0 [3,5]
J1T2 -> machine2 [5,9]
J0T2 -> machine2 [9,11]
Attention SI SOLUTION PAS POSSIBLE, RAISE EXCEPTION

View file

@ -34,13 +34,43 @@ public class MainTest {
System.out.println("SCHEDULE: " + schedule.toString());
System.out.println("GANTT: " + schedule.asciiGantt());
// Création du schedule a la main
Schedule manualSchedule = new Schedule(instance);
// TODO: encode the same solution
//manualSchedule.setStartTime(....);
manualSchedule.setStartTime(0,0,0);
manualSchedule.setStartTime(0,1,3);
manualSchedule.setStartTime(0,2,6);
manualSchedule.setStartTime(1,0,6);
manualSchedule.setStartTime(1,1,8);
manualSchedule.setStartTime(1,2,10);
System.out.println("GANTT: " + manualSchedule.asciiGantt());
//Creation du RO a la main
ResourceOrder manualRO = new ResourceOrder(instance);
// TODO: encode the same solution
//manualRO.addTaskToMachine(..., new Task(..., ...));
manualRO.addTaskToMachine(0, new Task(0,0));
manualRO.addTaskToMachine(0, new Task(1,1));
manualRO.addTaskToMachine(1, new Task(0,1));
manualRO.addTaskToMachine(1, new Task(1,0));
manualRO.addTaskToMachine(2, new Task(0,2));
manualRO.addTaskToMachine(2, new Task(1,2));
System.out.println("GANTT: " + manualRO.toSchedule().get().asciiGantt());
//Modification du RO vers optimum
manualRO.swapTasks(1,0,1);
manualRO.swapTasks(2,0,1);
System.out.println("OPTIMUM: ");
System.out.println("VALID: " + manualRO.toSchedule().get().isValid());
System.out.println("MAKESPAN: " + manualRO.toSchedule().get().makespan());
System.out.println("SCHEDULE: " + manualRO.toSchedule().get().toString());
System.out.println("GANTT: " + manualRO.toSchedule().get().asciiGantt());
//Creation du RO INVALIDE a la main
ResourceOrder manualROInvalid = new ResourceOrder(instance);
manualROInvalid.addTaskToMachine(0, new Task(1,1));
manualROInvalid.addTaskToMachine(0, new Task(0,0));
manualROInvalid.addTaskToMachine(1, new Task(0,1));
manualROInvalid.addTaskToMachine(1, new Task(1,0));
manualROInvalid.addTaskToMachine(2, new Task(0,2));
manualROInvalid.addTaskToMachine(2, new Task(1,2));
System.out.println("GANTT: " + manualROInvalid.toSchedule().get().asciiGantt());
} catch (IOException e) {
e.printStackTrace();