D'un autre coté, l'option de refuser le match te permet de te passer totalement d'un algo de sélection en dur:
• Chaque joueur a des paramètres, qui constituent un vecteur V[n] (dimension n car n paramètres)
• Le match maker choisit deux adversaires de vecteurs V1 et V2, totalement au hasard.
• Si les adversaires acceptent le match, c'est que la paire V1-V2 est une paire que les joueurs apprécient. S'ils refusent le match, c'est que cette paire n'est pas appréciée des joueurs. On peut même affiner en différenciant les cas où V1&V2 acceptent, V1&V2 refusent, V1 refuse V2 accepte et V1 accepte V2 refuse.
• L'algo intègre cette information dans un base de données, et il apprend ainsi à fournir une meilleure paire la prochaine fois.
De fil en aiguille, à force de matchs, tu auras forcément la solution optimale que tes joueurs apprécieront: peu importe qu'en pratiquent, ils aiment les matchs déséquilibrés ou qu'ils les détestent, l'algo adaptatif trouvera la solution qui leur plaira le plus, sans trop de code (mais avec beaucoup de données).
Il y a surement des articles sur le net décrivant les algorithmes apprenants dans ce genre de cas (choisir deux éléments correspondant chacun à un vecteur V[n] à partir de paires V1-V2 valides et de paires V1-V2 invalides). De tête, sans recherche, on pourrait faire ainsi:
• Stocker toutes les paires V1V2 avec l'indication "duel accepté=1/refusé=0"
• Si deux paires se superposent (ou, à défaut, sont très proches), on n'en stocke qu'une et l'indication "accepté/refusé" devient la moyenne pondérée de ces deux paires (donc, si j'ai déjà une paire V1/V2/1 et que j'insère une paire V3/V4/0 avec V1=V3 et V2=V4, alors je modifie la paire V1/V2/0 existante pour V1/V2/0.5 et si une autre paire V3/V4/1 survient, je modifierai V1/V2/0.5 en V1/V2/0.75 ou en V1/V2/0.666)
• Piocher une paire V3V4 au hasard
• Chercher la paire V1/V2/x existante la plus proche (avec distance(V1-V3)=d1 et distance(V2-V4)=d2)
• Proposer ce duel si et seulement si rand(0..1) <= x
• Chaque joueur a des paramètres, qui constituent un vecteur V[n] (dimension n car n paramètres)
• Le match maker choisit deux adversaires de vecteurs V1 et V2, totalement au hasard.
• Si les adversaires acceptent le match, c'est que la paire V1-V2 est une paire que les joueurs apprécient. S'ils refusent le match, c'est que cette paire n'est pas appréciée des joueurs. On peut même affiner en différenciant les cas où V1&V2 acceptent, V1&V2 refusent, V1 refuse V2 accepte et V1 accepte V2 refuse.
• L'algo intègre cette information dans un base de données, et il apprend ainsi à fournir une meilleure paire la prochaine fois.
De fil en aiguille, à force de matchs, tu auras forcément la solution optimale que tes joueurs apprécieront: peu importe qu'en pratiquent, ils aiment les matchs déséquilibrés ou qu'ils les détestent, l'algo adaptatif trouvera la solution qui leur plaira le plus, sans trop de code (mais avec beaucoup de données).
Il y a surement des articles sur le net décrivant les algorithmes apprenants dans ce genre de cas (choisir deux éléments correspondant chacun à un vecteur V[n] à partir de paires V1-V2 valides et de paires V1-V2 invalides). De tête, sans recherche, on pourrait faire ainsi:
• Stocker toutes les paires V1V2 avec l'indication "duel accepté=1/refusé=0"
• Si deux paires se superposent (ou, à défaut, sont très proches), on n'en stocke qu'une et l'indication "accepté/refusé" devient la moyenne pondérée de ces deux paires (donc, si j'ai déjà une paire V1/V2/1 et que j'insère une paire V3/V4/0 avec V1=V3 et V2=V4, alors je modifie la paire V1/V2/0 existante pour V1/V2/0.5 et si une autre paire V3/V4/1 survient, je modifierai V1/V2/0.5 en V1/V2/0.75 ou en V1/V2/0.666)
• Piocher une paire V3V4 au hasard
• Chercher la paire V1/V2/x existante la plus proche (avec distance(V1-V3)=d1 et distance(V2-V4)=d2)
• Proposer ce duel si et seulement si rand(0..1) <= x