दो से अधिक खिलाड़ियों के साथ एलो का उपयोग करके खिलाड़ी रैंकिंग


16

मैं एक निश्चित खेल के मैचों के बीच खिलाड़ी रैंकिंग को ट्रैक करने के लिए एलो का उपयोग करना चाहूंगा, हालांकि खेल एक मैच में अधिकतम चार खिलाड़ियों के साथ खेला जा सकता है। मैंने कारकैसन जैसे खेलों को दो से अधिक खिलाड़ियों के साथ एलो का उपयोग करते हुए देखा है, लेकिन मैं 1-1 खिलाड़ी से आगे एलो से परिचित नहीं हूं।

से विकिपीडिया लेख दो खिलाड़ियों वाले समीकरणों मैं विस्तार करना चाहते हैं कर रहे हैं:

E a = 1 / (1 + 10 (R b - R a ) / 400 )

E b = 1 / (1 + 10 (R a - R b ) / 400 )

R x new = R x पुराना + 32 * (W - E x ), जहां W = 1 यदि X जीतता है और W = 0 यदि X खोता है।

E x और W परिवर्तन की गणना दो से अधिक खिलाड़ियों को कैसे दी जाएगी?


मैं दो से अधिक खिलाड़ियों के साथ खेल के लिए एलो-शैली प्रणाली का उपयोग करने के बारे में सतर्क रहूंगा, क्योंकि कई कारक उन्हें कौशल के शुद्ध गेम से कम बनाने का अनुमान लगा सकते हैं - यदि आप सबसे मजबूत खिलाड़ियों के साथ खेल रहे हैं, आदि। यदि आप मैचों से स्कोर मिलाते हैं। खिलाड़ियों की विभिन्न संख्याओं के साथ मैं अधिक खिलाड़ियों के साथ खेल के लिए वेटिंग छोड़ने का सुझाव दूंगा (आर के अपडेट फॉर्मूले में '32')।
स्टीवन स्टैडनिक

सिफारिश के लिए @StevenStadnicki धन्यवाद। हालांकि मैं स्पष्ट नहीं हूं कि आपके द्वारा बताए गए मुद्दों को लगातार वज़न कम करने से कैसे पता चलेगा। क्या आप विस्तार से समझा सकते हैं?
fbrereto

मल्टीप्लेयर मैचों के लिए वजन कम करके आप स्वाभाविक रूप से कह रहे हैं कि वे खिलाड़ी की रेटिंग के लिए उतना महत्वपूर्ण नहीं हैं जितना कि दो-प्लेयर मैच हैं; अनिवार्य रूप से, आप कह रहे हैं कि वे वास्तव में कितने अच्छे खिलाड़ी हैं, इसका कम प्रतिनिधि है। मैजिक अपने टूर्नामेंट संरचना के साथ कुछ ऐसा ही करता है, जहां टूर्नामेंट के विभिन्न स्तरों में एक खिलाड़ी की रेटिंग निर्धारित करने में उन्हें कितना वजन दिया जाना चाहिए, यह दर्शाने के लिए विभिन्न K-मान हैं
स्टीवन स्टडनिक

जवाबों:


10

जैसा कि मेरी Google खोज में शीर्ष लिंक द्वारा सुझाया गया है , आप एक खिलाड़ी एलो रेटिंग (आपके आर मान) में व्यक्तिगत बदलावों की गणना कर सकते हैं, और फिर उन्हें प्रत्येक खिलाड़ी की रेटिंग पर लागू करने के लिए कुल परिवर्तन प्रदान करने के लिए योग कर सकते हैं।

यदि आपके पास 4 खिलाड़ी (ए, बी, सी, डी) हैं, तो बी, सी और डी के खिलाफ उनके स्कोर से ए की रेटिंग (आर-उप-ए-उप-नया) में परिवर्तन की गणना करें, और फिर ए की रेटिंग को समायोजित करें गणना की गई आर-मानों की कुल।


मैं इस मार्ग पर चला गया और यह अब तक अच्छा काम कर रहा है, धन्यवाद।
fbrereto

3
इस विचार के लिए सूत्र यहां दिए गए हैं: sradack.blogspot.ru/2008/06/…
dbf

1

मुझे fnord के उत्तर के समान विधि के PHP स्रोत कोड वाला एक पेपर मिला: http://elo-norsak.rhcloud.com/3.php मैंने यहां एक अधिक सामान्य उद्देश्य php कार्यान्वयन बनाया: https://github.com/ FigBug / मल्टीप्लेयर-ईएलओ मैं इसे अपने बोर्ड गेम समूह के साथ उपयोग कर रहा हूं, और अब तक यह अच्छी तरह से काम कर रहा है।

Ex और W की गणना एक समान रहेगी। 32 K का उपयोग करने के बजाय, K / 32 (#players - 1) का उपयोग करें। फिर, 2 खिलाड़ियों के प्रत्येक क्रमपरिवर्तन को देखें और गणना करें (32 / (#players - 1) * (W - Ex))। फिर RxNew आपके द्वारा गणना किए गए सभी मानों के RxOld + Sum के बराबर है।


2
आमतौर पर बाहरी लिंक पर पूरी तरह से भरोसा करने के बजाय, उत्तर के निकाय में अपनी विधि / अनुशंसा का सारांश शामिल करना अच्छा अभ्यास है। लिंक की समय के साथ टूटने की आदत होती है, जो आपके उत्तर को महत्वपूर्ण विवरणों को गायब कर सकता है जब कोई इसे अभी से वर्षों तक देखने की कोशिश करता है।
DMGregory

आपके व्यावहारिक कोड के लिए धन्यवाद, यह मददगार है! आपके अहसास के लिए बस एक सुझाव - यह बेहतर हो सकता है कि इंटरमीडिएट के परिणामों को राउंड न करें eloChange += round($K * ($S - $EA));लेकिन सेटिंग करते समय सभी गणनाओं के बाद ही राउंडिंग करेंeloPost
फ्लेमस्टॉर्म

-1

मैंने हाल ही में इस विषय पर यह पोस्ट लिखी है । मुझे उम्मीद है यह मदद करेगा। मैं जल्द ही एक अन्य पोस्ट में कोड भी जोड़ूंगा।

यहां यह बताया गया है कि यह क्या है:

एक निर्णय आपको करना है कि क्या आपके पास एक प्रकार का उप-मैच है या नहीं। उदाहरण के लिए: फ़ॉस्बॉल में, आप देखेंगे कि 2v2 गेम में हमेशा दो खिलाड़ी एक-दूसरे का सामना करते हैं और दो अप्रत्यक्ष रूप से। इसका मतलब है: दो रक्षकों वास्तव में बातचीत नहीं करते हैं, यह केवल हमलावर-रक्षक जोड़े हैं। विकल्प डोटा जैसा एक परिदृश्य है जो 5v5 है और वास्तविक मैच के हिस्से के रूप में कोई वास्तविक व्यक्ति, अनुमानित 1v1 मैचअप नहीं हैं।

केस एक: कोई उप-मैच संरचना:

इस स्थिति में, आप इसमें शामिल सभी खिलाड़ियों की रेटिंग को औसत कर सकते हैं और उस टीम के लिए टीम-रेटिंग के रूप में उपयोग कर सकते हैं। तो R_a और R_b के लिए, आप बस उस टीम के सभी खिलाड़ियों की रेटिंग का योग करेंगे, जो खिलाड़ियों की संख्या से विभाजित होगी। एक बार जब आप टीम के लिए अपडेट की गणना कर लेते हैं, तो आप अपडेट के साथ टीम के प्रत्येक सदस्य की रेटिंग अपडेट करते हैं।

केस दो: उप-मैच:

इस मामले में, आप उप-मैचों में विभाजित होते हैं और उन्हें एक-दूसरे के खिलाफ वजन करते हैं। इसलिए आप हर जोड़ी के लिए E_a और E_b की गणना करें और फिर इनका वजन करें। उदाहरण के लिए: 5v5 के लिए 1v1 उप-संरचना के साथ आप 5 जोड़े के लिए 5 E_a मानों की गणना करते हैं। फिर आप उप-मैच के आधार पर प्रत्येक व्यक्तिगत खिलाड़ी के लिए एक भारित शब्द की गणना करते हैं। तो अगर खिलाड़ी 1 सबमिशन 1 का हिस्सा है, तो आप 0.6 * E_a1 + 0.1 * E_a2 + 0.1 * E_a3 + 0.1 * E_a4 + 0.1 * E_a5 (जहां E_a1 E_a है जिसमें खिलाड़ी शामिल है) की गणना करते हैं।

यहां मापदंडों को स्वतंत्र रूप से चुना जा सकता है, लेकिन कुछ डेटा होने पर आप उन्हें अनुकूलित कर सकते हैं। एक वेटिंग स्कीम खोजने की कोशिश करें जिसके लिए खिलाड़ी रेटिंग में अधिक उतार-चढ़ाव न हो। यह स्वचालित रूप से मूल्यों के लिए विचरण की गणना करके किया जा सकता है और फिर भार को मापते हुए दिए गए मैच परिणामों के सेट के लिए कम से कम किया जा सकता है। मुझे आशा है कि यह मददगार है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.