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();