2011-04-14 3 views
5

Je dois diviser un groupe de x personnes en 3 ou 4 groupes, très probablement 3.Comment calculer la corrélation entre les préférences?

Je veux que les gens soient heureux, donc je demande à chaque personne d'évaluer les autres membres du grand groupe de 1 à (x-1).

Comment optimiser les préférences pour créer 3 groupes?

+0

Comment cela correspond à la balise '[compiler-optimization]'? –

+0

Quantifier "heureux". Notation moyenne la plus élevée possible des pairs dans son groupe?Le problème du mariage stable, tout le monde a obtenu dans le meilleur groupe qu'ils pouvaient selon leurs classements (cela ne signifie pas toujours «heureux»)? Aussi, quel est l'ordre des classements, 1 est le meilleur ou le pire? –

+0

1 est le meilleur. Oui, "Plus haute note moyenne possible des pairs dans son groupe" - merci! – wehavinthisbaby

Répondre

3

Voici une méthode qui est susceptible d'obtenir un bon arrangement, même si ce n'est pas un arrangement optimal:

d'abord créer une fonction de classement qui peut prendre une paire de groupes et de déterminer si l'un est meilleur que le autre. Appliquez ensuite l'algorithme suivant:

  1. Affectez des personnes de manière aléatoire à des groupes.
  2. Choisissez au hasard une personne de chaque groupe.
  3. Créer de nouveaux groupes dans lesquels chaque combinaison de réaffectations est effectuée sur les personnes choisies à l'étape 2. (Pour 3 groupes, il y aura 6 ces réaffectations. Pour 4, 24.)
  4. De tous reasignments possibles, choisir le meilleur un.
  5. Répétez les étapes 2 à 4 un million de fois.

MISE À JOUR

S'il n'y a que 18 personnes qui ont besoin d'être assignée, c'est juste (18 choisissez 6) * (12 choisissez 6)/6 = 2,858,856 regroupements possibles. (Ou, dans le cas de quatre groupes c'est (18 choisir 4) * (14 choisir 4) * (10 choisir 5)/4 = 192,972,780 groupements.)

Vous pouvez simplement essayer chacun et choisir le meilleur.

Je suppose que l'algorithme de classement lui-même est vraiment la partie difficile de cette affectation.

Vous pouvez simplement donner à chaque personne un score basé sur la somme des scores des personnes sélectionnées pour être dans son groupe, puis additionner les scores de chaque personne ensemble. Le problème est que vous allez vous retrouver avec toutes les personnes populaires dans un groupe, et toutes les personnes impopulaires dans un autre groupe, et tous les nettoyeurs de combinés téléphoniques dans un autre groupe.

Vous devez simplement attribuer des personnes de manière aléatoire, puis leur dire que vous avez utilisé un système vraiment scientifique. De cette façon, tout le monde obtient un bon mélange.

+0

Ha! Merci Jeff. J'étais intéressé par la solution, mais je pense qu'il est logique d'avoir un bon mélange. – wehavinthisbaby

3

Mesurer la satisfaction totale d'une configuration donnée en calculant la distance entre les positions réelles et les préférences indiquées. Commencez avec un ensemble de groupes randomisés. Ensuite, utilisez quelque chose comme l'escalade ou le recuit simulé pour optimiser.

http://en.wikipedia.org/wiki/Hill_climbing

http://en.wikipedia.org/wiki/Simulated_annealing

recuit simulé semble compliqué, mais il est vraiment juste une version de l'escalade habile colline.

Questions connexes