एक कार्ड खेल के एअर इंडिया के लिए सबसे अच्छी तकनीक


27

मैं एक कार्ड गेम के लिए एआई विकसित करने की कोशिश कर रहा हूं और मैं उस तकनीक / एल्गोरिथ्म के बारे में थोड़ा अटक गया हूं जिसका मुझे उपयोग करना चाहिए। यहाँ खेल के बारे में कुछ धारणाएँ हैं:

  • खिलाड़ियों को कार्ड वितरित किए जाने के बाद, कोई यादृच्छिकता नहीं है। मेरा यहाँ मतलब है कि हर खिलाड़ी चुन सकता है कि वह कौन सा कार्ड खेलता है लेकिन खेल की शुरुआत में कार्ड वितरित करते समय कोई यादृच्छिक प्रक्रिया नहीं होती है।
  • कार्ड के बारे में प्रतिबंध है जो तब खेला जा सकता है जब कोई कार्ड पहले से ही खेला गया हो।
  • जो खिलाड़ी चाल जीतता है, वह पहले खेलता है। Eg खिलाड़ी 1 एक कार्ड खेलता है, खिलाड़ी 2 एक कार्ड खेलता है और जीतता है। फिर प्लेयर 2 एक कार्ड खेलता है और फिर प्लेयर 1 प्ले करता है।

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

अगर मैं इस तरह के कार्ड गेम के लिए AI विकसित करने का एक अच्छा तरीका होगा तो मैं अनिश्चित हूं?

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


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

1
खेल का लक्ष्य क्या है? किसी जीत? क्या किसी खिलाड़ी के लिए किसी भी समय खेल जीतने की उसकी संभावनाओं का अनुमान लगाना संभव हो सकता है?
से आते हैं

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

1
क्या खेल हार्टस्टोन है? :)
लेसकाई इओनेल

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

जवाबों:


11

आपका उदाहरण ब्रिज के समान लगता है । शीर्ष ब्रिज-प्लेइंग सिस्टम चालों का चयन करने के लिए मोंटे कार्लो विधियों का उपयोग करते हैं । उच्च स्तर पर:

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

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


प्रति लॉरेंट जी की टिप्पणी संपादित करें:

अंत में, आप सभी खिलाड़ियों के लिए सही खेल के विचार को स्क्रैप करना चाहते हैं और कुछ अधिक यथार्थवादी विकल्प चुन सकते हैं। वैचारिक रूप से, किसी खिलाड़ी के हाथ में (कार्ड वितरण) होने की संभावना को एक खिलाड़ी के हाथ से दिए गए कानूनी कार्ड (कार्ड के चयन) के दौरान होने की संभावना से अलग करें।

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

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


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

आप निश्चित रूप से एआई को सीख सकते हैं। चाल एक कार्ड के लिए संभावनाओं को एक विशेष हाथ में होने की संभावना से अलग होगी, एक खिलाड़ी के दिए गए कानूनी कार्ड खेलने की संभावना से एक बार यह उनके हाथ में है। मैं ऊपर बताऊंगा।
कॉर्बिन मार्च

6

हाल के व्यक्तिगत अनुभव का मामला:

मैं खुद एक कार्ड गेम (बिस्का, एक 2-खिलाड़ी पुर्तगाली गेम) पर काम कर रहा हूं, और मुझे मोंटे कार्लो विधियों का उपयोग करके अच्छे परिणाम मिल रहे हैं, विशेष रूप से हाल की सूचना सेट मोंटे कार्लो ट्री सर्च एल्गोरिदम (आईएसएमसीटीएस) का उपयोग करके उदाहरण स्रोत कोड में पायथन में http://www.aifactory.co.uk/newsletter/2013_01_reduce_burden.htm )।

यह उचित रूप से अच्छी तरह से खेलता है, महासागरीय गलत चाल के साथ, बस खेल नियमों के ज्ञान के साथ। मैं वर्तमान में इसे टटोलने की कोशिश कर रहा हूं, इसे बढ़ाने में सक्षम होने के लिए, जैसा कि मैंने इसके बारे में पढ़ा है कि जानकारी के अनुसार (और इसके "माता-पिता" MCTS), यह संभव है अपने खेल को बढ़ाने के लिए heuristics ( http: // www .orangehelicopter.com / ed / पेपर्स / aiide13.pdf ) और प्रतिद्वंद्वी कार्ड इंट्रेंस


1
यह पोस्ट पढ़ना मुश्किल है (पाठ की दीवार)। आप आपत्ति तो नहीं है संपादित एक बेहतर आकार में यह ing?
१at

समस्या पर वास्तविक अनुभव वाले किसी व्यक्ति के उत्तर के लिए धन्यवाद। महान लिंक!
Luben

3

मुझे लगता है कि यह खेल के नियमों पर निर्भर करता है।

यहाँ मैं आपके प्रश्न से समझता हूँ:

  • खेल राउंड में खेला जाता है, जिसमें प्रत्येक खिलाड़ी प्रति राउंड एक कार्ड खेलता है
  • जो खिलाड़ी सबसे पहले जाता है, वह अपनी इच्छानुसार कोई भी कार्ड खेल सकता है
  • जो खिलाड़ी दूसरे स्थान पर जाता है, वह केवल कुछ कार्ड खेल सकता है, जो पहले खेला गया था पर निर्भर करता है
  • राउंड जीतने वाला खिलाड़ी पहले राउंड में जाता है
  • सभी कार्ड पहले दौर से पहले वितरित किए जाते हैं

मान्यताओं:

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

उदाहरण का खेल जो इन नियमों का पालन करता है:

पहले खिलाड़ी एक कार्ड खेलता है। दूसरे खिलाड़ी को उसी सुइट का कार्ड खेलना होगा या हारना होगा। यदि सूट मैच करता है, तो सबसे ज्यादा कार्ड जीतता है।

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

टीएल; डीआर
लिमिट कितना एआई जानता है इसलिए इसके निर्णय सही नहीं हैं, बस पर्याप्त है।


आपके उत्तर के लिए धन्यवाद। लेकिन जैसा कि प्रश्न में कहा गया है, कार्ड वितरित होने के बाद कोई भाग्य / कोई यादृच्छिकता नहीं है। और एक खिलाड़ी अन्य खिलाड़ियों के कार्ड को नहीं जानता है। उसे पहले से खेले गए कार्ड और कुछ "नियमों" का उपयोग करके धारणाएँ बनानी चाहिए।
लॉरेंटगेज

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