2016-08-09 1 views
0

Je suis un débutant total dans Choco Solver. Je veux faire un planificateur de décalage simple. i ai mis variables entières de ce typeChoco solveur décalage horaire

IntVar day1 = model.intVar("day1", new int[] {0,1,2,3,4,5}); 

où 0, 1, ... 5 est un ID de référence à un employé.

J'ai un total de 30 variables, (une pour chaque jour du mois) puisque c'est un horaire de travail mensuel. J'ai mis en place des contraintes, qui ne permettent pas par ex. ne pas être en poste pendant deux jours d'affilée.

Ma question est, comment puis-je mettre en place une contrainte, de sorte que chaque employeur dispose d'un minimum de 5 quarts de travail. chaque valeur dans le domaine apparaît au moins 5 fois dans toutes les 30 variables?

Merci!

Répondre

0

Il y a plusieurs façons de le faire. Jetez un oeil à model.globalCardinality et model.count, ces contraintes permettent de compter le nombre de fois qu'une valeur est utilisée par un ensemble de variables.

http://choco-solver.org/apidocs/org/chocosolver/solver/constraints/IConstraintFactory.html

Par exemple, model.count (3, vars, model.intVar (5,10)) poste(). signifie qu'entre 5 et 10 variables dans vars devraient être égales à 3, donc l'employé 3 devrait faire entre 5 et 10 décalages.