Чи є якесь програмне забезпечення або веб-сервіс для оцінювання Elo на рівні клубу?


19

Чи є яке-небудь програмне забезпечення (або веб-сервіс), що дозволяє відслідковувати локальні рейтинги Elo на рівні клубу?

Ці рейтинги не матимуть ніякого зв’язку з офіційними рейтингами Elo, це був би лише рейтинг Elo у всесвіті гравців у клубі (тобто ігри в різних соціальних турнірах обчислювали б рейтинг).


2
Це цікава ідея для проекту.
Єва Фріман

Я зробив це вручну для нашого місцевого клубу. Майже так само просто, як введення даних у програму, щоб виконати роботу.
йобамама

Відповіді:


10

Навіть якщо вона недоступна, щось подібне не дуже важко реалізувати. Ось приклад із надзвичайно дурною та простою системою оцінювання, яка покликана дати вам уявлення. Але я не думаю, що використовувати фактичну формулу Elo набагато складніше.

EDIT: Я редагую свою реалізацію, щоб використовувати формулу Elo (не включаючи підлоги), задану формулою тут

def get_exp_score_a(rating_a, rating_b):
    return 1.0 /(1 + 10**((rating_b - rating_a)/400.0))

def rating_adj(rating, exp_score, score, k=32):
    return rating + k * (score - exp_score)

class ChessPlayer(object):
    def __init__(self, name, rating):
        self.rating = rating
        self.name = name
    def match(self, other, result):

        exp_score_a = get_exp_score_a(self.rating, other.rating)

        if result == self.name:
            self.rating = rating_adj(self.rating, exp_score_a, 1)
            other.rating = rating_adj(other.rating, 1 - exp_score_a, 0)
        elif result == other.name:
            self.rating = rating_adj(self.rating, exp_score_a, 0)
            other.rating = rating_adj(other.rating, 1 - exp_score_a, 1)
        elif result == 'Draw':
            self.rating = rating_adj(self.rating, exp_score_a, 0.5)
            other.rating = rating_adj(other.rating, 1 - exp_score_a, 0.5)

Це працює так:

>>> bob = ChessPlayer('Bob', 1600)
>>> john = ChessPlayer('John', 1900)
>>> bob.rating
1600
>>> john.rating
1900
>>> bob.match(john, 'Bob')
>>> bob.rating
1627.1686541692377
>>> john.rating
1872.8313458307623
>>> mark = ChessPlayer('Mark', 2100)
>>> mark.match(bob, 'Draw')
>>> mark.rating
2085.974306956907
>>> bob.rating
1641.1943472123305

Ось моя оригінальна реалізація python:

class ChessPlayer(object):
    def __init__(self, name, rating):
        self.rating = rating
        self.name = name
    def match(self, other, result):
        if result == self.name:
            self.rating += 10
            other.rating -= 10
        elif result == other.name:
            self.rating += 10
            other.rating -= 10
        elif result == 'Draw':
            pass

Це працює так:

>>> bob = ChessPlayer('Bob', 1600)
>>> john = ChessPlayer('John', 1900)
>>> bob.match(john, 'Bob')
>>> bob.rating
1610
>>> john.rating
1890
>>> mark = ChessPlayer('Mark', 2100)
>>> mark.match(bob, 'Mark')
>>> mark.rating
2110
>>> bob.rating
1600
>>> mark.match(john, 'Draw')
>>> mark.rating
2110
>>> john.rating
1890  

Я думаю, що Ело, можливо, так само просто. :)
Єва Фрімен

Приємно. Якщо ОП хотіла змінити це, скажімо, фактичним алгоритмом рейтингування USCF, математичні деталі доступні у розділі 2 цього документа: glicko.net/ratings/rating.system.pdf
ETD

2
Дякую, але я отримав справді цікаві факти і сам реалізував формулу Elo :).
Акавал

Для маленького всесвіту, такого як шаховий клуб, я вважаю, що найкраще, щоб не було підлоги, інакше незабаром ви отримаєте інфляцію, якщо дуже слабкі гравці будуть грати багато.
Pep

для рейтингів місцевих клубів вся складність elo glicko все, що тільки не збирається принести реальної користі
yobamamama

7

Здається, що рангад , наша система рейтингу спорту, ігор тощо, відповідає вашим потребам.

Він безкоштовний у використанні та призначений для управління рейтингами (та статистикою , включаючи статистику матчу та багато іншого) для малих та великих груп гравців.

Rankade не використовує Elo , але його алгоритм (який називається алгоритмом ree ), хоча і складніший (ось порівняння між найбільш відомою рейтинговою системою, включаючи Elo , Glicko та TrueSkill ), схожий на Elo, якщо ви граєте в матчах 1 на 1 тільки.


2
дуже класний webapp!
andras

1
Я спробував це, і, здається, відповідає моїм потребам; Простий, чистий, може додавати гравців після початку матчу. Я хотів би запропонувати дозволити користувачеві користувальницький CSS. Щойно надана доступна текстова область (або
вміст, що надається

4

Щойно я завантажив і пограв із легким безкоштовним продуктом для Windows під назвою ELORater, який, здається, забезпечує те, що ви хочете. Ви можете створити "групу" для свого клубу, а потім додати гравців до групи разом з усіма початковими рейтингами, які ви хочете мати. Тоді ви можете просто ввести результати будь-яких ігор, в які граєте, і програма підтримує оновлений список оцінок гравців для вас.


це все ще в Інтернеті?
Обрі


2

Якщо хтось все ще шукає щось подібне, я буду тут досить просте: https://github.com/richardadalton/EloRate

Наразі вам доведеться влаштувати його самостійно, але я можу запропонувати розміщену послугу в майбутньому.

-Рд



0

http://elorankings.com

Дозволяє створювати власні ело-рейтинги та контролювати певні параметри. В основному використовується спільнотами відеоігор, але це може бути зроблено для створення рейтингів та управління рейтингами elo для будь-чого. Дуже простий у використанні. Зберігає повну історію матчів та дозволяє окремо бачити історію гравців, WL та те, як змінювався їх рахунок за матч. Я використовую його для розгромного турніру, який я провожу щотижня: http://elorankings.com/rankings.aspx?id=1


Здається, сайт не працює або більше не живе
andrewb


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.