Je fais face à un problème, je ne sais pas trop comment aborder Je dois générer un calendrier pour les employés, chacun ayant des contraintes de travail spécifiques (certaines personnelles, d'autres communes)
Avec quoi je travaille:
- J'ai des médecins
- Chaque médecin doit travailler 5 jours / semaine.
- Chaque médecin doit travailler 1 nuit / semaine
- Chaque médecin doit travailler un nombre de nuits égal par rapport aux autres médecins (ou le plus près possible)
- Chaque médecin doit travailler un nombre égal de jeudi soir et dimanche soir par rapport aux autres médecins (ou le plus près possible)
- Certains médecins ne peuvent pas travailler certains jours / nuits (saisie par l'utilisateur)
- Certains médecins aimeraient travailler certains jours / nuits (saisie par l'utilisateur)
- Certains médecins aimeraient ne pas travailler certains jours / nuits (saisie par l'utilisateur)
L'utilisateur en question est la personne qui s'occupe du calendrier, j'essaye de construire une solution qui va générer automatiquement un calendrier qui obéit à toutes les contraintes. La solution est juste une grande entrée de paramètres "ajouter des médecins" et "ajouter des contraintes" pour chaque médecin, puis un bouton "générer un calendrier". C'est vraiment basique pour l'utilisateur.
Mon problème :
Je ne sais pas comment générer la planification réelle, j'ai lu sur les réseaux de neurones, les algorithmes génétiques, etc., et ils semblent tous être la bonne solution mais pas vraiment.
Quand je regarde les GA, ils sont faits pour trouver une solution avec une population donnée (mon problème), mais la population de départ doit déjà obéir à l'ensemble de contraintes donné, qui serait alors optimisé. Dans ce cas, ma population de départ est déjà la solution. Je n'ai pas besoin qu'il soit "optimisé". Peu importe qu'une seule personne travaille 3 lundi soirs d'affilée, tant que c'est correct et que d'autres travaillent le même montant, cela signifie que d'autres travailleront également 3 lundi soir à un moment donné et ça va. Ce qui me fait penser que les GA sont trop "avancés" pour moi, car mon problème est déjà résolu avec le point de départ d'une GA.
Mais là encore, les GA semblent vraiment vraiment faits pour ça, donc je ne peux pas le comprendre correctement?
Quoi qu'il en soit, comme je n'ai jamais utilisé d'AG (ou de réseaux de neurones, ou quoi que ce soit du genre), je voudrais être sûr de choisir la bonne approche avant de m'engager dans une courbe d'apprentissage comme celle-ci.
Ma question :
Selon vous, quelle est la bonne approche / algorithme / technique pour un problème comme le mien? Gaz? Les réseaux de neurones? Quelque chose de complètement différent?
Je suis à l'écoute et ouvert pour plus de détails si nécessaire, mais je pense que je me suis bien fait comprendre :)