किंग ऑफ द हिल बॉट्स के लिए टिप्स


12

हिल चैलेंज के राजा में भाग लेने के लिए बॉट बनाने के लिए आपके पास क्या सामान्य सुझाव हैं? अपनी बॉट बनाने की चुनौती पर विचार करने के लिए आप किन रणनीतियों का उपयोग करते हैं? आपको कौन सी डेटा संरचनाएं सबसे उपयोगी लगती हैं?

कृपया प्रति उत्तर एक टिप पोस्ट करें।


16
मुझे लगता है कि यह विशिष्ट समस्या पर बहुत अधिक निर्भर करता है।
निधि मोनिका का मुकदमा

@QPaysTaxes मैंने इसे अन्य युक्तियों के कई प्रश्नों के बाद सीधे मॉडल किया है। क्या इस प्रश्न को ठीक करने का एक तरीका बेहतर है? इसके अलावा, क्या उन पुराने युक्तियों के प्रश्नों को भी ठीक करने की आवश्यकता है?
mbomb007

पुराने युक्तियों के प्रश्न भाषाओं पर आधारित हैं जहाँ तक मैं बता सकता हूँ, जिसका अर्थ है कि युक्तियाँ सार्वभौमिक हैं लेकिन आप उनका उपयोग नहीं कर सकते हैं। यह सवाल "कोड गोल्फ चुनौतियों के लिए टिप्स" के अनुरूप है - जहां यह पूरी तरह से चुनौती पर निर्भर करता है। हालांकि, जैसा कि नीचे दिए गए जवाब साबित करते हैं, कुछ सार्वभौमिक चीजें हैं। मैं विवादित हूं।
निधि मोनिका का मुकदमा

2
मुझे लगता है कि यह विशिष्ट प्रश्नों पर निर्भर करता है, जैसे कि "लैंग इन (गोल्फ) के लिए टिप्स", क्योंकि आप अलग-अलग चुनौतियों में विभिन्न भाषाओं की बहुत सारी सुविधाओं का उपयोग करते हैं
विनाशकारी नींबू

जवाबों:


4

नैश इक्विलिब्रिया का पता लगाना

यह एक बहुत महत्वपूर्ण अवधारणा है जब KOTH में निर्णयों का अपेक्षाकृत सरल सेट शामिल होता है, जिसमें केवल कुछ खिलाड़ी (आमतौर पर 2) शामिल होते हैं, और निर्धारक होते हैं। नैश संतुलन एक "ग्रिडलॉक" स्थिति का वर्णन करता है: यदि दो खिलाड़ियों ने अपनी दो रणनीतियों पर फैसला किया है, तो दोनों खिलाड़ी उन पदों पर प्रभावी रूप से बंद हैं: या तो खिलाड़ी अपनी रणनीति बदलने से बस अतिरिक्त कमजोरियां पैदा करते हैं।

खेल जहाँ नैश संतुलन महत्वपूर्ण हैं के उदाहरण हैं:

  • रॉक-पेपर-कैंची (-Lizard-Spock), जिसमें "अपराजेय" रणनीति यादृच्छिक खेल है
  • मोर्रा , जिसमें संतुलन का एक "स्पेक्ट्रम" है। पीटर टेलर ने यहां अपने जवाब में एक अच्छा उदाहरण लिखा ।
  • कैदी की दुविधा, एक सहकारी खेल जो "हर कोई हारता है" ग्रिडलॉक के लिए उल्लेखनीय है

संतुलन कैसे पाएं

वास्तव में एक संतुलन खोजना वास्तव में सबसे सरल खेलों के लिए बहुत सरल है, और अक्सर बहुत सहज है। विभिन्न तरीकों के बारे में एक टन विवरण इंटरनेट पर पाया जा सकता है। मूल अवधारणा, जो सामान्य रूप से लागू होती है, संभव रणनीतियों की एक सूची तैयार करना है जो दो खिलाड़ी उपयोग कर सकते हैं (खेल द्वारा प्रदान किए गए विकल्प)। यदि एक रणनीति दूसरे पर "हावी" है, तो उस रणनीति को सूची से हटाया जा सकता है, और प्रक्रिया को दोहराया जाता है। "वर्चस्व," से मेरा मतलब है कि यदि रणनीति ए हमेशा रणनीति बी के मुकाबले एक समान या बेहतर परिणाम देती है, तो शेष सभी विरोधी रणनीतियों के मुकाबले, तो रणनीति बी को सूची से हटाया जा सकता है।

उदाहरण: रॉक-पेपर-कैंची

आरपीएस में कुछ "मिश्रित" संतुलन कहा जाता है, जिसका अर्थ है कि एक वितरण शामिल है। एक ही चाल को बार-बार खेलने के बजाय (जो जल्दी हार का कारण बनेगा), संतुलन एक यादृच्छिक वितरण में 1/3 रॉक, 1/3 पेपर और 1/3 कैंची खेलने के लिए है। अगर मैं बेतरतीब ढंग से खेलता हूं, तो कुछ भी नहीं है जो मेरा प्रतिद्वंद्वी मुझ पर बढ़त पाने के लिए कर सकता है। यदि मेरा प्रतिद्वंद्वी बेतरतीब ढंग से नहीं खेलना चुनता है, तो यह केवल उसके हिस्से में भेद्यता पैदा करता है।

मिश्रित संतुलन वाले खेल संभवतः पीपीसीजी पर सबसे आम हैं, क्योंकि वे कई रूप ले सकते हैं ( एकमात्र दिलचस्प खेल मैं एक शुद्ध संतुलन के साथ सोच सकता हूं कैदी की दुविधा है)। मुझे ध्यान देना चाहिए कि मिश्रित संतुलन को समान रूप से यादृच्छिक नहीं होना चाहिए , बस हर बार एक ही चाल खेलने के अलावा कुछ और।

इस जानकारी का उपयोग करना

एक खेल का नैश संतुलन अक्सर "बेसलाइन" का प्रतिनिधित्व करता है जिससे आपको संचालित करने का प्रयास करना चाहिए। RPS में, बेतरतीब ढंग से पैक के बीच में फिनिशिंग स्पॉट की गारंटी देता है। शीर्ष पर जाने के लिए, आपको अन्य खिलाड़ी की कमजोरियों को पहचानना शुरू करना होगा।

ऐसा करने के लिए, आपको प्रतिद्वंद्वी की कमजोरियों के अनिश्चित होने पर संतुलन से चिपके रहना चाहिए। एक बार उन कमजोरियों की पहचान कर ली गई है (आपने पाया है कि आपका प्रतिद्वंद्वी संतुलन में नहीं है), तो आपको अपने प्रतिद्वंद्वी का लाभ उठाने के लिए धीरे-धीरे संतुलन से बाहर निकलने की आवश्यकता है। यह क्रिया, बदले में, आपके स्वयं के हिस्से में कमजोरी पैदा करती है। आपको तब पता लगाना चाहिए जब आपका प्रतिद्वंद्वी अपनी रणनीति बदल रहा है, ताकि आप फिर हमले को रोक सकें और यादृच्छिक खेल को फिर से शुरू कर सकें।

संतुलन से भिन्नता का पता लगाना

यह बहुत मुश्किल है, और मैं विशेषज्ञ नहीं हूं। विविधताएं कई रूपों में आ सकती हैं:

  • बिना किसी कारण के दूसरों के ऊपर / नीचे कुछ विकल्पों को पसंद करना, जैसे कि आरपीएस खिलाड़ी जो दो बार अक्सर कैंची की तरह रॉक खेलता है, या वह जो कागज से बचता है। कुछ अपेक्षाकृत सरल आँकड़े इसका पता लगा सकते हैं।
  • कुछ पूर्वानुमेय पैटर्न में, अतीत की चाल से एक वर्तमान चाल को आधार बनाना। इसमें कॉपी-कैट शामिल हैं, "बीट्स जो आपकी आखिरी चाल" बॉट्स, या "साइकलिंग" बॉट्स धड़कता है। यह पता लगाने के लिए अतिरिक्त तर्क लेता है, क्योंकि समग्र चाल वितरण समान रूप से वितरित किया जा सकता है, भले ही चालें यादृच्छिक न हों। आपको चालों का रिकॉर्ड लेने का प्रयास करना चाहिए और "मेरे द्वारा किए गए कदम को 2 साल पहले किया गया कदम और मेरे प्रतिद्वंद्वी ने अब बनाया" और "वह जिस चाल को 1 साल पहले बनाया है, और वह अब जो बनाया है,", आदि को खोजने का प्रयास करना चाहिए ।
  • बॉट्स जिनकी चाल वितरण आप पर आधारित है। इन बोट्स में कमजोरी का फायदा अक्सर (एक औसत दर्जे का मात्रा में) बनाया नहीं है जब तक के बाद आप अपने आप को एक यादृच्छिक वितरण से अलग किया। आम तौर पर, आपका अपना बॉट इस श्रेणी में आता है।

3

अपने बॉट को चलाने के लिए आवश्यकताओं के बारे में विशिष्ट रहें

बॉट्स को विभिन्न भाषाओं (और उन भाषाओं के संस्करण) में लिखा जा सकता है, इसलिए यह हर किसी की मदद करता है जब आप:

  1. वातावरण में यह परीक्षण करें कि ओपी निर्दिष्ट करता है (या जितना संभव हो उतना करीब हो)।
  2. यदि संभव हो तो अन्य वातावरणों में इसका परीक्षण करें (दूसरों को जो इसे चलाना चाहते हैं) की मदद करें।
  3. आपके द्वारा उपयोग की जाने वाली भाषा और संस्करण के बारे में विशिष्ट रहें और अपने बॉट को चलाने का तरीका बताएं।

एक बोनस के रूप में: यदि आप कम ज्ञात भाषा का उपयोग कर रहे हैं, तो एक लिंक बनाएं जहां लोग इसे चलाने के लिए बाइनरी / स्रोत डाउनलोड कर सकते हैं।


2

यदि टीम आधारित है, तो अपनी टीम के साथ मिलकर काम करें

जब आप आमतौर पर एक बॉट लिख सकते हैं जो आपकी टीम की मदद करने के लिए कार्यों को पूरा करने के लिए एकल काम करता है, तो खेल में और बाहर दोनों में समन्वय करने पर बहुत अधिक लाभ होता है। इसका एक प्रमुख उदाहरण रेड बनाम ब्लू - पिक्सेल टीम बैटलबोट्स में देखा जा सकता है ।

विकास के दौरान, टीमें बातचीत करने और चर्चा करने में सक्षम थीं कि अकेले से बेहतर कार्य करने के लिए अपने बॉट का समन्वय कैसे करें। जबकि तकनीकी रूप से एक ही बॉट, SphiNotPi3000 को खुद के साथ मिलकर काम करने के लिए लिखा गया था, और उन तरीकों से आगे बढ़ने में सक्षम था जो कमजोरियों का सामना करते थे अगर यह अपने दम पर होता। अंतिम परिणाम यह था कि वे पूरी तरह से युद्ध के मैदान पर पूरी तरह से हावी थे, तब भी जब यह पूरी तरह से दूसरी टीम के खिलाफ था

तो खेल के बाहर, अपने साथियों के साथ योजना बनाएं और समन्वय करें कि किन रणनीतियों को कवर करना है। हो सकता है कि किसी के पास एक बॉट है जो मैप को तिरछे स्कैन करता है? क्या आपका स्कैन क्षैतिज रूप से (केवल एक उदाहरण) है। खेल के अंदर, यदि चुनौती टीम संचार की अनुमति देती है, तो इसका लाभ उठाएं। उदाहरण के लिए युद्ध के मैदान के खेल में, आप अपने साथियों को अपनी दृष्टि के क्षेत्र के बाहर बॉट्स की स्थिति पर एक संदेश भेज सकते हैं, और फिर उन्हें उन संकेतों का उपयोग करने के लिए अपने बॉट को एक सुसंगत तरीके से लिखने के लिए प्रोत्साहित कर सकते हैं।


2

मेटा रणनीति का उपयोग करें

लगभग हर चतुर रणनीति के लिए एक और रणनीति है जो इसे धड़कती है: उदाहरण के लिए, आपका प्रतिद्वंद्वी ठीक उसी तरह का उपयोग कर सकता है जैसा कि आप अपनी अगली चाल का अनुमान लगाने के लिए करते हैं और फिर उसका प्रतिकार करते हैं। अब आप अपने प्रतिद्वंद्वी को दोबारा अनुमान लगाने की कोशिश कर सकते हैं, लेकिन यह जानना मुश्किल है कि कब रुकना है

एक और समस्या यह है कि एक चतुर प्रतिद्वंद्वी का अनुमान लगाने में अच्छी रणनीति दूसरे से अधिक सरल विरोधियों के खिलाफ इष्टतम से दूर हो सकती है।

आप इसे कैसे हल कर सकते हैं? आप अपने बॉट को मक्खी पर तय करने दें कि किस रणनीति का उपयोग करना है!

इसके लिए, आप अपने बॉट को विभिन्न रणनीतियों के प्रदर्शनों की सूची देने के साथ शुरू करते हैं। फिर, प्रत्येक चाल से पहले, आपका बॉट खेल के अब तक के रिकॉर्ड किए गए इतिहास को देखता है और मूल्यांकन करता है कि इन विभिन्न रणनीतियों ने किस तरह से प्रदर्शन किया होगा। यह तब सबसे अधिक सफल होता है कि pics।

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

आप कुछ रणनीतियों पर एक पूर्वाग्रह लगाने पर विचार कर सकते हैं, या तो ओवरफिटिंग से बचने के लिए (उदाहरण के लिए एक पैटर्न को हराने की कोशिश कर रहा है जहां प्रतिद्वंद्वी बस अनियमित रूप से कार्य करता है) या शुरुआत में कुछ रणनीतियों का पक्ष लेने के लिए जब अभी तक बहुत अधिक जानकारी नहीं है।

बेशक, यह दृष्टिकोण केवल कुछ प्रकार के राजाओं की पहाड़ी चुनौतियों के लिए काम करेगा। यह मेरे लिए रॉक-पेपर-कैंची-छिपकली-स्पॉक मैच में वास्तव में अच्छा था । अन्य खेलों में यह मूल्यांकन करना लगभग असंभव हो सकता है कि अगर वास्तव में खेला नहीं गया था, तो एक निश्चित रणनीति कैसे तैयार होगी।

इस मेटा दृष्टिकोण का एक चरम रूप (धोखा देने पर सीमाएं) अन्य सभी बॉट के ज्ञात व्यवहार को अपने बॉट में शामिल करना होगा, जैसे कि यह पूरी तरह से उनकी चाल का अनुमान लगा सकता है।


अपनी खुद की बॉट में अन्य सभी बॉट के नाम से जाना जाता व्यवहार सहित धोखाधड़ी पर सिर्फ सीमा नहीं है, यह है धोखा दे। मुझे पूरा यकीन है कि यह एक अव्यवस्थित खामोशी है।
mbomb007
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.