From 2c85c9aeae96c4ae591d3071b01d2090bc090348 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Pelletier?= Date: Sat, 3 Feb 2018 12:19:32 -0500 Subject: [PATCH] solution correcte avec toutes les contraintes pour probleme 2, pas encore d'optimisation de la perte --- tp/code/ProductionHoraire.java | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/tp/code/ProductionHoraire.java b/tp/code/ProductionHoraire.java index a7228ef..009d100 100644 --- a/tp/code/ProductionHoraire.java +++ b/tp/code/ProductionHoraire.java @@ -6,6 +6,7 @@ import org.chocosolver.solver.variables.IntVar; import org.chocosolver.solver.variables.BoolVar; import org.chocosolver.solver.Solver; import org.chocosolver.solver.search.limits.FailCounter; +import org.chocosolver.solver.constraints.nary.automata.FA.FiniteAutomaton; public class ProductionHoraire { public static final int N_PERIODE = 16; @@ -82,7 +83,32 @@ public class ProductionHoraire { model.sum(ColonnesE[i], ">=", IVnbEmployesRequis[i]).post(); } - // Contrainte du motif d'horaire + // Création de l'automate fini pour la contrainte du motif d'horaire + + Integer MAX_PERIODE = MAX_H-1-MIN_PERIODE; + + FiniteAutomaton FA = new FiniteAutomaton("0*1{"+ + MIN_PERIODE.toString()+ + ","+ + MAX_PERIODE.toString()+ + "}01{"+ + MIN_PERIODE.toString()+ + ","+ + MAX_PERIODE.toString()+ + "}0*"); + + // Constantes pour la contrainte du nombre minimum et maximum d'heures + + IntVar IVMIN_H = model.intVar(MIN_H-1); + IntVar IVMAX_H = model.intVar(MAX_H-1); + + // Contrainte du motif d'horaire et du nombre minimum et maximum d'heures + + for (int i=0; i=", IVMIN_H); + model.sum(LignesE[i], "<=", IVMAX_H); + } // Creation du solveur Solver solver = model.getSolver();