Thuật toán ghép nối cho hệ thống xếp hạng Elo


7

Hãy tưởng tượng cuộc thi 1 trên 1 (không phải đội) giữa các bot AI, như Thử thách AI của Google . Các bot khác nhau được chỉ định xếp hạng ELO dựa trên kết quả của các trận đấu khác nhau. Lý do tôi chỉ định các bot AI vì chúng có thể cạnh tranh 24/7 mà không liên quan đến sự mệt mỏi của người chơi, định vị địa lý, v.v.

Với tài nguyên máy chủ hạn chế chỉ có rất nhiều cơn có thể được chạy mỗi ngày. Tôi đang tìm kiếm một heuristic (hoặc một thuật toán tối ưu) để chọn hai bot sẽ cạnh tranh tiếp theo.

Tất cả các cuộc thi trong quá khứ đã được theo dõi. Điều này có nghĩa là thuật toán này có nhiều thứ để làm việc hơn là chỉ xếp hạng ELO.

Các trường hợp sử dụng tôi quan tâm một phần:

  • Cuộc thi đã được ghép đôi ngẫu nhiên trong một thời gian và bây giờ tôi muốn đưa ra quyết định ghép đôi thông minh.
  • Xếp hạng Elo đã ổn định và bot được cập nhật.
  • Xếp hạng Elo đã ổn định và bot mới được giới thiệu cho cuộc thi.

Cập nhật:
Tôi cần làm rõ. Tôi không tìm kiếm một thuật toán sẽ cung cấp các trận đấu công bằng. Tôi đang tìm kiếm một thuật toán sẽ tìm thấy các trận đấu có khả năng cập nhật xếp hạng Elo của các bot thành xếp hạng "thật" của chúng với số lượng trận đấu ít nhất.


Theo như tôi biết, không có thứ gọi là "đúng" (đừng hiểu ý tôi). Elo và các xếp hạng thích ứng khác được phát triển nên các vệt tốt hoặc xấu tạm thời sẽ ít ảnh hưởng đến xếp hạng người chơi, do đó, chúng được cho là những người chơi thay đổi theo thời gian. Nói cách khác, xếp hạng Elo không có nghĩa là tĩnh, do đó không có xếp hạng "đúng". Tôi không thực sự chắc chắn nếu xếp hạng Elo là những gì bạn đang tìm kiếm, cho các trận chiến bot. Cách tốt nhất để có được giá trị xếp hạng tốt là có càng nhiều trận đấu càng tốt, tối ưu giữa các đối thủ có sức mạnh tương tự.

Câu trả lời:


3

Với một hệ thống Elo bình thường, một thứ như vậy có lẽ không tồn tại. Nó thay đổi điểm số dựa trên sự khác biệt giữa điểm số dự kiến ​​và điểm thực tế, vì vậy bạn có thể thấy rằng nếu bạn kết hợp những người có kỹ năng tương đương, họ có khả năng rút ra (hoặc có 50% cơ hội chiến thắng) để điểm số sẽ không thay đổi và nếu bạn kết hợp các mặt đối lập hoàn toàn, cựu chiến binh sẽ hầu như luôn đánh bại người mới (như mong đợi) để điểm số sẽ không thay đổi ở đó.

Điều duy nhất có khả năng làm cho một điểm Elo kém chính xác hơn một điểm khác là chơi ít trận hơn. Điều này có nghĩa là bạn sẽ muốn họ chơi nhiều hơn. Bạn chưa có bất kỳ thông tin nào về cấp độ kỹ năng thực tế của họ, vì vậy điều quan trọng là khiến họ bước vào cơn và bắt đầu thiết lập cấp độ đó.

Vì vậy, trong các điều kiện này, tôi chỉ chọn đảm bảo rằng các bot chơi càng nhiều bot khác nhau càng tốt, chọn bất kỳ bot nào mà chúng chưa từng cạnh tranh trước đó và ưu tiên lựa chọn các bot chưa chơi nhiều. Các bot mới tham gia hệ thống nên được ưa chuộng để nhanh chóng thiết lập các mức gần đúng của chúng.


Câu trả lời chính xác. Tôi đã hy vọng cho một số toán học về giới hạn niềm tin, nhưng câu trả lời thông thường của bạn là không thể bác bỏ.
deft_code

0

Tôi biết bạn đã đánh dấu một câu trả lời, nhưng thành thật mà nói, nó đơn giản hóa quá mức và không thực sự giải quyết bất kỳ vấn đề cốt lõi nào của hệ thống ELO cho dù bạn đang làm việc với bot hay người chơi thực sự. Ví dụ, các cân nhắc cốt lõi khi tạo ra một hệ thống ELO công bằng / chính xác sẽ là: số lượng người chơi, số trận đấu, tác động tương đối của kỹ năng (ví dụ: cơ hội) đến kết quả, hiệu quả mai mối và mức độ chênh lệch trong mỗi trận thắng /thua.

Trong một thế giới lý tưởng, bạn có thể kết hợp những người có kỹ năng tương đương, và trong một trò chơi kỹ năng, họ sẽ đạt được tỷ lệ thắng 50%. Tuy nhiên, điều đó giả định rằng bạn biết kỹ năng của mọi người và tác động của cơ hội là tương đối nhỏ. Vì bạn không biết cái trước (và bạn không chỉ định cái sau), có một số điều bạn cần làm để xác định chính xác kỹ năng một cách hiệu quả và nó không đơn giản như việc chơi bot như nhiều bot khác nhau càng tốt:

1) Bạn cần thiết lập đường cơ sở kỹ năng cho người chơi "mới" theo thang điểm để họ có thể di chuyển lên hoặc xuống và đường cơ sở biểu thị mức trung bình dự kiến ​​trên đường cong chuông bình thường. IE: 1250 trên thang điểm từ 1-2500.

2) Người chơi mới cần chơi một số trò chơi "vị trí" nhất định để thiết lập xếp hạng ban đầu, thường được thực hiện trong 10-20 trò chơi được đánh giá nặng hơn các trò chơi tiếp theo. IE: tăng / giảm xếp hạng là gấp đôi trong các vị trí, sau này sẽ khuyến khích việc tách người chơi nhanh chóng.

3) Bạn cần tính đến các yếu tố khác trong quá trình mai mối của mình, chẳng hạn như tỷ lệ thắng so với tổng số trận đấu để người chơi ở cuối cực của đường cong kỹ năng được di chuyển với tốc độ nhanh hơn đến kỹ năng "thật" của họ bằng cách đối mặt với những người ở trên hoặc dưới đánh giá hiện tại của họ. IE: người chơi có tỷ lệ thắng 80% so với cỡ mẫu khá sẽ phải đối mặt với những người vượt xa xếp hạng của họ và leo lên thang nhanh hơn so với người có tỷ lệ thắng 55% gần với kỹ năng thực sự của họ.

4) Bạn cần có một sự hiểu biết tốt về cách cơ hội tác động đến kết quả và bạn cần tính đến tốc độ mai mối (thời gian xếp hàng) khi xác định ai phù hợp để giữ cho phương sai kỹ năng hợp lý. Sử dụng thang đo trước đó, bạn không nên có một người chơi 1250 đối mặt với một người chơi 2000 trong mọi trường hợp (trừ khi cả hai không được đánh giá). Đây không phải là một trận đấu công bằng và nó không cho phép bạn thêm / xóa điểm chính xác khỏi ELO của họ.

Cách tôi thiết lập hệ thống sẽ là tạo hai bộ điều chỉnh thành giá trị tăng / giảm điểm cơ bản, một sử dụng kết quả mong đợi dựa trên phương sai xếp hạng và một dựa trên tỷ lệ thắng cho tổng giá trị khớp. IE: ai đó có xếp hạng 1500 người có tỷ lệ thắng 70%, vượt qua 1600 người chơi được xếp hạng sẽ giành được nhiều điểm hơn khi có tỷ lệ thắng cao VÀ để đánh bại người chơi được xếp hạng cao hơn.

Sau đó, bạn chỉ cần đảm bảo rằng người chơi hoàn thành cỡ trò chơi mẫu hợp lý và bạn sẽ có hệ thống "hiệu quả nhất" dựa trên mức độ cơ hội tham gia vào "trò chơi" mà bạn đang triển khai hệ thống ELO. Một trò chơi có cơ hội tương đối thấp có thể mất vài chục trò chơi để chính xác, một trò chơi có cơ hội tương đối cao có thể mất hàng trăm ...

Tái bút: đối với hồ sơ, bạn không muốn mọi người chơi các cấp độ kỹ năng khác nhau vì nó chỉ làm giảm độ chính xác của hệ thống. Ngay cả khi bạn nghiêng nó để các trận đấu ở trên một phương sai nhất định có rất ít tác động thì nó vẫn tạo ra vấn đề bởi vì người chơi sẽ cảm thấy không được đáp ứng hoặc bị trừng phạt quá mức đối với các trận đấu có phương sai cao.

chỉnh sửa: Tôi quên giải quyết phần "đã được xếp hạng" trong câu hỏi của bạn, nhưng nó khá đơn giản. Bạn khớp mọi người dựa trên xếp hạng kỹ năng gần nhất có sẵn trong hàng đợi, bởi vì đó là trận đấu đồng đều nhất và mức tăng / giảm điểm (giả sử tỷ lệ thắng tương tự) sẽ là giá trị tĩnh. Nếu người chơi được đánh giá chính xác, họ sẽ duy trì tỷ lệ thắng 50% và không leo hay ngã. Nếu họ không thì người chơi có kỹ năng hơn sẽ thắng nhiều hơn thua và xếp hạng của họ sẽ cập nhật.

Giới thiệu một người chơi mới thậm chí còn đơn giản hơn, họ bắt đầu ở đường cơ sở và được đối đầu với những người chơi có kỹ năng đó (với mức tăng / giảm) cho đến khi vị trí của họ được hoàn thành. Vì vậy, giả sử mức tăng / giảm điểm bình thường cho mỗi trận đấu là 15 mà không cần bất kỳ công cụ sửa đổi nào, đây là ví dụ về vị trí và xếp hạng người chơi mới (với mức tăng / giảm gấp đôi):

  • Ban đầu: 0-0 (1250) - đối mặt với 1250 đối thủ
  • Thua: 0-1 (1220) - đối mặt với 1220 đối thủ
  • Thua: 0-2 (1190) - đối mặt với 1190 đối thủ
  • Thắng: 1-2 (1220) - đối mặt với 1220 đối thủ
  • Thắng: 2-2 (1250) - đối mặt với 1250 đối thủ
  • Thắng: 3-2 (1280) - đối mặt với 1280 đối thủ
  • Thắng: 4-2 (1310) - đối mặt với 1310 đối thủ
  • Thua: 4-3 (1280) - đối mặt với 1280 đối thủ
  • Thắng: 5-3 (1310) - đối mặt với 1310 đối thủ
  • Thắng: 6-3 (1340) - đối mặt với 1340 đối thủ
  • Thắng: 7-3 (1370)
  • đánh giá cuối cùng: 1370
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.