Gestion des doublons entre plusieurs Colonnes
Bonjour,
Je dispose d'un fichier qui se composent des données par Colonne :
Entête : le nom d'une Equipe "E" (Ex: E1,E2,E3...En)
Ligne suivante : les Projets sur lesquels cette équipe travaillent (P1,P2,P3,Pn)
Chaque projet "P" doit être examiné par les équipes "E" qui y contribuent. Si j'ai 50 projets, je dois passer en revue 50 projets les un à la suite des autres ce qui peut être long.
L'objectif est ce créer des groupes composés d'équipes qui ont le maximum de projets en communs de manière à avoir plusieurs groupes en parallèle qui examinent des projets. Je gagne du temps ! Idéalement chaque groupe traite de projets indépendants les uns des autres car une Equipe ne peut pas être dans deux groupes à la fois.
Cependant, je peux avoir des équipes qui sont "presque" sur tous les projets donc je m'autorise un nombre d'équipe à cheval entre deux groupes mais il faut en avoir le moins possible.
Il faut donc trouver une méthode de recensement des doublons par projet, puis voir combien d'usines sont concernées en communs pour chaque projet.
Enfin pour le projet qui implique le plus grand nombre d'usine, comparer avec d'autres projets avec moins d'Usine qui pourraient rentrer dans le groupe car ce sont les mêmes usines. Si il n'y en a aucun, balayer tous les autres projets et leurs Usines concernées et choisir celui qui est le plus couvert par les Usines déjà présentes. La limite d'un groupe est de 20 Personnes.
Je pense qu'il faut être bien balaise en statistique, il doit y avoir une histoire de calcul d'Intersection et complément. Mais je pense qu'il faut un gars balaise tout court :)
Je vous joins un fichier dans le quel le premier onglet "Commun" est le vrai jeux de données
Bonjour à tous,
J'ai mis au point un algorithme qui j'espère est le bon.
Pouvez vous m'aider à le mettre en œuvre ?
Dans le fichier ci joint, il est expliqué dans l'onglet Tableau. Ce sont les étapes 1 à 9
Salut Gian,
Je conçois le principe, l'objectif mais..., pas facile de conceptualiser ton projet et encore moins ton algorithme... matching, dédoublonnement, paralléliser...
Tu peux nous le refaire en français ?
Nul en math, évidemment...
Cela dit, je serais très content de pouvoir t'aider...
A+
Bonjour Curulis !
Merci beaucoup pour ton aide
Je vais essayer de reformuler plus simplement :)
Ce que je suis censé faire: Chaque Projets Px doit être passé en revue par toutes les équipes travaillant dessus.
Si je passe en revue séquentiellement P1 puis P2 puis P3, P4, P5, P6, Px cela crée de l'attente sur les projets à venir et aussi sur les équipe qui attendent leur tour de parole.
C'est le même problème si je passe en revue par équipe A puis B puis C...
Ce que j'aimerais faire : l'objectif est de passer en revue le plus vite possible tous les projets. Actuellement, pour 40 projets et 50 équipes on y passe 6h...
La méthode que je propose : Déterminer des groupes de travail qui concernent des équipes et des projets en communs. Idéalement, chaque groupe est indépendant l'un de l'autre ce qui permet de paralléliser la revue des projets.
Pour Illustrer, j'ai mis deux exemples dans le fichier ci dessous
Bonjour GianGian, curulis57,
Pour ma part, je ne comprends pas très bien l'objectif, il y a certains termes qui créent une confusion comme "tour de parole" car on ne comprend plus le rapport avec des projets d'usines...
Mais selon moi, j'aurais tendance à dire qu'il faut pour chaque équipe un tableau avec ses projets et les autres équipes qui participent ces projets. Ca permettra de dénombrer plus facilement les équipes qui ont beaucoup de projets en commun, en plus d'avoir (ce qu'on a déjà le nombre de projets par équipe). Il sera plus facile de répartir les équipes ayant peu de projets sur des projets ayant peu d'équipes.
Je sais pas si je suis clair
Cdlt,
Bonjour 3GB et merci à toi de te joindre à nous :)
Je te donne un exemple : J'ai 3 projets P1,P2,P3 sur lesquels j'ai 6 équipes qui y contribue. Pour P1, les équipes (ou Usines) E1,E3,E5 travaillent dessus.
Je suis le maitre de cérémonie et je demande pour P1 :
"E1, Combien de temps allez vous passer à réaliser vos tâche sur le projet P1 ?" => ils me répondent "10j" ==> C'est le tour de parole de E1
"E3, Combien...." => "5j" C'est le tour de parole de E3
"E5, Combien ..." ==> "18j" => C'est le tour de parole de E5
Je continue pour P2, puis P3.
Est-ce que c'est plus clair ?
J'ai compris ton raisonnement, tu veux un tableau pour chaque équipes et croiser les données entre chaque tableaux.
Par rapport à ça, est ce que ce tableau ne répond pas au besoin en filtrant par équipe (il y avait une coquille Usine => Projets?
| Equipe | Projets |
| E2 | P1 |
| E4 | P1 |
| E1 | P2 |
| E2 | P2 |
| E4 | P2 |
| E1 | P3 |
| E2 | P3 |
| E3 | P4 |
| E4 | P4 |
| E3 | P5 |
| E4 | P5 |
| E1 | P6 |
| E5 | P6 |
| E5 | P5 |
C'est un plaisir
J'ai compris pour les tours de parole. Donc j'imagine que ça doit être pris en compte dans la façon d'organiser les groupes ?
Je ne pense pas que ce tableau suffise. Pour mettre en évidence des informations claires, j'ai l'impression qu'il faut répertorier le plus d'infos sur chaque équipe.
Le but serait de réaliser des sortes de tris successifs en se focalisant sur les projets pour chaque équipe et sur les équipes qu'elles ont en commun, de manière à avoir une répartition plus égale ou plus logique en faisant converger dans des groupes dissociés les équipes ayant beaucoup d'équipes communes. Puis en répartissant par la suite les équipes ayant moins de projets ou d'équipes en commun.
Par exemple, visuellement, je vois que E3, E6, E28, E29 partagent beaucoup de projets. Il semblerait logique qu'elles soient réunies dans un groupe et que les projets qu'elles partagent avec peu d'équipes ou les projets qui sont partagés avec beaucoup d'équipes mais pas communs à ces 4 équipes majeurs soient répartis autrement...
Franchement, c'est pas évident, ça parait plus simple à faire spontanément qu'à modéliser, d'autant qu'on ne sait pas vraiment si les projets peuvent être réaffectés ou si certains sont plus importants que d'autres...
Je vois ce que tu veux dire.
Etape 1 : J'avais commencé par créer un tableau des couples possibles et leurs équipes qu'ils ont en commun :
| Couple | Equipes |
| P1, P2 | E2,E4 |
| P1, P3 | E2 |
| P1, P4 | |
| P1, P5 | E4 |
| P1, P6 | |
| P2, P3 | E1,E2 |
| P2, P4 | E4 |
| P2, P5 | E4 |
| P2,P6 | E1 |
| P3, P4 | |
| P3, P5 | |
| P3, P6 | E1 |
| P4, P5 | E3,E4 |
| P4,P6 | |
| P5,P6 | E5 |
Etape 2 : Maintenant à partir du tableau, je vois que E4 est l'équipe qui intervient sur beaucoup de projet ==> Il ne faut pas que E4 soit sur deux groupes en même temps !
J'en déduis qu'il faut que je crée un groupe avec E4.
Etape 3 : Je choisis un couple avec E4, Par exemple "P1,P2 E2,E4" => je tiens un groupe de base.
Etape 4 : Quels autres projets je peux ajouter qui concerne E2 et/ou E4 ? Et là ça se complique :)
Si je regarde les projets je peux ajouter P3 qui concerne E2. Mais P3 concerne aussi E1 et ajouter E1 m'empêcherait de faire un groupe en // E1,E5 P1,P6 ce qui est bien mieux !
C'est pas évident hein
Combien de groupes voudrais-tu obtenir ? Est-ce que les projets sont tous de même ampleur ou certains nécessitent vraiment beaucoup d'équipes ? Est-ce que certains projets requièrent des spécialités (ou des moyens techniques) que seules certaines équipes maitrisent ? Est-ce que les équipes disposent toutes de ressources équitables ?
Toutes ces questions sont importantes sinon, on pourrait très faire un plouf, plouf pour affecter les équipes à un groupe
D'instinct, je compterais le nombre de projets pour chaque équipe. Je chercherais à les classer dans des quartiles (sachant que les 4 équipes majeurs ont beaucoup de projets en commun). Je me concentrerais sur le groupe 1 en identifiant les projets les plus récurrents.
Ensuite, j'affecterais les projets qui ne sont partagés que par 1 ou 2 équipes du groupe 1 (enfin les moins récurrents) au groupe 2 (second quartile). Je referais de même jusqu'au groupe 4.
On peut à la rigueur créer un groupe 0 (projets an attente d'affectation de groupe réel).
Voilà, en essayant de traiter le problème comme si on avait des chapeaux dans lesquels se trouvent des équipes et leurs projets...
Mais pour automatiser ça
Hello !
Très intéressant ton approche par les quartile ! je vais essayer de la transposer en algorithme. Mais avant ça je dois te répondre sur tes questions
Combien de groupes voudrais-tu obtenir ?
Pas de limite car le principal est de paralléliser pour traiter des paquets de projets, tant que j'ai un groupe qui traite plus de un projet c'est efficace
Est-ce que les projets sont tous de même ampleur ou certains nécessitent vraiment beaucoup d'équipes ?
L'indicateur qui répond à ta question est le nombre d'équipes qui intervient pour un projet. Si P1 concerne E1,E2 et que P2 concerne E1,E2,E3,E4 il est de plus grande ampleur
Est-ce que certains projets requièrent des spécialités (ou des moyens techniques) que seules certaines équipes maitrisent ?
Pour cet exercice, on considère que chaque Equipe a ses propres spécialités/Moyens, elles sont toutes uniques et indépendantes les unes par rapport aux autres.
Une équipe E3 ne peut pas être remplacée par E2 car elles auraient les mêmes spécialités/Moyens.
Est-ce que les équipes disposent toutes de ressources équitables ?
Oui
Tu dis :
Pour cet exercice, on considère que chaque Equipe a ses propres spécialités/Moyens, elles sont toutes uniques et indépendantes les unes par rapport aux autres.
Une équipe E3 ne peut pas être remplacée par E2 car elles auraient les mêmes spécialités/Moyens.
Donc, si je comprends bien, il y a une sorte de répartition des tâches, chacune a son rôle à jouer dans l'élaboration du projet (un cycle de production ?). C'est pas facile. Peut-être qu'en ajoutant des données (spécialité, région, ...), ça pourrait être plus parlant. Parce qu'on ne peut finalement pas organiser aussi simplement. Certaines équipes ne peuvent intervenir sur certains projets ou a contrario doivent y contribuer d'office, du fait de leur spécialité/moyens.
Donc, si je comprends bien, il y a une sorte de répartition des tâches, chacune a son rôle à jouer dans l'élaboration du projet (un cycle de production ?). C'est pas facile. Peut-être qu'en ajoutant des données (spécialité, région, ...), ça pourrait être plus parlant. Parce qu'on ne peut finalement pas organiser aussi simplement. Certaines équipes ne peuvent intervenir sur certains projets ou a contrario doivent y contribuer d'office, du fait de leur spécialité/moyens.
C'est bien une répartition des tâches. Construire un bungalow ou un complexe hôtelier ne fait pas appels aux mêmes équipes. Si je désigne les équipes par "Ex" avec x = 1, 2, 3... cela signifie que chaque équipe a son corps de métier. Je suis obligé d'anonymiser pour raison de confidentialité
Mon point de départ sont les projets et les équipes qui y travaillent, ça ne peut plus bouger par la suite.