par mln » 29 Avr 2006, 14:31
C'est un problème d'ordonnancement à contraintes de ressources, je n'ai trouver de théorie ou d'algorithme efficace pour ce problème, cependant je vous donne une idée pour un algo possible (?)
classement par ordre décroissant de contraintes et ensuite permuter :
je l'illustre par un exemple.
s1 peut travailler au poste p1 p2 p3 p6. 4 postes possibles
s2 peut travailler au poste p2. 1 poste possible
s3 peut travailler au poste p4 p5. 2 postes possibles
s4 peut travailler au poste p4 p5 . 2 postes possibles
s5 peut travailler au poste p1 p2 p3 p4. 4 postes possibles
s6 peut travailler au poste p2 p4 p5 p6. 4 postes possibles
au poste p1, on peut affecter s1 s5 2salariés possibles
au poste p2, on peut affecter s1 s2 s5 s6 4salariés possibles
au poste p3, on peut affecter s1 s5 2salariés possibles
au poste p4, on peut affecter s3 s4 s5 s6 4salariés possibles
au poste p5, on peut affecter s3 s4 s6 3salariés possibles
au poste p6, on peut affecter s1 s6 2salariés possibles
on classe tout ca par ordre croissant de possiblités:
s2
s3
s4
p3
p6
p5
s1
s5
s6
p2
p4
Chaque salarié ou poste possède une permutation.
Selon le choix du poste ou du salarié dans la permutation, on refait un classement du meme type.
ici s2 = p2
on refait un classement :
s1 peut travailler au poste p1 p3 p6. 3 postes possibles
s3 peut travailler au poste p4 p5. 2 postes possibles
s4 peut travailler au poste p4 p5 . 2 postes possibles
s5 peut travailler au poste p1 p3 p4. 3 postes possibles
s6 peut travailler au poste p4 p5 p6. 3 postes possibles
au poste p1, on peut affecter s1 s5 2salariés possibles
au poste p3, on peut affecter s1 s5 2salariés possibles
au poste p4, on peut affecter s3 s4 s5 s6 4salariés possibles
au poste p5, on peut affecter s3 s4 s6 3salariés possibles
au poste p6, on peut affecter s1 s6 2salariés possibles
le nouveau classement est:
s3
s4
p4
...
- on affecte s3 au poste p4 par exemple
s1 peut travailler au poste p1 p3 p6. 3 postes possibles
s4 peut travailler au poste p5 . 1 postes possibles
s5 peut travailler au poste p1 p3 . 2 postes possibles
s6 peut travailler au poste p5 p6. 3 postes possibles
au poste p1, on peut affecter s1 s5 2salariés possibles
au poste p3, on peut affecter s1 s5 2salariés possibles
au poste p5, on peut affecter s4 s6 2salariés possibles
au poste p6, on peut affecter s1 s6 2salariés possibles
- s4 = p5
s1 peut travailler au poste p1 p3 p6. 3 postes possibles
s5 peut travailler au poste p1 p3 . 2 postes possibles
s6 peut travailler au poste p6. 3 postes possibles
au poste p1, on peut affecter s1 s5 2salariés possibles
au poste p3, on peut affecter s1 s5 2salariés possibles
au poste p6, on peut affecter s1 s6 2salariés possibles
- s6=p6
s1 peut travailler au poste p1 p3. 2 postes possibles
s5 peut travailler au poste p1 p3. 2 postes possibles
au poste p1, on peut affecter s1 s5 2salariés possibles
au poste p3, on peut affecter s1 s5 2salariés possibles
...
et on fait avec toutes les permutations possibles
a mon avis si le système de départ a au moins une solution(cad tout salariés peut etre affecté à un poste. Par exemple le cas s1=p1; s2=p1,p2; s3 =p1,p2 n'est pas possible), cet algorithme recouvrent uniquement toute les combinaisons possibles (cependant je ne l'ai pas démontré) et pourra donner un ordre dans les permutations (cependant il se peut que 1 salarié travaille "2 fois de suite" sur le meme poste, dans certains cas initiaux on ne peut pas faire autrement)
En tout cas, c'est un sujet très intéressant.
J'espère avoir été compréhensible :)