solution correcte avec toutes les contraintes pour probleme 2, pas encore d'optimisation de la perte
This commit is contained in:
parent
9a71341993
commit
2c85c9aeae
1 changed files with 27 additions and 1 deletions
|
@ -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<N; i++){
|
||||
model.regular(LignesE[i],FA).post();
|
||||
model.sum(LignesE[i], ">=", IVMIN_H);
|
||||
model.sum(LignesE[i], "<=", IVMAX_H);
|
||||
}
|
||||
|
||||
// Creation du solveur
|
||||
Solver solver = model.getSolver();
|
||||
|
|
Loading…
Reference in a new issue