IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Méthodes pour organiser des réunions parents/professeurs


Sujet :

Algorithmes et structures de données

  1. #1
    Membre habitué Avatar de larnicebafteur
    Inscrit en
    Mai 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 133
    Points : 131
    Points
    131
    Par défaut Méthodes pour organiser des réunions parents/professeurs
    Bonjour,

    je suis à la recherche d'algorithme ou de noms de méthodes pour organiser le complexe problème de l'organisation d'une réunion parents/professeurs.

    En quelques mots, voici le problème et les nombreuses contraintes :
    - chaque parent donne une plage horaire qui est à respecter
    - chaque parent indique quels enseignants il souhaite rencontrer, avec différentes priorités
    - les enseignants indiquent aussi des priorités pour les parents qu'ils souhaitent rencontrer
    - le planning des parents doit être le plus compact possible

    A partir de toutes ces contraintes, à respecter au mieux, le but est de planifier l'ensemble des rencontres.

    Plusieurs logiciels effectuent déjà ce genre de problème, et j'aimerais bien étudier ce problème d'un peu plus près.
    J'ai essayé de trouver des noms de méthodes pour résoudre ce problème, mais en général je tombe sur des discussions où les réponses sont très vagues, jamais rien de concret. On tombe parfois sur des articles très théoriques, des thèses, ... mais jamais rien de très pratique, cela reste très général et flou.

    Quelqu'un a des idées précises sur les méthodes à utiliser ?

    Dans le domaine éducatif, il y a aussi le problème tout aussi complexe de la réalisation des emplois du temps dans un établissement scolaire, qui sont réalisés par des logiciels spécialisés.
    Je ne sais pas si ce sont les mêmes méthodes qui y sont utilisées aussi ou pas, mais j'ai l'impression que c'est un peu le même genre de problème.

    Merci d'avance.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème

  2. #2
    Membre confirmé Avatar de Galet
    Homme Profil pro
    Consultant/Programmeur Robotique industrielle
    Inscrit en
    Mars 2010
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant/Programmeur Robotique industrielle

    Informations forums :
    Inscription : Mars 2010
    Messages : 323
    Points : 484
    Points
    484
    Par défaut
    Bonjour Larcnicebafteur,
    Le sujet est ardu. Celui de l'élaboration des plannings a déjà été abordé sur le forum.

    Tu trouveras surement ton bonheur du côté des parcours de graphes.
    Je vais regarder dans mes archives pour tenter de te trouver les articles les plus clairs à ce sujet parmis une literrature abondante...
    Bien l'bonjour,
    Windows 10 / Delphi Tokyo
    "Les choses ne changent pas. Change ta façon de les voir, cela suffit" Lao Tseu

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 619
    Points : 188 597
    Points
    188 597
    Par défaut


    Citation Envoyé par larnicebafteur Voir le message
    J'ai essayé de trouver des noms de méthodes pour résoudre ce problème, mais en général je tombe sur des discussions où les réponses sont très vagues, jamais rien de concret. On tombe parfois sur des articles très théoriques, des thèses, ... mais jamais rien de très pratique, cela reste très général et flou.
    Probablement as-tu vu les mots clés "MIP", "LP", "MILP" (ou les versions en français : PNE, PL, PLNE), "programmation mathématique", "programmation par contraintes" ? Tu ressors en général avec un modèle mathématique, tu utilises après un logiciel spécifique pour trouver la solution optimale. (Les méthodes utilisées sont souvent : simplexe, séparation et évaluation - branch-and-bound -, propagation de contraintes.)
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    Membre habitué Avatar de larnicebafteur
    Inscrit en
    Mai 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 133
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    j'ai en effet trouvé les noms de beaucoup de méthodes, des articles sur ce genre de problèmes, des thèses, ...
    J'ai pourtant un bon niveau en mathématique et en programmation, mais je trouve que cela reste toujours très théorique, donc très vague.

    J'aurais aimé une approche plus concrète, avec des pistes pour attaquer ce type de problème.

    Rien que la modélisation du problème n'est pas évidente, au niveau des vœux et des contraintes, comment les formuler et les modéliser d'un point de vue des données dans un programme informatique ?

    Ensuite, l'ensemble des vœux n'étant pas possible à respecter, que certaines contraintes sont à respecter impérativement, et d'autres contraintes étant à respecter "au mieux", dans quelle direction aller ?

    Après un peu de réflexion, je suppose qu'il faut initialiser le planning des rencontres avec certains des vœux, mais lesquels et en quelle quantité ?
    Puis, je pense qu'il faut ajouter les rendez-vous un par un, mais comment s'y prendre "au mieux" ?
    Et une fois qu'on a placé un maximum de rendez-vous, il faut probablement optimiser l'ensemble, en tentant des permutations sans doute, mais comment pour que cela soit efficace ?

    Et la qualité des placements de ces rendez-vous doit se faire en minimisant une ou plusieurs fonctions objectifs, mais que prendre pour celles-ci ?

    Bref, autant de questions très concrètes pour lesquelles je ne trouve aucune réponse. Plusieurs logiciels réalisent ce type de problème, donc les réponses à ces questions existent, j'aurais aimé en trouve quelques unes, afin de ne pas tout réinventer, de partir dans les bonnes directions, d'éviter les méthodes qui ne sont pas efficaces.
    C'est la partie modélisation, choix de la fonction-objectif, et les principes à utiliser qui me manquent, et ceux ayant déjà travaillé sur ce problème ont forcément des pistes.
    En ce qui concerne les dizaines de méthodes théoriques de résolution de problème complexes, non-linéaires, et tout ce qu'on veut, j'ai beaucoup de noms, mais lesquelles sont vraiment efficaces et effectivement utilisées pour mon problème ?
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 056
    Points : 9 394
    Points
    9 394
    Par défaut
    Tu parles d'une fonction objectif à minimiser ou maximiser, cette fonction, c'est toi qui la définis.

    Voici une fonction qu'on va chercher à maximiser
    - chaque parent donne une plage horaire qui est à respecter : Pour chaque parent, si l'ensemble des rendez-vous tient dans cette plage horaire, rien à signaler, sinon X points de malus (X à ta convenance, selon l'importance que tu donnes à ce critère).
    - chaque parent indique quels enseignants il souhaite rencontrer, avec différentes priorités : Y points positifs pour chaque rendez-vous effectivement proposé, avec Y variable selon la priorité. Si un rendez-vous avec un prof prioritaire n'est pas dans la plage horaire demandée, malus, par contre, pas de malus si c'est un rendez-vous avec un prof non prioritaire.
    etc etc.

    Quand tu as défini cette fonction, un outil permet d'explorer toutes les combinaisons, et de garder celles qui donnent le résultat optimal.
    Un outil développé basiquement utiliserait la force brute, en explorant systématiquement toutes les combinaisons. Mais ça peut être très long.
    Les outils du marché vont optimiser ça, par je ne sais quels moyens.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  6. #6
    Membre habitué Avatar de larnicebafteur
    Inscrit en
    Mai 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 133
    Points : 131
    Points
    131
    Par défaut
    En effet, c'est bien à moi de définir une fonction objectif, et j'ai déjà quelques idées sur ce qu'il faut qu'elle contienne.

    La recherche exhaustive de toutes les solutions n'est pas envisageable pour ce genre de problème. Le nombre de variables et de contraintes est bien trop important, il faudrait un temps de plusieurs fois l'âge de l'univers pour tout explorer.

    En venant ici exposer ce problème, c'était dans l'espoir que quelqu'un connaisse ce problème d'assez près, pour me donner des pistes qui fonctionnent.
    Il existe plusieurs manières de stocker les données, plusieurs choix de fonctions-objectif, plusieurs méthodes d'initialisation de la recherche, plusieurs méthodes de recherche d'une solution acceptable, plusieurs méthodes d'optimisation d'une solution pour en trouver une meilleure, ...
    Et parmi toutes ces méthodes, il y en a très probablement certaines qui ne fournissent pas de bonnes solutions, et d'autres qui sont plus adaptées.
    Ainsi, une personne s'étant déjà penché de près sur ce problème aurait pu m'orienter vers quelques chose qui marche effectivement.

    J'ai trouvé des dizaines et des dizaines de discussions là-dessus, mais c'est toujours très vague, plein de gens viennent juste donner leur avis ou répètent ce qu'ils ont trouvé en 5 min de recherche sur Google, et on passe des heures à lire des échanges qui ne mènent à rien.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème

  7. #7
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 056
    Points : 9 394
    Points
    9 394
    Par défaut
    Tu demandais "...en minimisant une ou plusieurs fonctions objectifs, mais que prendre pour celles-ci" , ne reproche pas aux gens de répondre à cette question.

    Un temps de traitement proche de l'âge de l'univers ... n'exagérons pas. Disons plusieurs heures.

    Il y a un problème assez similaire, c'est celui de parcours-Sup. Je n'ai pas trop le temps de rechercher, mais je me souviens d'une vidéo qui expliquait assez bien l'algorithme. Les volumes de données à traiter sont beaucoup plus importants que ce qu'on peut avoir pour une réunion parents-profs, mais tu as des contraintes en plus.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  8. #8
    Membre habitué Avatar de larnicebafteur
    Inscrit en
    Mai 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 133
    Points : 131
    Points
    131
    Par défaut
    Je ne reproche rien à personne, mais j'aimerais que les réponses viennent de personnes s'étant vraiment frotté à ce problème.
    Car moi aussi, des idées, j'en ai plusieurs et on en trouve énormément en cherchant, mais pour savoir lesquelles sont efficaces, les personnes ayant déjà programmé ce problème sont les mieux informées.
    Les forums sont pollués de messages inutiles, de personnes venant simplement donner leur opinion, ou qui renvoient vers d'autres sites en ayant juste tapé une recherche sur Google en à peine 30 secondes (comme si celui qui posait la question n'avait pas essayé avant), ou qui encore mieux remettent en cause le fait de poser une telle question ...

    Pour l'âge de l'univers, je n’exagère pas.
    Mon problème fait partie de la catégorie "NP-complet" en terme de complexité.
    Dans la même catégorie, on y trouve le "simple" problème du voyageur de commerce. Avec à peine une vingtaine de villes, il faut plusieurs siècles pour explorer toutes les combinaisons. Et avec 100 villes, des milliards de milliards de milliards .... de fois l'âge de l'univers.
    Dans mon problème, on trouve des centaines de parents, à associer avec quelques dizaines de profs, dans quelques dizaines de créneaux horaires, soit un nombre de combinaisons absolument colossal.
    C'est pour cela que je cherche les bonnes méthodes de résolution qui permettent de trouver une "bonne" solution.

    Bref, je vais en rester là pour mes explications, je pense avoir été clair.
    Si quelqu'un a des idées concrètes et qui fonctionnent vraiment à proposer, tant mieux. Sinon tant pis.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème

  9. #9
    Membre confirmé Avatar de Galet
    Homme Profil pro
    Consultant/Programmeur Robotique industrielle
    Inscrit en
    Mars 2010
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant/Programmeur Robotique industrielle

    Informations forums :
    Inscription : Mars 2010
    Messages : 323
    Points : 484
    Points
    484
    Par défaut
    Citation Envoyé par larnicebafteur Voir le message
    Je ne reproche rien à personne, mais j'aimerais que les réponses viennent de personnes s'étant vraiment frotté à ce problème.
    ...

    Bref, je vais en rester là pour mes explications, je pense avoir été clair.
    Si quelqu'un a des idées concrètes et qui fonctionnent vraiment à proposer, tant mieux. Sinon tant pis.
    Bonjour,
    Loin de moi l'envie (et le temps) de polémiquer, ni de "poluer" ta requète.
    Si tu cherches LA solution à un problème aussi ardu, tu trouveras des industriels qui se feront un plaisir de te vendre leur solution.
    On trouve, sur ce forum en particulier, des pistes qui doivent être explorées et éliminées les une après les autres pour espérer trouver une solution.
    A toi de juger ce qui est concret de ce qui l'est moins.
    Je te souhaite d'obtenir les réponses claires à tes questions claires, et vais classer mes recherches (amicales) d'aide dans la catégorie des "tant pis".
    Très cordialement,
    Windows 10 / Delphi Tokyo
    "Les choses ne changent pas. Change ta façon de les voir, cela suffit" Lao Tseu

  10. #10
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 103
    Points
    43 103
    Par défaut
    Ce n'est pas en faisant ce type de réflexion que les choses vont avancer.

    Si un algo existe ce n'est pas forcément la peine de refaire la roue. On a tous un jour besoin d'aide pour comprendre quelque chose.

    Si tu tu ne veux pas aider, ou que n'as pas la capacité de le faire (cognitive pour reprendre tes termes, problématique de temps,d'empathie, ou autre), ce n'est pas la peine de répondre, surtout avec un commentaire désagréable et condescendant.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  11. #11
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    Bonjour,

    c'est typequement de la recherche operationnel
    La programmation par contrainte est la reponse a ton probleme

    Comment ferait tu pour ressoudre ce probleme sans informatique
    Pour faire simple :
    1°) definir une matrice des couples Parent/Prof Voulu (definir les prioritée)
    2°) croisé cette matrice avec les horaire voulue et disponible Si plusieurs horraire possible essayé de les regroupé dans une session la plus courte possible


    l'ordinateur va faire exactement la meme chose.
    a chaque etapes il reduit ses elements de recherche avec lesresultat precedent
    il va tester toutes les combinaison possibles et selon tes choix preetablie va sortir une solution ou pas le cas echeant

    imaginons que tu est
    3 parent et 10 Professeurs
    cela fait donc 30 possibilitéq
    les parent ne veulent voir au maximun que 3
    il en reste donc que 9
    ta recherche d'horaire ne se faras pas sur les 30 possibilitées mais
    sur les 9 restant
    ... et ainsi de suite tu diminue le nombres de possibilité
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  12. #12
    Membre habitué Avatar de larnicebafteur
    Inscrit en
    Mai 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 133
    Points : 131
    Points
    131
    Par défaut
    Merci à anapurna pour ses éléments de réponse.

    Il est vraiment regrettable que sur les forums français, toute catégories confondues, pour une simple question posée, on en arrive à plus de 10 messages échangés dont un seul qui apporte quelque chose de constructif.

    Pour tous les autres messages, on trouve :
    - des personnes, comme valentin03, qui viennent juste nous injurier ... mais après tout pourquoi ne le ferait-il pas, vu que son message n'est même pas modéré, et qu'il ne reçoit aucun bannissement du forum, donc il continuera
    - d'autres qui viennent remettre en cause la question posée (non mais de quel droit, qui suis-je, et pour qui je me prends pour oser chercher de l'aide !!)
    - certains qui conseillent de chercher dans les autres messages ou ailleurs (bah oui, j'y avais pas pensé tout seul !!)
    - et enfin certains qui promettent des réponses ultérieurement, puis qui finalement capitulent, proposent d'aller acheter un logiciel, ou d'aller chercher ailleurs

    Vive la France !
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Meilleur méthode pour stocker des images ?
    Par sofien dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 09/05/2008, 12h04
  2. Réponses: 5
    Dernier message: 23/04/2008, 15h41
  3. Autres méthodes pour remplacer des If
    Par carlou135 dans le forum C++
    Réponses: 7
    Dernier message: 17/01/2007, 02h44
  4. Meilleure méthode pour faire des coins arrondis
    Par kodokan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 17/09/2006, 15h08
  5. Méthode pour traiter des commandes
    Par Kr00pS dans le forum C
    Réponses: 17
    Dernier message: 15/06/2006, 17h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo