Comment fonctionne Food Battle ?
Food Battle repose sur une idée simple : l'utilisateur se voit proposer une série de duels, dans lesquels il doit choisir son aliment préféré parmi deux propositions. Les notions d'aliment et de préféré ne sont pas strictement définies : cela peut être un plat, un condiment ou même quelque chose de difficilement mangeable, et l'utilisateur est libre de voter comme bon lui semble (nous recommandons évidemment de voter pour le mets préféré).
En accumulant ces votes, on construit un classement global qui estime la force relative de chaque aliment. Celui-ci repose sur un modèle de comparaison par paires (Bradley-Terry). Chaque aliment possède un score de force noté . Plus ce score est élevé, plus l'aliment est considéré comme fort. La probabilité qu'un aliment gagne contre un aliment s'écrit :
En pratique, cela veut dire qu'un aliment déjà très bien classé est censé gagner plus souvent. Mais si un outsider le bat, l'impact est important sur les scores. Après chaque vote, les deux scores sont ajustés. On commence par calculer la probabilité attendue de victoire du gagnant :
Ensuite, on utilise un pas d'apprentissage adaptatif :
Avec :
- : score du gagnant avant le vote
- : score du perdant avant le vote
- et : nombre de matchs déjà joués par chacun
La variation appliquée est :
Puis les scores sont mis à jour ainsi :
L'opérateur garde les scores dans l'intervalle pour éviter les extrêmes. Cette approche donne un classement réactif au début, puis plus stable quand les aliments ont déjà beaucoup de votes.
Concernant les duels proposés, la sélection n'est pas totalement aléatoire. Le système tire d'abord un sous-ensemble d'aliments actifs, puis choisit deux candidats avec une préférence pour ceux qui ont été moins vus.
L'idée de pondération est :
Plus un aliment a peu de votes (nombre faible de duels), plus il a de chances d'apparaître. Cela évite que toujours les mêmes aliments tournent en boucle et aide à mieux équilibrer la couverture du classement. Enfin, chaque vote passe par des vérifications côté serveur pour protéger l'équité du jeu (cohérence du duel, anti-rejeu, anti-spam). Le classement reflète donc les choix valides des joueurs, pas des écritures directes depuis le navigateur.
