OVH Cloud OVH Cloud

Composition de match

77 réponses
Avatar
JLuc69
Salut le groupe,

Je me retrouve avec un petit problème posé par un ami que mes quelques
neuronnes n'arrivent pas à gérer.
Les données du problème :
- Ils sont 24 joueurs (de tennis, ça ne sert pas, mais ce sera peut
être plus parlant :p)
- Ils ont 6 cours de disponnible par semaine dont 3 le mardi et 3 le
jeudi
- Ils voudraient pouvoir jouer avec tout le monde et rencontrer tout le
monde sur l'année

J'ai fais des calculs, ça ferait 276 doubles différent donc 138 matchs
possibles. Sur 48 semaines, ils ont la possibilité de faire 48*6=288
matchs. Ce qui fait qu'ils pourraient faire fois la liste trouvée, plus
12 rencontres aléatoires.
J'ai commencer un fichier excel où j'ai tous les binomes mais je coince
sur les rencontres pour que chaque semaine, tout le monde joue et que
sur la liste des rencontres, tout le monde joue avec tout le monde et
rencontre tout le monde.

C'est le coté ardu de la tâche (au moins pour moi). Pourriez vous
m'aider à établir cette liste ?
Je vous mets ce que j'ai déjà commencer :
http://www.cjoint.com/c/FGCoSYhVFug

Un grand merci si vous pouvez me donner des pistes pour y arriver

JLuc

10 réponses

Avatar
HB
Bonjour,
J'ai commencé à réfléchir
à la façon de générer les 138 matchs
mais ce n'est pas encore au point ...
Je fais un tableau de 138 lignes et 138 colonnes
les entêtes de lignes et de colonnes
sont les 2x138 paires différentes
Il faut compléter le tableau pour qu'il y ait
une croix par ligne et une par colonne
(une croix représente une rencontre)
mais il faut aussi veiller à ce que
les matchs soient possibles
(AD contre DQ ... ce n'est pas possible)
Cela condamne pas mal de cases...
Ensuite, avec les cases restantes
il faut bien répartir
et là un algo récursif devrait y parvenir ...
en tout cas je l'espère ...
( si ça bloque à un niveau,
on passe au choix suivant au niveau précédent)
reste à bien structurer tout ça ...
Il faut du temps ...
Remarque concernant le second groupe de match.
===============================================
Il y a plusieurs façons d'organiser
les 138 matchs en utilisant correctement
les 276 couples.
On le comprend en imaginant simplement
de renuméroter autrement la liste des joueurs ...
Il y a exactement 24x23x...x2x1 façon de ranger
24 objets ... ça fait beaucoup ...
il serait peut-être plus utile d'utiliser
une seconde répartition
pour la seconde série de matchs.
l'idéal serait même qu'aucun match ne se répète ...
et c'est sans doute possible...
Parmi ces permutations, il vaut mieux choisir
une permutation qui ne laisse aucun numéro immobile.
Y'en a énormément !
Il suffit de partager la liste des 24 en un certain nombre de
sous-listes puis, sur chaque sous-liste, d'effectuer
une "permutation circulaire".
En ce qui concerne les 12 matchs restants,
on pourrait aussi leur foutre la paix
qu'ils profitent un peu de la vie, non ? :o)
A+
HB
Le 30/07/2016 à 12:58, JLuc69 a écrit :
Non, il y a méprise
Je n'ai pas dit que chaque joueur devait jouer avec chaque autre contre
tous les autres joueurs, mais que chaque joueur devait pouvoir jouer
aves les 23 autres et si possible contre tous les autres mais quelle que
soit la compsition des adversaire.
Dans la théorie, le joueur N°1 pourra composer 23 duos, donc il fera 23
parties qui s'étaleront sur 23 semaines (1 partie par semaine). Sur ces
23 parties, il serait bien qu'il recontre les 23 autres quelque soit la
composition de l'équipe adverse.
Une fois cette liste composée, ils la répeteront pour avoir des matchs
sur 46 semaines. Pour les 2 semaines restantes, ils pourraient soit
faire un tirage aléatoire comme le propose Isabèle, soit reprendre
quelqus matchs de la première liste
Dans son message précédent, Jacquouille a écrit :
Bonjour JLuc
tel qu'énoncé, c'est infaisable.
Si chaque joueur doit faire équipe avec chacun des 23 autres, pour
jouer une fois contre chacun des 22 autres, cela fera 11 rencontres,
rien qu'avec les joueurs A+B.
11 autres avec A+C .... . Tout cela rien que pour le joueur A
Idem pour B, avec 11 rencontres en moins (celles déjà jouées avec A).
Si, en plus, tu veux de l'aléatoire .....
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"JLuc69" a écrit dans le message de groupe de discussion :
Je m'aperçois que le problème est beaucoup plus épineux que je ne
l'avais envisagé au départ...
---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
https://www.avast.com/antivirus


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
LSteph
Re,
as tu regardé le tableau que j'ai joint.
en 2 fois 66 matchs c joué
http://www.cjoint.com/c/FGEi0Wljd8w
--
LSteph
Le samedi 30 juillet 2016 12:58:32 UTC+2, JLuc69 a écrit :
Non, il y a méprise
Je n'ai pas dit que chaque joueur devait jouer avec chaque autre contre
tous les autres joueurs, mais que chaque joueur devait pouvoir jouer
aves les 23 autres et si possible contre tous les autres mais quelle
que soit la compsition des adversaire.
Dans la théorie, le joueur N°1 pourra composer 23 duos, donc il fera 23
parties qui s'étaleront sur 23 semaines (1 partie par semaine). Sur ces
23 parties, il serait bien qu'il recontre les 23 autres quelque soit la
composition de l'équipe adverse.
Une fois cette liste composée, ils la répeteront pour avoir des matchs
sur 46 semaines. Pour les 2 semaines restantes, ils pourraient soit
faire un tirage aléatoire comme le propose Isabèle, soit repren dre
quelqus matchs de la première liste
Dans son message précédent, Jacquouille a écrit :
Bonjour JLuc
tel qu'énoncé, c'est infaisable.
Si chaque joueur doit faire équipe avec chacun des 23 autres, pour jouer une
fois contre chacun des 22 autres, cela fera 11 rencontres, rien qu'avec les
joueurs A+B.
11 autres avec A+C .... . Tout cela rien que pour le joueur A
Idem pour B, avec 11 rencontres en moins (celles déjà jouà ©es avec A).
Si, en plus, tu veux de l'aléatoire .....
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"JLuc69" a écrit dans le message de groupe de discussion :
Je m'aperçois que le problème est beaucoup plus épineux que je ne
l'avais envisagé au départ...
---
L'absence de virus dans ce courrier électronique a été v érifiée par le
logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
HB
Bonjour Isabelle,
je viens de prendre le temps de regarder cette proposition.
Pour répartir les 24 joueurs sur les 6 rencontres
d'une semaine donnée, c'est nickel.
C'est rigolo l'idée de la chaîne.
Pour ma part j'utilise un tableau intermédiaire
.. mais bon c'est le même résultat ...
======================================================== Sub Permut()
Dim TEMP(1 To 24) As Integer
Dim R, S, T As Integer
' remplit de façon aléatoire le tableau TabloPermut()
' avec les nombres de 1 à 24
' -> une "permutation" de l'ensemble {1;2;...;24}
For R = 1 To 24
TEMP(R) = R
Next
Randomize
For R = 1 To 24
T = R + Int((25 - R) * Rnd())
TabloPermut(R) = TEMP(T)
S = TEMP(T)
TEMP(T) = TEMP(R)
TEMP(R) = S
Next
========================================================
Toutefois si on fait ainsi un tirage au hasard par semaine, il est
hautement improbable que les autres contraintes soient respectées.
Je tente petit à petit de raffiner :
Deux feuilles avec les 2x23 semaines
Deux feuilles avec les 23 matchs de chaque joueur pour 23 semaines
Des variables en plus
- nb de match d'un paire
( devra plafonner à 1 dans la boucle_1 puis à 2)
- nb de tirages tentés pour chaque semaine
TIR(1 à 46)
Principe pour 23 semaines
boucle de 1 à 23
- tirer une les matchs de la semaine
- Test de compatibilité avec les semaines précédentes
- chaque paire ne joue qu'une fois
Test positif _> passer à la suite
sinon refaire le tirage
La contrainte "chacun joue contre chacun"
a été complètement zappée dans ce cas
mais je ne serait pas surpris
que ce soit respecté quand même si ça marche...
Il faut aussi tester le nombre de tirages déjà tentés
sur cette semaine là
avec d'en refaire un nouveau
- si le nb de tirages est trop fort (max à définir ?)
--> remonter à la semaine précédente
et refaire ce tirage là...
c'est là que les tableaux des variables
bien choisies seront indispensables
et c'est encore en cours ... doucement ...
Cordialement,
HB
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
LSteph
donc tu n'as pas regardé , c'est clair.
Pourquoi tu es toujours sur 138 ?
Avatar
isabelle
c'est très bien pensé LSteph, bravo!
isabelle
Le 2016-07-30 à 17:38, LSteph a écrit :
Re,
as tu regardé le tableau que j'ai joint.
en 2 fois 66 matchs c joué
http://www.cjoint.com/c/FGEi0Wljd8w
--
LSteph
Avatar
HB
Le 31/07/2016 à 15:14, LSteph a écrit :
donc tu n'as pas regardé , c'est clair.
Pourquoi tu es toujours sur 138 ?

??????????????????????????????????????
J'ai regardé le classeur proposé par Isabelle qui proposait une macro
pour remplir aléatoirement le tableau des six matchs d'une semaine.
C'est de cela que mon message parlait.
De quoi parles-tu ?
J'ai effectivement aussi vu ton classeur
mais les conditions requises ne sont pas respectées
et Jluc69 a déjà dit en quoi ta proposition
ne correspond pas aux contraintes.
Résumé des épisodes précédents :
- Il y a 24 joueurs A, B, ...., X
- Les couples possibles sont {A,B} ; {A,C} ; ...
- Avec 24 joueurs, il y a 24x23/2 = 276 couples distincts.
- Si on regroupe ces 276 couples 2 par 2
on peut obtenir 276/2 = 138 matchs.
Il faut juste veiller à ce que
les deux couples de chaque match
concerne bien 4 joueurs distincts...
138 matchs est donc le minimum
pour respecter la contrainte
"chacun des (276) couples possibles jouent".
La seconde contrainte
"chaque joueur rencontre chacun des autres"
peut très probablement être assurées
en organisant correctement ces 138 matchs.
La troisième contrainte concerne le planning
et n'est pas directement liée à ce qui précède.
Il y a 6 matchs par semaines ;
le nb de semaines est largement suffisant
mais il faut en plus que chaque joueur joue chaque semaine.
donc, 6 matchs de double avec 24 joueurs
ça fait exactement un match pour chaque joueur par semaine.
voili voilou,
Cordialement,
HB
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
LSteph
Bonsoir,
A l'évidence cela vient de là nous n'avons pas tout à fait l a même lecture
deux contraintes ont été posées
qui si on les combines ne sont pas réalisable tel qu'exprimées pr écédemment.
j'ai donc privilégié ce qui semble possible dans le nombre de sem aines imparti...
mais probablement n'était ce pas au plus près que voulais JL.
--
LSteph
e dimanche 31 juillet 2016 18:43:08 UTC+2, HB a écrit :
Le 31/07/2016 à 15:14, LSteph a écrit :
donc tu n'as pas regardé , c'est clair.
Pourquoi tu es toujours sur 138 ?

??????????????????????????????????????
J'ai regardé le classeur proposé par Isabelle qui proposait une macro
pour remplir aléatoirement le tableau des six matchs d'une semaine.
C'est de cela que mon message parlait.
De quoi parles-tu ?
J'ai effectivement aussi vu ton classeur
mais les conditions requises ne sont pas respectées
et Jluc69 a déjà dit en quoi ta proposition
ne correspond pas aux contraintes.
Résumé des épisodes précédents :
- Il y a 24 joueurs A, B, ...., X
- Les couples possibles sont {A,B} ; {A,C} ; ...
- Avec 24 joueurs, il y a 24x23/2 = 276 couples distincts.
- Si on regroupe ces 276 couples 2 par 2
on peut obtenir 276/2 = 138 matchs.
Il faut juste veiller à ce que
les deux couples de chaque match
concerne bien 4 joueurs distincts...
138 matchs est donc le minimum
pour respecter la contrainte
"chacun des (276) couples possibles jouent".
La seconde contrainte
"chaque joueur rencontre chacun des autres"
peut très probablement être assurées
en organisant correctement ces 138 matchs.
La troisième contrainte concerne le planning
et n'est pas directement liée à ce qui précède.
Il y a 6 matchs par semaines ;
le nb de semaines est largement suffisant
mais il faut en plus que chaque joueur joue chaque semaine.
donc, 6 matchs de double avec 24 joueurs
ça fait exactement un match pour chaque joueur par semaine.
voili voilou,
Cordialement,
HB
---
L'absence de virus dans ce courrier électronique a été v érifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
LSteph
Re,
...
Si l'on doit privilégier l'autre hypothèse:
chaque joueur doit prioritairement avoir joué avec chaque autre peu i mporte contre qui
il lui faut 23 matchs.
Il pourrait ainsi changer de partenaire à chaque match
si chacun doit pouvoir jouer au moins 1 fois par semaine
on a 6 courts pour la durée d'un match par semaine donc 6 matchs par s emaine.
Cette condition est donc remplie et il faudra 23 semaines.
REmplir aléatoirement ou pas le tableau est un choix.
Une fois la liste établie il suffit de gérer l'écart de jou eur chaque semaine
1 avec 2, 2 avec 3...
1 avec 3, 2 avec 4 ...
...
Dans ce cas effectivement cela fera 138 matchs.
--
LSteph
Avatar
Jacquouille
Ah que mon vieux prof avait raison:
Un problème clairement énoncé est à moitié résolu .....
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"LSteph" a écrit dans le message de groupe de discussion :
Re,
...
Si l'on doit privilégier l'autre hypothèse:
chaque joueur doit prioritairement avoir joué avec chaque autre peu importe
contre qui
il lui faut 23 matchs.
Il pourrait ainsi changer de partenaire à chaque match
si chacun doit pouvoir jouer au moins 1 fois par semaine
on a 6 courts pour la durée d'un match par semaine donc 6 matchs par
semaine.
Cette condition est donc remplie et il faudra 23 semaines.
REmplir aléatoirement ou pas le tableau est un choix.
Une fois la liste établie il suffit de gérer l'écart de joueur chaque
semaine
1 avec 2, 2 avec 3...
1 avec 3, 2 avec 4 ...
...
Dans ce cas effectivement cela fera 138 matchs.
--
LSteph
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
LSteph
re,
Donc voici une possibilité sans macro
juste à mettre les 24 noms dans la liste.
Les 6 courts se remplissent à coté.
http://www.cjoint.com/c/FHbmctdRerI
(la première semaine transpose la liste en deux parties
pour faire les 6 courts
les lignes suivante décalent la seconde ligne.
On reposition en 7ème semaine le reste de la liste et on poursuit pare il en dessous...)
--
LSteph