2017-08-16 4 views
0

Je dois diviser une classe de 50 étudiants en rédigeant une dissertation dans 10 groupes de discussion différents de 5 membres chacun. En théorie, il y a 1,35363x10^37 façons possibles de faire cela, qui est juste le résultat de {50!}/{(5!^10) * 10!)}, S'il est déjà décidé que les groupes seront constitués de 5.Possibilités de diviser une classe en groupes avec plusieurs critères

Cependant, chaque groupe doit être dirigé par un facilitateur. Cela réduit considérablement le nombre de combinaisons possibles, car chaque animateur dispose d'un domaine d'expertise parmi 5 possibles, qui doit correspondre autant que possible aux sujets abordés par les étudiants. S'il y a trois facilitateurs de compétence A, trois de compétence B, deux de compétence C, un de compétence D et un de compétence E, et 15 étudiants sont affectés à A, 15 à B, 10 à C, 5 à D et 5 À E, le nombre de combinaisons possibles descend à 252 505.

Mais les étudiants et les animateurs continuent à plaider pour l'utilisation de plus de critères, au lieu de se concentrer uniquement sur le domaine d'expertise. Par exemple, vouloir faire partie d'un groupe d'étudiants qui se connaissent, ou faire partie d'un groupe avec un facilitateur qui a une connaissance particulière d'une méthode de recherche spécifique. J'essaye d'illustrer mon raisonnement intuitif, qui me dit que chaque nouveau critère augmente la complexité/l'impossibilité de la tâche, si l'objectif est une solution complètement efficace. Mais je n'arrive pas à exprimer mon esprit de manière satisfaisante d'un point de vue analytique. Est-ce que mon raisonnement est correct, que l'ajout de critères réduirait la quantité de possibilités qui peuvent être rejetées selon le principe d'inclusion-exclusion, rendant ainsi la tâche plus complexe, en ajoutant des combinaisons possibles? Je pense aussi que si les critères ne sont pas compatibles (par exemple si des étudiants qui se connaissent écrivent sur des sujets différents, et qu'il n'y a pas assez de facilitateurs compétents), certaines contraintes deviennent inviables.

+0

Je pense que vous vous trompez sur le fait qu'il existe seulement 2 118 760 façons de partitionner 50 personnes en 10 groupes de 5. Vous avez utilisé un coefficient binomial, mais il serait plus logique d'utiliser un coefficient multinomial. Il y a plus comme 4.91 x 10^43 telles partitions (ou 1.35x10^37 si vous vous souciez qui est groupé avec qui et non qui est dans le premier groupe, qui est dans le deuxième groupe, etc.) Au delà de cela, votre question est trop vague pour répondre. Une fois que vous savez quels sont les critères, vous pouvez poser des questions sur les moyens de les satisfaire, mais en ce moment, vous semblez juste à penser à haute voix. –

+0

Merci! Tu as raison. Le coefficient binomial donne le nombre de combinaisons possibles d'un seul groupe d'élèves. Ce nombre est plus grand, en considérant les combinaisons possibles des 9 groupes restants. Je suis en train de mettre à jour le post pour inclure ceci. Ma question est vague parce que nous n'avons pas décidé d'autres critères spécifiques. Ceux-ci pourraient être des méthodes et/ou des étudiants se connaissant d'avance. Mon but n'est pas nécessairement de trouver l'une ou une solution efficace, mais de montrer/illustrer la complexité impliquée, afin que tous puissent accepter de limiter le nombre de critères et d'accepter cela. –

+0

On dirait que vous avez plus d'un problème politique que d'un problème de programmation mathématique/informatique. De toute évidence, les complications sont, bien, des complications. Avez-vous vraiment besoin de confirmation de cela? En tout cas, j'ai ajouté une réponse qui pourrait ou ne pourrait pas aider. –

Répondre

0

Vous devez faire la distinction entre complexité algorithmique et complexité humaine. L'ajout de contraintes augmente presque automatiquement la complexité humaine du problème, dans la mesure où cela signifie qu'il y a plus à faire pour envelopper votre esprit. Mais - il n'est pas vrai que la complexité de calcul augmente. Au moins, parfois, il diminue. Par exemple, disons que vous avez un ensemble de 200 éléments et que vous voulez déterminer s'il y a un sous-ensemble de ceux-ci qui satisfont certaines contraintes. Par exemple, disons que vous avez un ensemble de 200 éléments. Selon la contrainte, il n'y a peut-être pas de moyen possible de le faire. Après tout, 2^200 est beaucoup trop grand pour la force brute. Ajoutez maintenant la contrainte que le sous-ensemble doit avoir exactement 3 éléments. Maintenant, tout d'un coup, il est possible de forcer la force brute (il suffit de parcourir les 1.313.400 éléments à trois éléments jusqu'à ce que vous trouviez une solution ou déterminiez qu'il n'y en a pas). Cela suffit à montrer qu'il n'est pas vrai que l'ajout d'une contrainte rend toujours un problème intrinsèquement plus difficile. Dans le cas discret, une nouvelle contrainte peut réduire la taille de l'espace de recherche d'une manière qui peut être exploitée. Dans les cas continus, il peut réduire les degrés de liberté et ainsi réduire la dimension du problème. Cela ne veut pas dire que cela le rend toujours plus facile. Probablement, en règle générale, les contraintes supplémentaires tendent pour rendre un problème plus difficile.

Votre problème actuel n'est pas suffisamment expliqué pour donner des conseils concrets. Une possibilité (et une façon de gérer une prolifération de contraintes quelque peu étrangères) est de diviser les contraintes en contraintes dures qui doivent être satisfaites et en contraintes douces qui sont simplement souhaitées mais pas strictement nécessaires. Transformez-le en un problème d'optimisation: trouvez la solution qui maximise le nombre de contraintes souples qui sont satisfaites, à la condition qu'il satisfasse les contraintes dures. Peut-être que vous pouvez formuler comme un problème integer programming et espérons trouver une solution exacte.Ou, s'il est facile de générer des solutions qui satisfont les contraintes dures et qu'il est facile de muter une telle solution pour en obtenir une autre (par exemple échanger deux étudiants qui sont dans des groupes différents), alors une evolutionary algorithm serait une heuristique raisonnable.

+0

Merci pour les clarifications et bonnes suggestions! J'essaie de le formuler comme un problème de transport avec des contraintes, où N est le nombre d'élèves = 50 et G est l'un des 10 groupes possibles (de A à J). J'ai défini "p" comme le poids de préférence attribué par chaque élève à chaque groupe. "x" devient une variable binaire, où x_NG = 1 est l'étudiant N assigné à un groupe G. Mon problème est alors de maximiser le sumproduct x * (p), quand la somme de x dans chaque groupe est égale à 5 et la somme de x pour chaque étudiant est égal à 1. Cependant, le solveur d'Excel continue de violer les contraintes ... –

+0

J'ai identifié le problème. Le solveur d'Excel gère 200 variables de décision. Quand j'ai réduit la matrice de décision à 200, et que j'ai adapté les restrictions, le solveur a réussi à trouver une solution exacte qui maximise le produit de la somme des préférences et les variables de décision binaires. Je suppose que je vais devoir utiliser une autre interface qui gère plus d'entrées variables. Il y a beaucoup d'options. J'apprécie les suggestions, si vous avez une expérience avec cela. –

+0

@AVT_DB Pourquoi s'en tenir à Excel? Il existe différents solveurs open-source. –