클럽 레벨 Elo 등급에 대한 소프트웨어 또는 웹 서비스가 있습니까?


19

지역 클럽 수준의 Elo 등급을 추적 할 수있는 소프트웨어 (또는 웹 기반 서비스)가 있습니까?

이 등급은 공식 Elo 등급과 관련이 없으며, 클럽 내 플레이어 세계에서 Elo 등급 일뿐입니다 (즉, 다양한 소셜 토너먼트의 게임은 등급을 계산합니다).


2
그것은 프로젝트에 대한 흥미로운 아이디어입니다.
Eve Freeman

나는 우리 지역 클럽을 위해 손으로 해냈습니다. 작업을 수행하기 위해 프로그램에 데이터를 입력하는 것만큼이나 쉽습니다.
yobamamama

답변:


10

사용할 수 없더라도 이와 같은 것을 구현하기가 어렵지 않습니다. 다음은 아이디어를 제공하기위한 매우 어리 석고 단순한 평가 시스템의 예입니다. 그러나 실제 Elo 공식을 사용하는 것이 그렇게 어렵지는 않다고 생각합니다.

편집 : 여기 수식으로 주어진 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

내 원래 파이썬 구현은 다음과 같습니다.

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  

나는 Elo가 그렇게 간단하다고 생각합니다. :)
Eve Freeman

좋은. OP가이를 실제 USCF 등급 알고리즘으로 수정하고자한다면이 문서의 섹션 2에서 수학적 세부 사항을 확인할 수 있습니다. glicko.net/ratings/rating.system.pdf
ETD

2
고마워요.하지만 정말 궁금해서 엘로 공식을 직접 구현했습니다 :).
Akavall

체스 클럽과 같은 작은 우주의 경우, 바닥이없는 것이 가장 좋다고 생각합니다. 그렇지 않으면 매우 약한 플레이어가 많이 플레이하면 곧 인플레이션을 얻을 수 있습니다.
Pep

지역 클럽 등급의 경우 elo glicko의 모든 복잡성
yobamamama

6

그것은 그 보인다 rankade , 스포츠, 게임에 대한 우리의 순위 시스템을, 그리고 더 많은, 당신의 요구에 맞는.

무료로 사용할 수 있으며 중소 규모의 플레이어 그룹에 대한 순위 (및 경기 통계 등을 포함한 통계) 를 관리하도록 설계되었습니다 .

Rankade 사용하지 않는 일로 ,하지만 알고리즘 (라는 세개 더 복잡한이 (여기에 비록, 알고리즘)을 비교 포함한 대부분의 알려진 평가 시스템 사이의 일로 , GlickoTrueSkill 당신이 일대일 일치를 재생하는 경우), 일로와 유사하다 뿐.


2
매우 멋진 webapp!
andras

1
나는 그것을 시도했고 그것은 내 요구에 맞는 것 같다; 경기가 시작된 후 간단하고 깔끔하며 플레이어를 추가 할 수 있습니다. 사용자가 사용자 정의 CSS를 허용하도록 제안하고 싶습니다. 그냥 자신의 CSS를 붙여 사용자를 위해 사용할 수있는 텍스트 영역 (또는의 contentEditable 사업부를) 만든
Coisox

4

방금 다운로드 한 ELORater 라는 Windows 용 경량 프리웨어 항목으로 다운로드하여 놀았습니다 . 클럽의 "그룹"을 만든 다음 원하는 초기 등급과 함께 그룹에 플레이어를 추가 할 수 있습니다. 그런 다음 플레이되는 모든 게임의 결과를 입력하면 프로그램에서 업데이트 된 플레이어 등급 목록을 유지 관리합니다.


아직 온라인 상태입니까?
오브리




0

http://elorankings.com

사용자 정의 elo 순위를 만들고 특정 매개 변수를 제어 할 수 있습니다. 대부분 비디오 게임 커뮤니티에서 사용하지만 순위를 만들고 어떤 것에 대한 명예 등급을 관리하기 위해 수행 할 수 있습니다. 사용하기 매우 쉽습니다. 완전한 경기 기록을 유지하고 플레이어 기록, WL 및 경기 당 점수가 어떻게 변했는지 개별적으로 볼 수 있습니다. 매주 실행되는 스매시 토너먼트에 사용합니다 : http://elorankings.com/rankings.aspx?id=1


사이트가 다운되었거나 더 이상 살지 않는 것 같습니다
andrewb


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.