Có phần mềm hoặc dịch vụ web nào cho xếp hạng Elo cấp câu lạc bộ không?


16

Có phần mềm nào (hoặc dịch vụ dựa trên web) cho phép bạn theo dõi xếp hạng Elo ở cấp câu lạc bộ không?

Những xếp hạng này sẽ không có bất kỳ mối liên hệ nào với xếp hạng Elo chính thức, nó sẽ chỉ là xếp hạng Elo trong vũ trụ của người chơi trong một câu lạc bộ (tức là các trò chơi trong các giải đấu xã hội khác nhau sẽ tính toán xếp hạng).


2
Đó là một ý tưởng thú vị cho một dự án.
Giao thừa Freeman

Câu trả lời:


9

Ngay cả khi nó không có sẵn, một cái gì đó như thế này không quá khó để tự thực hiện. Dưới đây là một ví dụ với hệ thống xếp hạng cực kỳ ngớ ngẩn và đơn giản chỉ nhằm mục đích cung cấp cho bạn một ý tưởng. Nhưng tôi không nghĩ rằng sử dụng công thức Elo thực tế khó hơn nhiều.

EDIT: Tôi chỉnh sửa triển khai của mình để sử dụng công thức Elo (không bao gồm các tầng) được cung cấp bởi công thức ở đây

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)

Điều này hoạt động như sau:

>>> 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

Đây là cách thực hiện python ban đầu của tôi:

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

Điều này hoạt động như sau:

>>> 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  

Tôi nghĩ rằng Elo có thể chỉ đơn giản như vậy. :)
Eve Freeman

Đẹp. Nếu OP muốn sửa đổi điều này bằng thuật toán xếp hạng USCF thực tế, các chi tiết toán học có sẵn trong Phần 2 của tài liệu này: glicko.net/ratings/rating.system.pdf
ETD

2
Cảm ơn, nhưng tôi thực sự tò mò và tự mình thực hiện công thức Elo :).
Akavall

Đối với một vũ trụ nhỏ như câu lạc bộ cờ vua, tôi nghĩ tốt nhất là không có sàn, nếu không bạn sẽ sớm bị lạm phát nếu những người chơi rất yếu chơi nhiều.
Pep

6

Dường như rankade , hệ thống xếp hạng của chúng tôi cho thể thao, trò chơi, và nhiều hơn nữa, phù hợp với nhu cầu của bạn.

Nó miễn phí để sử dụng và nó được thiết kế để quản lý thứ hạng (và số liệu thống kê , bao gồm cả số liệu thống kê trận đấu và hơn thế nữa) cho các nhóm người chơi từ nhỏ đến lớn.

Xếp hạng không sử dụng Elo , nhưng thuật toán của nó (được gọi là thuật toán ree ), mặc dù phức tạp hơn (đây là so sánh giữa các hệ thống xếp hạng được biết đến nhiều nhất, bao gồm Elo , GlickoTrueSkill ), tương tự như Elo nếu bạn chơi các trận đấu 1 trên 1 chỉ có.


2
webapp rất mát mẻ!
andras

1
Tôi đã thử nó và nó có vẻ phù hợp với nhu cầu của tôi; Đơn giản, sạch sẽ, có thể thêm người chơi sau khi trận đấu đã bắt đầu. Tôi muốn đề nghị cho phép người dùng tùy chỉnh CSS. Chỉ cần cung cấp một textarea (hoặc div có thể nội dung) để người dùng dán CSS của họ
Coisox

4

Tôi vừa tải xuống và chơi xung quanh với một mục phần mềm miễn phí nhẹ dành cho Windows có tên ELORater dường như cung cấp những gì bạn đang theo đuổi. Bạn có thể tạo một "nhóm" cho câu lạc bộ của mình và sau đó thêm người chơi vào nhóm, cùng với bất kỳ xếp hạng ban đầu nào bạn muốn họ có. Sau đó, bạn chỉ có thể nhập kết quả của bất kỳ trò chơi nào được chơi và chương trình sẽ duy trì một danh sách cập nhật xếp hạng người chơi cho bạn.


nó vẫn còn trực tuyến?
Aubrey

2

Nếu bất cứ ai vẫn đang tìm kiếm một cái gì đó như thế này, tôi đã xây dựng một cái khá đơn giản ở đây: https://github.com/richardadalton/EloRate

Hiện tại bạn sẽ phải tự lưu trữ nó, nhưng tôi có thể cung cấp dịch vụ lưu trữ trong tương lai.

-Rd



0

http:// Bachelorankings.com

Cho phép bạn tạo thứ hạng elo tùy chỉnh và kiểm soát các thông số nhất định. Chủ yếu được sử dụng bởi các cộng đồng trò chơi video nhưng có thể được thực hiện để tạo thứ hạng và quản lý xếp hạng elo cho bất cứ điều gì. Rất dễ sử dụng. Giữ lịch sử trận đấu hoàn chỉnh và cho phép bạn xem từng lịch sử người chơi, WL và cách điểm số của họ thay đổi trong mỗi trận đấu. Tôi sử dụng nó cho một giải đấu smash tôi tổ chức hàng tuần: http : // Bachelorankings.com/rankings.aspx?id=1


Trang web dường như ngừng hoạt động hoặc không còn tồn tại nữa
andrewb

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.