Чи є якесь програмне забезпечення або веб-сервіс для оцінювання 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.