diff --git a/Rapport_de_session/Figures/Mapping.png b/Rapport_de_session/Figures/Mapping.png index 77abbf4..872fe2f 100644 Binary files a/Rapport_de_session/Figures/Mapping.png and b/Rapport_de_session/Figures/Mapping.png differ diff --git a/Rapport_de_session/Figures/Résultats.pptx b/Rapport_de_session/Figures/Résultats.pptx index 9dca60b..a019de9 100644 Binary files a/Rapport_de_session/Figures/Résultats.pptx and b/Rapport_de_session/Figures/Résultats.pptx differ diff --git a/Rapport_de_session/Figures/Résultats.xlsx b/Rapport_de_session/Figures/Résultats.xlsx index 60a8867..a6b50f7 100644 Binary files a/Rapport_de_session/Figures/Résultats.xlsx and b/Rapport_de_session/Figures/Résultats.xlsx differ diff --git a/Rapport_de_session/Tables/TableaueffetsParametres.png b/Rapport_de_session/Tables/TableaueffetsParametres.png index 6cb888d..0ebe5ed 100644 Binary files a/Rapport_de_session/Tables/TableaueffetsParametres.png and b/Rapport_de_session/Tables/TableaueffetsParametres.png differ diff --git a/Travail_de_session/MainClass.java b/Travail_de_session/MainClass.java index f089984..d147ba8 100644 --- a/Travail_de_session/MainClass.java +++ b/Travail_de_session/MainClass.java @@ -16,28 +16,15 @@ public class MainClass { public static void main(String[] args) { ParametersSchedules myScheduleParameters = new InitialSchedules.ParametersSchedules(); - for (int i = 0 ; i <= 30 ; i++) { - -// ParametersAbsencesSimulator.probPresence = 1 - (double) i * 0.01; // Pour de 0.90 a 1.0 par increment de 0.01 - -// for (int j = 0 ; j <= 10 ; j++) { - -// ParametersVariableDemandSimulator.probIncreasedDemandbyOne = (double) j * 0.1; // Pour de 0 a 1 par increment de 0.1 -// ParametersVariableDemandSimulator.probIncreasedDemandbyTwo = ParametersVariableDemandSimulator.probIncreasedDemandbyOne/5; // Pour de 0 a 0.25 par increment de 0.05 -// ParametersVariableDemandSimulator.probIncreasedDemandbyThree = ParametersVariableDemandSimulator.probIncreasedDemandbyOne/25; // Pour de 0 a 0.25 par increment de 0.05 - List initialSchedulesArrayList = generateInitialSchedules(myScheduleParameters); - List listBankModifiedSchedules = GenerateModifiedSchedules(initialSchedulesArrayList, myScheduleParameters); + List initialSchedulesArrayList = generateInitialSchedules(myScheduleParameters); - List bankRecoveredSchedulesOrderedByMeanCost = GenerateOptimalRecoveredSchedules(listBankModifiedSchedules); + List listBankModifiedSchedules = GenerateModifiedSchedules(initialSchedulesArrayList, myScheduleParameters); + + List bankRecoveredSchedulesOrderedByMeanCost = GenerateRecoveredSchedules(listBankModifiedSchedules); + + SchedulesWindows.ShowSolutionResultsFrame initialSchedulesViewer = new SchedulesWindows.ShowSolutionResultsFrame(bankRecoveredSchedulesOrderedByMeanCost); - SchedulesWindows.ShowSolutionResultsFrame initialSchedulesViewer = new SchedulesWindows.ShowSolutionResultsFrame(bankRecoveredSchedulesOrderedByMeanCost); - -// int optimalFullTimeEmployee = bankRecoveredSchedulesOrderedByMeanCost.get(0).initialSchedulesArray.getNumberFullTimeEmployee(); -// System.out.print(optimalFullTimeEmployee + " "); -// } -// System.out.println(" "); - } } @SuppressWarnings("unused") @@ -46,7 +33,7 @@ public class MainClass { // Trouver les horaires des employes a temps plein possibles pour different ratio templein/temps partiel List initialSchedulesArrayList = new ArrayList<>(); - int minFullTimeEmployee = 9; //La solution avec 1 employes est trop lente + int minFullTimeEmployee = 2; //La solution avec 1 employes est trop lente int maxFullTimeEmployee = 9; //9 est le max d'employes a temps plein pour la presente requiredWorkforce @@ -54,8 +41,6 @@ public class MainClass { for (int numberFullTimeEmployees = minFullTimeEmployee ; numberFullTimeEmployees <= maxFullTimeEmployee ; numberFullTimeEmployees++) { -// System.out.println("numberFullTimeEmployees: " + numberFullTimeEmployees); - InitialSchedules.ModelFullTimeEmployeesInitialSchedules myModelFullTimeEmployeesInitialSchedules = new InitialSchedules.ModelFullTimeEmployeesInitialSchedules(myScheduleParameters, numberFullTimeEmployees); @@ -74,7 +59,7 @@ public class MainClass { SolverInitialSchedules mySolverPartTimeEmployeesInitialSchedules = new SolverInitialSchedules(myModelPartTimeEmployeesInitialSchedules); List myInitialPartTimeEmployeesSchedulesSolutions = mySolverPartTimeEmployeesInitialSchedules.findAllSolution(); - mySolverPartTimeEmployeesInitialSchedules.printStatistics(); +// mySolverPartTimeEmployeesInitialSchedules.printStatistics(); for (Solution CurrentPartTimeEmployeesSolution : myInitialPartTimeEmployeesSchedulesSolutions) { PartTimeEmployeeScheduleArray partTimeSchedulesArray = new PartTimeEmployeeScheduleArray(myModelPartTimeEmployeesInitialSchedules, CurrentPartTimeEmployeesSolution); @@ -88,7 +73,7 @@ public class MainClass { } // Pour afficher les horaires initiales -// SchedulesWindows.ShowSchedulesFrame initialSchedulesViewer = new SchedulesWindows.ShowSchedulesFrame(initialSchedulesArrayList, "Initial Schedules"); // to be removed + SchedulesWindows.ShowSchedulesFrame initialSchedulesViewer = new SchedulesWindows.ShowSchedulesFrame(initialSchedulesArrayList, "Initial Schedules"); // to be removed return initialSchedulesArrayList; @@ -123,12 +108,12 @@ public class MainClass { } // Pour afficher les horaires modifies -// SchedulesWindows.ShowSchedulesFrame modifiedSchedulesViewer = new SchedulesWindows.ShowSchedulesFrame(listModifiedSchedules, "Modified Schedules"); // to be removed + SchedulesWindows.ShowSchedulesFrame modifiedSchedulesViewer = new SchedulesWindows.ShowSchedulesFrame(listModifiedSchedules, "Modified Schedules"); // to be removed return listBankModifiedSchedules; } - private static List GenerateOptimalRecoveredSchedules(List listBankModifiedSchedules) { + private static List GenerateRecoveredSchedules(List listBankModifiedSchedules) { BankRecoveredSchedulesComparator meanCostComparator = new BankRecoveredSchedulesComparator(); PriorityQueue< BankRecoveredSchedules > bankRecoveredSchedulesOrderedByMeanCost = new PriorityQueue<>(meanCostComparator); @@ -149,11 +134,10 @@ public class MainClass { } bankRecoveredSimulations.meanCostRecoveredSimulations = totalCostRecoveredSimulations / bankRecoveredSimulations.bankRecoveredSimulation.size(); - System.out.println(bankRecoveredSimulations.meanCostRecoveredSimulations); bankRecoveredSchedulesOrderedByMeanCost.add(bankRecoveredSimulations); } // Pour afficher les horaires de recouvrement -// SchedulesWindows.ShowSchedulesFrame recoveredSchedulesViewer = new SchedulesWindows.ShowSchedulesFrame(listRecoveredSchedules, "Recovered Schedules"); // to be removed + SchedulesWindows.ShowSchedulesFrame recoveredSchedulesViewer = new SchedulesWindows.ShowSchedulesFrame(listRecoveredSchedules, "Recovered Schedules"); // to be removed List listbankRecoveredSchedulesOrderedByMeanCost = new ArrayList<>(); while(!bankRecoveredSchedulesOrderedByMeanCost.isEmpty()){ diff --git a/Travail_de_session/ModifiedSchedules/ParametersAbsencesSimulator.java b/Travail_de_session/ModifiedSchedules/ParametersAbsencesSimulator.java index a08fc6d..879a0e0 100644 --- a/Travail_de_session/ModifiedSchedules/ParametersAbsencesSimulator.java +++ b/Travail_de_session/ModifiedSchedules/ParametersAbsencesSimulator.java @@ -10,7 +10,7 @@ package ModifiedSchedules; * @author frabe */ public class ParametersAbsencesSimulator { - public static double probPresence = 0.98; + public static double probPresence = 0.92; public static final double probReturn = 0.50; public static final int numberAbsenceSimulations = 100; } diff --git a/Travail_de_session/ModifiedSchedules/ParametersVariableDemandSimulator.java b/Travail_de_session/ModifiedSchedules/ParametersVariableDemandSimulator.java index 66557f0..05835ec 100644 --- a/Travail_de_session/ModifiedSchedules/ParametersVariableDemandSimulator.java +++ b/Travail_de_session/ModifiedSchedules/ParametersVariableDemandSimulator.java @@ -1,7 +1,7 @@ package ModifiedSchedules; public class ParametersVariableDemandSimulator { - public static double probIncreasedDemandbyOne = 1.00; + public static double probIncreasedDemandbyOne = 0; public static double probIncreasedDemandbyTwo = probIncreasedDemandbyOne / 5; public static double probIncreasedDemandbyThree = probIncreasedDemandbyOne / 25; public static final int numberVariableDemandSimulations = 10; diff --git a/Travail_de_session/SchedulesRecovery/RecoveredSchedulesArray.java b/Travail_de_session/SchedulesRecovery/RecoveredSchedulesArray.java index 1170b89..d37efec 100644 --- a/Travail_de_session/SchedulesRecovery/RecoveredSchedulesArray.java +++ b/Travail_de_session/SchedulesRecovery/RecoveredSchedulesArray.java @@ -24,10 +24,10 @@ public class RecoveredSchedulesArray extends SchedulesArray{ super(modifiedSchedulesArray); this.myScheduleParameters = modifiedSchedulesArray.myScheduleParameters; this.modifiedSchedulesArray = modifiedSchedulesArray; - recoverModifiedScheduleOptimally(); + recoverModifiedSchedule(); } - private void recoverModifiedScheduleOptimally() { + private void recoverModifiedSchedule() { boolean[][] initialRecoveredScheduleOfPartTimeEmployees = this.getDeepCopyEmployeesSchedules(this.modifiedSchedulesArray.partTimeSchedules); boolean[][] initialRecoveredScheduleOfFullTimeEmployees = this.getDeepCopyEmployeesSchedules(this.modifiedSchedulesArray.fullTimeSchedules); boolean[][] currentRecoveredScheduleOfPartTimeEmployees = this.getDeepCopyEmployeesSchedules(this.modifiedSchedulesArray.partTimeSchedules);