題:
您如何計算elo?
Aric
2016-08-11 13:10:34 UTC
view on stackexchange narkive permalink

我正在學校裡創辦一個國際象棋俱樂部,我想創建一個Python程序來計算和存儲每個玩家的Elo等級。我有信心可以對其進行編程,但我只需要知道:

您如何計算Elo?

我正在尋找什麼:

  • 方程式用於計算每個玩家的預期結果。
  • 方程式用於使用此方法計算elo更改。
  • 如何處理平局。
  • 如何計算K的值,或提出對學生有用的靜態K的建議。

到目前為止,我發現的最好的解釋是英雄聯盟視頻中介紹的評分系統(恰好與國際象棋中使用的系統相同)。

您可以改用Bayeselo之類的東西。它可能不會像FIDE系統那樣,因為它沒有FIDE等級的錨點。因此使用Bayeselo會讓您的生活更輕鬆。
三 答案:
sharcashmo
2016-08-15 20:09:54 UTC
view on stackexchange narkive permalink

這裡有一些有關Elo系統的信息,可能對您有用。

Arpad Elo設計的系統假設玩家的成績達到正態分佈 200個額定點的標準偏差。因此,他使用了後勤功能來計算玩家的預期結果。實際函數(實際上使用的表與該函數的差異最小)

  WEa = 1 /(1 + 10 ^((Rb-Ra)/ 400)),四捨五入為WEa是玩家a的預期結果,而Rb和Ra是兩位玩家的評分。如您所見,在兩個得分相差400分的玩家之間的遊戲中,獲勝的機會為10:1。 

在比較了預期遊戲和玩家的實際成績之後,因此表現優於預期結果的玩家會提高評分,而表現較差的玩家則會降低評分。為此,將預期結果與實際結果之間的差乘以常數K。此常數必須足夠小以使系統穩定並避免僅反映最後的結果,但必須足夠大以能夠跟踪玩家的發展。我想一個很好的值應該在20到30之間,例如 Jeff Sonas建議以24為最佳值,而 FIDE手冊則指出70場比賽后評分穩定(K10) ,35個遊戲(K20)和18個遊戲(K40),也許這些數字可能對您設置自己的K值很有用。

使用更大的K值,前幾局遊戲可以幫助您的學生迅速達到近似額定值,然後可以更改為較小的K值。

那麼在計算每個球員的預期結果之後如何計算elo變化?在僵局的情況下會發生什麼?
例如,讓我們看兩個評分差為165分的玩家一起玩。預期結果為.72(A)和.28(B)。假設K20。結果:-玩家A獲勝,玩家獲得(1-.72)* 20 = 5.6分,而對手輸掉(0-.28)* 20 = -5.6分-玩家B獲勝,獲得(1- .28)* 20 = 14.4分,玩家B輸(0-.72)* 20 = -14.4分-平局,玩家A(.5-.72)* 20 = -4.4分,玩家B獲得+ 4.4分,所以它是一個減法(實際結果減去預期結果)和一個乘數。僵持是平局,我不建議您更改此值。
那就是我所缺少的部分。
Tanj
2016-08-11 14:00:58 UTC
view on stackexchange narkive permalink

有關FIDE等級的所有信息都可以在這裡找到:

https://www.fide.com/fide/handbook.html?id=172&view=article

每個玩家都必須以估算的FIDE elo等級開始。通常,人們在與FIDE玩家進行比賽時獲得等級。 (請參閱第8.2條)

在按照第8.5條進行的每場比賽之後,FIDE elo系統都會更新您的評分。

如果可能的話,我需要一個系統,其中每個玩家都以給定的Elo開始(例如2000)。在這種情況下,我會只使用第8.5條來計算每場比賽后的Elo變化嗎?
是的,應該可以。
我會嘗試的,但是我仍然願意接受新的建議
@AricFowler值得一提的是:在正常情況下,2000年的Elo等級非常高,因此,如果您希望學生的等級與他們的實際Elo等級相對應,那麼明智的選擇是從1300點開始-1400。
這是一個內部評估系統,無意與其他系統進行比較。
如果您只是在尋找內部評分系統來比較封閉玩家群體中的玩家,那麼實施自己的FIDE系統版本應該會很好。但是,如果您想了解公式為何如此使用,則應該閱讀Elo的書。這實際上很有趣。 https://www.amazon.com/Rating-Chess-Players-Past-Present/dp/0923891277
@patbarron看起來很有趣
user34258
2016-08-17 19:57:24 UTC
view on stackexchange narkive permalink

每個 https://en.wikipedia.org/wiki/Chess_rating_system

計算出錦標賽后玩家的新評分:

  Rn = Ro +(K / 2)(W-L +(等級差異之和/ 2C)) 

Rn是新等級,Ro是舊等級。 W和L是獲勝和失敗的次數。等級差異是對手的等級減去玩家的等級,而不是相反。

C將確定等級之間的間隔,即標準偏差。看來通常使用200。

K將決定每個遊戲產生多少效果。玩家到達IM後,FIDE將使用30和20。 http://www.fide.com/component/content/article/1-fide-news/3963-rating-regulations-the-k-factor

抽獎是0勝0負。

這是不正確的。請參閱我的答復以檢查實際公式,您使用的公式是線性近似值,但是您可以將其與使用的表進行比較。平局當然會帶來成敗,您可以在國際象棋比賽結果中查看任何比賽結果(例如,http://chess-results.com/tnr209009.aspx?lan = 9&art = 9&fed = ESP&turdet = YES&wi = 821&snr = 3)。最後,FIDE使用K20,但以下情況除外:-玩家達到2400等級後,使用K10-18歲以下的玩家使用K40-玩家在前30場比賽中使用K40。順便說一句,收視率規定在2014年發生了變化,這也許就是您輸入數據錯誤的原因。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...