कंप्यूटर विरोधियों के लिए एक स्कोरिंग दृष्टिकोण जिसे संतुलन की आवश्यकता होती है


16

यह प्रश्न कंप्यूटर विरोधियों के एक दृष्टिकोण के बारे में है जो मैंने बनाया है और वर्तमान में उपयोग किया जा रहा है, या कई कंप्यूटर गेम में उपयोग किए जाने की योजना है।

पृष्ठभूमि

पिछले साल, जब "माइनस्वीपर फ्लैग्स" नामक एक गेम के लिए कंप्यूटर प्रतिद्वंद्वी को बेहतर बनाने की कोशिश की गई थी (संक्षिप्त विवरण: माइनस्वीपर का एक मोड़-आधारित मल्टीप्लेयर संस्करण जहां आपको अपने प्रतिद्वंद्वी से अधिक खानों को लेना होगा ) , मैंने अपने एल्गोरिदम के काम करने के तरीके को दृढ़ता से बदल दिया। । इफ़-इफ़-इफ़-जैसे-जैसे किसी दृष्टिकोण का उपयोग करने के बजाय, मैं यह निर्धारित करने के लिए "वज़न" के सेट का उपयोग कर रहा हूं कि यह निर्धारित करने के लिए कि सबसे अच्छा कदम क्या है।

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

  • इस कदम की संभावना एक खदान से क्या है?
  • यहां मेरे विरोधी को कुछ भी बताने की संभावना क्या है?

सिस्टम का विवरण

सिस्टम मूल रूप से इस तरह काम करता है:

  1. "प्री-स्कोरर": कुछ पूर्व-विश्लेषण वर्तमान गेम स्थिति के लिए किया जाता है (माइनस्वीपर फ्लैग्स के संदर्भ में, यह आमतौर पर है: सभी संभावनाओं की गणना)
  2. "स्कोरर": सामान्य स्कोरर का एक सेट प्रत्येक संभावित चाल के लिए स्कोर निर्धारित करने के लिए कहा जाता है, प्रत्येक स्कोरर अपने स्वयं के मानदंडों के अनुसार स्कोर लागू करता है। स्कोरर पूर्व विश्लेषण के परिणामों की जांच कर सकता है जो बनाया गया था।
  3. उपरोक्त चरण में गणना किए गए अंकों को एक साथ समेटा गया है और एक कदम के लिए स्कोर निर्धारित किया गया है।
  4. चालों को उनके स्कोर के अनुसार क्रमबद्ध किया जाता है और क्रमबद्ध किया जाता है ताकि समान स्कोर वाले सभी चालों को समान रैंक मिले।
  5. "पोस्ट-स्कोरर": उपरोक्त का परिणाम "पोस्ट-स्कोरर" को भेजा जा सकता है, जो किसी भी क्षेत्र के स्कोर को किसी भी तरह से संशोधित करने की संभावना रखते हैं, जो पोस्ट-स्कोरर के अपने नियमों के अनुसार हैं।

जब पूर्व-स्कोरर, स्कोरर (उनके वजन के साथ) और पोस्ट-स्कोरर का एक गुच्छा संयोजन करते हैं, तो यह वह बन जाता है जिसे मैं स्कोर कॉन्फ़िगरेशन कहता हूं ।

उदाहरण परिणाम

यह माइनस्वीपर फ्लैग पर लागू किए गए अंकों का एक उदाहरण है। यह वह मानचित्र है जो स्कोर किया गया था:

माइनस्वीपर फ्लैग का नक्शा जो बनाया गया था

और यह एक वास्तविक स्कोर कॉन्फ़िगरेशन का आउटपुट है। यह संभावित चालों की रैंक दिखा रहा है, जहां 1 सर्वश्रेष्ठ रैंक है और इसे सफेद में हाइलाइट किया गया है:

स्कोरिंग दृष्टिकोण का उदाहरण आउटपुट

अत्यधिक लचीला कोड लिखे जाने के लिए धन्यवाद, एआई के इस दृष्टिकोण को अन्य खेलों में भी डाला जा सकता है।

फायदे और नुकसान

नीचे इस प्रणाली के कुछ फायदे और नुकसान हैं जो मैं खुद सोच सकता हूं

लाभ

  • AI के लिए बहुत सारे अलग-अलग कॉन्फ़िगरेशन बनाना बहुत आसान है।
  • जेनेटिक एल्गोरिदम के साथ उपयोग करना संभव है: प्रत्येक स्कोरर के पास एक संबद्ध वजन होता है, वजन जीन बन सकता है।
  • कुछ उपकरणों का उपयोग करके, यह जांचना संभव है कि एक विशिष्ट चाल क्यों बनाई गई थी और उस चाल के लिए मुख्य रूप से कौन से स्कोरर जिम्मेदार थे
  • औजारों का उपयोग करते हुए, संभव चालों के समग्र स्कोर / रैंक का नक्शा बनाना संभव है (ऊपर स्क्रीनशॉट की तरह)
  • मानव के खेलने के तरीके के लिए स्कोर को लागू करने से, "#AI_Mirror" बनाना संभव है जो चालें बनाने की कोशिश करता है कि यह सोचता है कि मानव बनायेगा

नुकसान

  • एआई प्ले को यथासंभव बेहतर बनाने के लिए, "कॉन्फ़िगरेशन" को सही ढंग से समायोजित करना बेहद मुश्किल हो सकता है।

प्रशन

  • क्या मैंने यहाँ जो सिस्टम बनाया है वह व्यापक रूप से AI दुनिया में जाना जाता है? इसे वास्तविक एआई शब्दों में क्या कहा जाएगा?

  • क्या यह दृष्टिकोण समझ में आता है या क्या एक अलग दृष्टिकोण है जिसे आप सुझाएंगे?

  • ऐसे कौन से तरीके हैं जो स्कोर कॉन्फ़िगरेशन को आसान बनाने की प्रक्रिया को आसान बना सकते हैं?

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


यह प्रश्न मूल रूप से एक अब दोषपूर्ण आर्टिफिशियल इंटेलिजेंस साइट पर पोस्ट किया गया था ।
इस दृष्टिकोण के लिए उपयोग किए जाने वाले (जावा) कोड को अब कोड रिव्यू में पोस्ट किया गया है ।

जवाबों:


7

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

आपके द्वारा निर्दिष्ट एल्गोरिथ्म का प्रकार वास्तव में एक पैरामीटर समीकरण है, जिस तरह से आप बीमा गणना में पाएंगे। प्रत्येक चाल के बाद, इनपुट स्थान बदलता है, लेकिन एल्गोरिथ्म को पिछली स्थिति की कोई याद नहीं होती है, इसलिए यह प्रत्येक चाल को एक नए, अलग बोर्ड के रूप में मानता है।

जेनेटिक एल्गोरिदम का उपयोग करना

आनुवंशिक एल्गोरिदम के दो स्पष्ट विकल्प हैं:

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

तैयार किए हुयी धातु पे पानी चढाने की कला

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

इसे बहुत अच्छा बनाने पर

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


आपके उत्तर ने मुझे अध्ययन करने के लिए बहुत कुछ दिया है, बहुत बहुत धन्यवाद! हालाँकि मुझे इतना यकीन नहीं है कि मैं इस विशेष खेल को "
नियतवादी

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

खैर, माइनस्वीपर है मैं, कह सकते हैं कि आप जब तक आप इसे प्रकट करने के लिए एक कदम बना दिया है एक क्षेत्र की सामग्री को पता नहीं है के रूप में स्टोकेस्टिक।
साइमन फोर्सबर्ग

1
IMHO जो इसे स्टोचस्टिक नहीं बनाता है। यह स्टोचस्टिक होगा यदि: एक ही प्रारंभिक शर्तें (छिपी हुई बोर्ड) दी गई हो, तो हर बार वर्ग को क्लिक करने पर परिणाम अलग हो सकता है।
डॉ। रॉब लैंग

2
स्टोचस्टिक / नियतात्मक और पूरी तरह से अवलोकन / आंशिक रूप से अवलोकनीय कड़ाई से भिन्न, ऑर्थोगोनल गुण हैं। परिभाषा के अनुसार (कहते हैं, रसेल / नॉरविग "यदि पर्यावरण की अगली स्थिति वर्तमान स्थिति और एजेंट द्वारा निष्पादित कार्रवाई से पूरी तरह से निर्धारित होती है ...") माइनस्वीपर नियतात्मक है, हालांकि यह पूरी तरह से अवलोकनीय नहीं है।
पीटरिस

0

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

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

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