Planning d'équipe sur une semaine
Trois personnes, cinq jours, au moins deux présents chaque jour, au plus quatre jours chacun, Alice absente le mercredi. On cherche le planning qui mobilise le moins de jours au total.
Résultat obtenu sur le serveur : planning optimal de 10 jours-personnes, deux personnes chaque jour, Alice absente le mercredi.
$jours = [list "lun" "mar" "mer" "jeu" "ven"]
$equipe = [list "alice" "bob" "carol"]
[optimize:problem Roulement
[for $e $equipe [for $j $jours
[decision "w_${e}_${j}" Integer [min 0] [max 1]]]]
[for $j $jours
[assert ([sum $e $equipe "w_${e}_${j}"] >= 2)]] # au moins deux présents
[for $e $equipe
[assert ([sum $j $jours "w_${e}_${j}"] <= 4)]] # quatre jours au plus
[assert ($w_alice_mer == 0)] # Alice absente mercredi
[minimize [sum $e $equipe [sum $j $jours "w_${e}_${j}"]]]]
[optimize:solve Roulement]