Remplissage d'une grille d'emploi du temps
re,
Je vais y réfléchir un instant, ça ne marche pas vraiment, Angélique et Bastien rient avec moi
Re,
merci !
Votre dernier commentaire m'a bien fait rire
En ce qui concerne la colonne "demi-journée" en effet elle peut disparaitre, puisqu'il y a les 5 autres.
J'ai essayé le dernier fichier, mais la macro ne me donne presque rien cette fois, avec un grand nombre de cellules vides orange dans le planning... Bizarre...
Cela vous fait ça aussi ? Je n'ai presque rien changé par rapport au dernier que vous avez envoyé...
Et de plus, elle dure très peu de temps, alors qu'en effet sur la version précédente, elle mettait énormément de temps comme ce que vous avez décrit, ce qui permettait d'espérer qu'il y ait une solution 100% si on est patient. En l'occurence, il y a forcément au moins une solution 100%, puisque celle que nous utilisons cette année répond à toutes les contraintes. Et même à davantage de contraintes (les profs ont le moins possible d'heures de "trou", mais chaque chose en son temps...
Argh désolé je sais que ça doit être un casse tête, et ce que vous avez réussi est déjà époustouflant !!
Merci !!!
re,
pouvez-vous m'envoyer votre schéma actuel, juste pour voir si ma macro le vérifie aussi comme 100% (éventuellement par PM s'il y a des données sensitives dedans) ?
Voici.
Une seule heure normalement ne respecte pas une contrainte : 3è heure du mardi en 5è1, qui est une heure vide, (alors que j'avais rempli 1100-0011 pour les X de 6è et 5è)...on n'a pas réussi à faire autrement (on y a casé une heure de soutien au final).
Donc si cela reste très limité comme ça, on peut adapter, mais on essaye vraiment d'éviter ça.
De même il y a parfois du français ou de l'histoire géo deux heures de suite, ça on peut le faire parfois. Ou deux heures de maths dans la même journée en 6è car il y a 4h en tout au lieu de 3, donc on l'a accepté. Mais difficile de demander au programme d'avoir cette évaluation de ce qui est acceptable ou pas...
Mais j'ai cru comprendre que votre macro donne quand même des solutions même quand celles-ci ne sont pas 100% c'est bien ça ?
Si vous avez un moyen (je pense que ça, c'est vraiment pas le plus difficile, vu ce que vous avez réussi à faire sur le reste !!) de faire apparaitre les emplois du temps des profs, vous verrez que les heures de trou des profs sont très limitées (en général 2 maximum dans la semaine). (Sachant que si un prof qui travaille en heure 4 ne travaille pas en heure 5, ou inversement, ce n'est pas considéré comme heure de trou, car l'heure 4 est 11h30-12h30 et l'heure 5 est 13h-14h, donc cela revient à une pause déj normale d'1h30).
Donc l'emploi du temps que nous avons obtenu est finalement, comme chaque année, très bien, mais cela nous prend toujours une semaine complète, et c'est une semaine de stress intense où on a l'impression qu'on n'y arrivera jamais, avec des couchers à 2h du matin à triturer toutes les possibilités et à se dire qu'on ne pourra pas commencer l'année en temps et en heure... Je me dis que l'ordinateur sera sûrement plus doué que l'humain !!
Hate de savoir ce que vous en pensez.
PS Vous avez pu constater comme moi que le précédent fichier ne donnait qu'une grille très "vide" ?
Merci !!!!!!!!!!
re,
ma dernière version avant votre réaction était ceci, je crois que en récrivant la macro, que les resultats sont mieux.
Un défaut pour le moment, 6è1 le jeudi a 2 fois Math, la première fois "Math 6è1" et l'heure suivante "Math 6è". Comme c'est un autre nom, pour la macro, ce n'était pas la même matière, donc c'est permis. Donc, je suppose qu'on doit renommer tous ces "Math" comme "Math" ou "Math 6"
9 des 15 profs ont déjà leur 2 semie-journées
Merci !! Je vais regarder !
Oui vous avez raison pour les noms de matière !
Pouvez vous m’expliquer comment utiliser la feuille « paramètres » svp ? Est ce que dans le tableau de gauche je peux imposer des demi journées libres en supprimant des croix ? Et celui de droite donne la solution obtenue c’est bien ça ?
Merci !!
re,
comme ceci est une solution à la tête du client, de temps en temps, vous voyez des choses que j'ai essayé mais n'ont pas fonctionnées, comme cette partie droit du tableau. Je l'ai mis dans "la poubelle". Je suppose que c'est peut-être plus facile de donner chaque prof ses 2 demie-journées préférées, puis lancer la macro et puis regarder les conflits et puis adapter certaines demie-journées.
Je n'ai pas encore l'experience d'interprèter la solution de la macro comme vous le décrivez dans votre commentaire de hier soir, j'ai juste écrit la macro. La macro fait les choses complètement aléatoire, donc si vous la lancez 2 fois, la solution sera différente. Pour le moment, mes boucles sont 10 et 200 (cellules B2:B3 de paramètres). Il faut le voir comme un tournoi un jeu d'échecs avec 10 parties de 200 coups chacune et puis on choisit la meilleur partie.
Le progrès, vous pouvez le voir sur le statusbar en bas. à gauche c'est la meilleure solution jusqu'à présent, à droit c'est la "partie" actuelle. Si, un moment donné, la solution à gauche vous plaît, (par exemple dès qu'on atteint quelque chose inférieur à "000|000|000|999"), vous pouvez interrompre la macro avec CTRL+BREAK et puis utiliser le bouton "Meilleur Solution" pour gagner du temps. (PS. de temps en temps ce bouton vous montre une erreur, pourquoi, je ne le sais pas, mais si vous poussez sur "continuer", cela fonctionne).
Le schéma de hier soir, je ne l'ai pas utilisé, trop de travail pour l'adapter dans le modèle.
Le chiffre que vous verrez dans les cellules de "Planning", c'est l'"index" du tableau "tbl_planning", comme çà vous pouvez distinguer les leçons avec le même nom.
La colonne "sequence" de ce tableau, n'essayez pas à le comprendre, elle sert à créer la séquence dans laquelle la macro trait les leçons (les leçons fix en premier, les leçons qui prennent plusieurs cellules d'abord, puis les profs avec les plus d'heures, etc)
PS. Si vous voulez, vous pouvez aussi créer une sorte de bibliothèque avec vos solutions en copiant et collant la plage C4:BF39 de "Aux" vers une autre feuille et vous ajoutez assez de commentaire pourque plus tard, vous pouvez retrouver et réutiliser cette solution. A ce moment vous collez (les valeurs !!!) votre ancienne solution vers la même plage C4:BF39 et puis vous utilisez la macro "Nouvelles_SemiJournees" (pour le moment sans bouton) et voilà ... ,
Bonjour !
J'ai fait tourner la macro toute la nuit avec 100 boucles pour le premier nombre et 200 pour le deuxième nombre. Je vous joins le fichier.
Le meilleur score est 000l000l002l004 (est-ce que cela montre le nombre de contraintes non respectées, c'est bien ça ?), mais je me rends compte qu'il y a certaines données que la macro doit considérer comme incontournable, et qu'elle ne respecte pas :
- le fait qu'une séance définie comme une séance de 2h ou 3h ne peut pas être "découpée" (voir par exemple projet 5è ou EPS Gymnase 4è), et plus généralement que les cellules Fix doivent être exactement comme prévues dans le tableau.
- le fait qu'une séance définie comme 6è ou 5è (et non 6è1, ou 5é2 etc.) doit nécessairement coupler sur le même créneau horaire les deux classes d'un même niveau (voir maths 6è 085 qui ne s'est pas mis au même endroit dans les deux classes)
Pour ces points-là, la macro ne doit même pas considérer la grille comme une solution possible s'ils ne sont pas respectés, je pense.
Pour la colonne "séquence", lorsque je modifie des données dans le tableau dans BDD, je dois garder cette colonne ? Est-ce que c'est la macro qui la remplit elle-même ? Est-ce que je peux vider cette colonne si je veux retenter un nouveau départ de la macro ?
Pour les demi-journées, certains profs demandent une demi-journée en particulier, ou sont sur deux établissements, donc doivent nécessairement ne pas avoir cours tel ou tel jour, donc pour eux je peux supprimer les croix dans le tableau. Mais pour les autres, je ne peux pas définir d'office leurs demi-journées libres puisque ça dépend de ce que donne l'emploi du temps...C'est trop difficile finalement que la macro compte le nombre de demi-journées libres des profs, et élimine les solutions où tout le monde n'en a pas minimum 2 ?
Dernière chose, je ne sais pas si ce dernier point peut se programmer, pour que les emplois du temps profs soient réalistes :
Si vous avez un moyen (je pense que ça, c'est vraiment pas le plus difficile, vu ce que vous avez réussi à faire sur le reste !!) de faire apparaitre les emplois du temps des profs, vous verrez que les heures de trou des profs sont très limitées sur la solution que je vous ai envoyée (en général 2 maximum dans la semaine). (Sachant que si un prof qui travaille en heure 4 ne travaille pas en heure 5, ou inversement, ce n'est pas considéré comme heure de trou, car l'heure 4 est 11h30-12h30 et l'heure 5 est 13h-14h, donc cela revient à une pause déj normale d'1h30).
Ce que je ne m'explique pas, c'est que la solution que je vous ai envoyée, qui respecte bien toutes les contraintes, ne soit pas passée en revue par la macro à un moment ou à un autre... ou alors il faudrait définir le nombre de boucles à beaucoup plus ?
Une dernière question : si plusieurs solutions sont à égalité, y a-t-il un moyen de pouvoir les "comparer" ?
Merci encore infiniment !! Si vous en avez assez de réfléchir sur cette macro, je pourrai le comprendre ...
Ah pardon on s'est encore écrit en même temps... Je lis votre message précédent, et modifie le mien si besoin !
bonjour,
- j'avais mis des formes dans la feuille "Aux" à partir de la ligne 40 qui expliquent le layout de cette feuille, donc les 100 premières colonnes sont 7 (je crois) propriétés de chaque leçon et puis les 40 colonnes suivantes sont les plus importantes du fichiers, elles détectent les conflits. Votre '000l000l002l004" veut dire qu'il n'y a plus de conflits pour les profs (premier triplet) et pour les locaux (2eme triplet), mais qu'il y a 2 conflits pour les leçons (les conflits sont souvent en paires donc en nombre pair) et le dernier triplet est pour les leçons les même jour (ici 4, mais comme elles sont en pair, cela concerne 2 fois 2 leçons)
- ce chiffre m'etonnait parce que j'avais déjà eu plusieurs solutions inférieur à "000|000|000|999", même avec votre fichier, mais maintenant, il est déjà a sa 18eme partie et encore toujours > que "000|000|000|999", c'est jouer le lotto ... .
- Dans le prochain fichier, j'aurai un tableau avec le résultat de chaque partie, donc vous aurez une idée concernant la difficulté du modèle et je copie&colle aussi la plage C4:BF39 (voir ici dessus) vers un bibliothèque. Comme çà, si vous faites vos 100 partie pendant la nuit, le matin (éspérons) vous aurez quelque solutions que vous pouvez comparer.
- pour le moment la macro est lancée, donc je ne peux pas contrôler votre remarque qu'elle à découpé une séance de 3 heures, c'est çà ? Normallement cela est impossible, mais si vous l'avez vu
, même chose pour les remarques suivantes, c'est pour cet après-midi. - l'emploi du temps, j'ai les totaux pour chaque prof et demie-journée, mais juste en face, j'ai caché 36 colonnes je crois avec un "1" si le prof a une leçon à ce moment. (juste au dessus vous voyez un "+" pour déplier et plier ces colonnes.
- c'est midi maintenant, 22 essais sans solution ... quelle misère
- ici le fichier en dessous le schéma de "planning" vous voyez deja ce tableau avec le résultat de chaque partie (chez moi, une partie dure environ 2 minutes) et il n'y a pas envore une solution dans la bibliothèque
- les X's de 6è2, avec des heures spécifiques, empêchent les choses, j'ai supprimé le contenu des 6 cellules du 105 et 106.
- Avez-vous vu ce "+/-" juste au dessus la colonne BU de BDD pour plier/déplier ces 36 colonnes. Que voulez-vous faire avec cela ?
Oui mais pour les X, ce sont des heures libres en 6è et 5è qui ne doivent pas tomber en milieu de journée, donc je suis obligé de leur imposer 1000-0001, sinon la macro les met n'importe où..
Là j'ai voulu refaire tourner la macro, pour voir si avec plus d’occurrences, j'obtiens une meilleure solution...Je vous dirai pour le +/- , quel était le but de ces 36 colonnes ?
Et vous me direz si vous comprenez d'où viennent les bugs dont je vous ai parlé, qui normalement n'étaient pas censés arriver...
Merci ! A plus tard !
- ces 36 colonnes vous montrent par prof et par heure, s'ils ont une classe ou s'ils sont libres. Donc vous voulez des chaînes de "1" sans trous là.
- oui, j'ai constaté ce bug et j'éspère que je l'ai résolu. Pour le moment, la macro fait des boucles, je vous envoie le fichier dans une demie-heure.
- Vous aurez à côté des boutons un "textbox" dans lequel vous pouvez décrire en plusieurs lignes les propriétés spéciales du modèle actuel. Son contenu sera copié vers vos solutions dans la feuille "Bibliotheque", comme çà, ce sera plus facile pour vous pour retrouver une solution. Et quand vous voulez vérifier une solution dans la bibliotheque, vous vous positionnez quelque part dans sa plage et vous faites le raccourci "CTRL+MAJ+B" (en même temps)
re,
sorry, le bug n'est pas encore résolu
donc voici le fichier (avec bug)
On a jusqu'en juillet pour parfaire tout ça, pas de panique
Merci encore infiniment de votre intérêt, en tout cas ! C'est vraiment une chance d'être tombé sur vous !!
Là je viens de finir de relancer la macro, j'ai arrêté au bout de 100 boucles (pas sur le tout dernier fichier, sur celui juste avant), et il y a en effet toujours de gros bugs au niveau des Fix qui ne sont pas respectés. Là c'est même certains X autour de la pause déj qui se sont mis n'importe où. Et toujours le projet 5è qui est coupé, mais pas les autres...Étrange...
Pour l’histoire des 36 colonnes je vais regarder sur votre nouveau fichier, mais du coup si j'ai bien compris, ça permet de voir les heures de "trou" des profs, mais ça ne permet pas à la macro d'imposer qu'ils n'en aient pas plus que 2 dans la semaine, c'est ça ? (Si jamais vous trouvez un moyen plus tard de travailler sur le fait que la macro puisse imposer une limitation des heures de trou, dites-le moi pour que je réexplique précisément la contrainte).
Quand vous aurez un moment pour regarder le vrai planning de cette année, vous verrez que toutes ces contraintes sont bien respectées. Et comme on y arrive chaque année à la main, c'est sûrement qu'il existe plusieurs solutions qui répondent à toutes les contraintes.
Petite idée comme ça : est-ce que ça faciliterait les choses (et serait moins long) si la macro tournait en plusieurs temps ? Du genre :
- 1er temps : elle remplit toutes les cellules fixes du planning
- 2è temps : elle place les free
- 3è temps : on sélectionne ce qu'on garde et on refait tourner uniquement les cellules qui ne conviennent pas (c'est un peu ce qu'on fait quand on fait à la main et que l'ensemble est satisfaisant mais qu'il y a quelques trucs pas idéaux, du genre les matières pas super bien réparties sur la semaine dans une classe, ou uniquement un ou deux profs qui n'ont pas leurs demi-journées, etc...)
A voir peut-être plus tard, si vous arrivez à résoudre le bug des cellules fixes qui n'en font qu'à leur tête...
Mais vu que l'idée m'est venue, je la pose là
Je sais que je l'ai déjà dit 72000 fois, mais MERCI !!
re,
je suppose que le bug est résolu maintenant et la macro tourne mieux et plus rapide maintenant. Elle a même trouvé une solution après 10 boucles. Vérifiez sie maintenant la solution est aussi okay pour vous.
Le problème des "trous", c'est pour plus tard, je le mets un moment dans le frigo ! Je suis un peu épuisé de ce topic.
Dans la macro, je fais exactement ce que vous décrivez là, commencer avec les "fix" et puis les "free".
Comme je l'avais dit hier, la macro écrit un copie vers "bibliotheque" et plus tard, si vous vous positionnez dans une solution de cette feuille et vous faites le raccoursi "CTRL+MAJ+B" vous aurez cette solution dans les feuilles 'Planning" et "Aux"
Hello
merci infiniment.
Je suis en train d'essayer de tester pas mal de choses sur cette nouvelle macro.
En effet les bugs sur les Fix ont l'air d'être arrangés.
Par contre, les séances "couplées" comme les heures en 6è complet et en 4è complet sur lesquelles la 6è1 et la 6è2 (idem 4è1, 4è2) doivent nécessairement avoir la même leçon, ne sont pas toujours respectées... c'est curieux car elles sont respectées sur certaines, mais pas sur toutes. Peut-être la macro considère cette contrainte non obligatoire ?
Petite réflexion : je pense que les conflits de salle (2è triplet) sont le "moins grave" des 4 triplets. Donc si jamais c'est facile de changer l'ordre de priorité des 4 triplets que je vois dans la statusbar, je pense qu'on peut mettre le 2è triplet à la fin (quand vous le sentez bien sûr, rien ne presse !!).
J'essaie de me familiariser avec l'onglet Bibliothèque, c'est super, ça marche très bien avec le raccourci Ctrl+Maj+B ! Mais je ne suis pas sûr d'avoir compris quelles solutions étaient enregistrées dedans parmi les milliers qui sont testées ?
Je vais essayer de jouer à fixer encore davantage de leçons pour jouer sur une rotation sur moins de leçons. Et à l'inverse je vais essayer de faire d'autres versions où je commencerai par faire tourner juste les modules et projets pour avoir les diverses possibilités de départ...Peut-être qu'au final on fera un combo entre le travail à la main de tous les ans, et l'aide par la macro.
Je comprends très bien que vous ayez un peu envie de mettre "au frigo" ce topic, c'est une grosse prise de tête !!
Vous êtes ok que je vous tienne au courant des avancées ? Et vous me direz si d'autres idées vous viennent plus tard, notamment pour l'histoire des demi-journées ?
Merci pour tout !! On se tient au courant !!
re,
concernant vos remarques
- je pense que les séances couples restent couplé maintenant. Quand vous regardez la grille de la fuille "planning", chaque cellule contient 3 lignes, la leçon, le prof et puis le local & "Fè" & l'index de la leçon. Le "F" de cette 2eme partie veut dire que cette leçon est "fix", le "è" veut dire que c'est une leçon "Couplés" Exemple 5è1, mardi après-midi EPS Gymnase n'est qu'un "F", donc il n'est pas couplé avec le EPS Gymnase du 5è2, ce même mardi après-midi, mes les 2 EPS Gymnases 4è du mardi matin sont "Fè", donc "fx" et "couplé"
- Concernant les conflits des salles comme le catégorie le moins important, je l'ai essayé, mais j'ai l'idée que cela ne fonctionnait pas si bien, je pense que les mêmes leçons le même jour doit rester le dernier pour le bon fonctionnenment. En plus, maintenant, il y a 2 catégories des même leçons le même jours, cad. la même leçon le même matin ou après-midi (=10 points) et la même leçon, une le matin et l'autre l'après-midi (1 point).
- j'ai lancé la macro, mais maintenant, je n'ai que 6 bonnes soultions après 100 tentatives. (voir ce tableau "Tabel7" dans la feuille "planning") et comme tout est aléatoire, j'ai déjà 4 solutions après 25 tentatives et puis +50 tentatives rien ...
- Vous m'avez demandé quelles solutions sont collées dans "Bibliotheque", donc quand je lance la macro chaque "amélioration" de la meilleur solution et puis chaque solution <"000|000|000|999". Quand vous sélectionnez la feuille "Bibliotheque", vous verrez que la première ligne de chaque solution (la ligne rouge), donc vous pouvez facilement choisir une de ces solutions. A partir de la ligne 1115, vous voyez les résultats de mon dernier boucle de 100 tentatives. Les 3 premières sont encore <"000|000|000|999", mais puis vous voyez ces 6 solutions "<"000|000|000|999". Vous pouvez choisir chaqu'une de ces solutions pour la copier&coller vers "Aux", "Planning", etc.
- colonne AN de "compter", c'est le nombre de "trous".
je comprends que vous devez faire des testes, parce qu'il n'y a pas un vrai mode d'emploi pour mes macros, mais tenez-moi au courant ....
Bonjour !
Merci pour votre message, et d'avoir encore ajouté des choses !
Je fais plein de tests là ... Par contre, je ne maîtrise pas du tout les colonnes "séquence", "index", "filtre" et "check" du tableau de la feuille Input. Et le problème est que lorsque je veux modifier des heures de cette liste (notamment en début d'année, il y aura d'autres séances avec d'autres profs, je devrai donc créer une toute nouvelle liste), je ne sais pas comment modifier les 4 valeurs des 4 colonnes séquence, index, filtre et check...Comment dois-je m'y prendre pour remettre à jour régulièrement cette liste ?
Là je viens de voir qu'une séance Free définie comme une séance de 2h semble poser problème à la macro. Il me semble en effet que vous m'aviez dit que la macro ne savait gérer que les séances free d'1 heure, c'est bien ça ?
Merci !!