RL: पिछली कार्रवाई पर वातानुकूलित कार्रवाई एन्कोडिंग
मेरे पास एक कार्ड गेम है जहां एक खिलाड़ी की बारी पर, खिलाड़ी क्रमिक रूप से दो कार्ड खींचता है। प्रत्येक कार्ड किसी अन्य खिलाड़ी के डिस स्टैक (फेस अप), या डेक (फेस डाउन) से लिया जा सकता है।
यह सोचकर कि इसे एक एक्शन स्पेस में कैसे एनकोड किया जाए, मैं सोच सकता था कि दोनों ड्रॉ स्वतंत्र हैं। एक्शन स्पेस बस 2 * (1 + (number_of_players - 1)) का बाइनरी वेक्टर होगा, जिसे मैं खाली ड्रा बवासीर के लिए सीमित करने के लिए फ़िल्टर कर सकता था (और खुद के ढेर से नहीं खींच सकता)।
हालांकि, जब खुद गेम खेल रहे थे, तो मैंने देखा कि कभी-कभी डेक से शुरुआती कार्ड को खींचना फायदेमंद होता है, फिर पहले वाले ड्रॉ के मूल्य के आधार पर दूसरे कार्ड के लिए ड्रा पाइल का चयन करें। लेकिन इसे एक्शन स्पेस में कैसे एनकोड किया जाएगा? क्या यह सोचना बेहतर होगा कि ये दो अलग-अलग क्रियाएं हैं, यहां तक कि सोचा कि वे उसी "टर्न" का हिस्सा हैं?
जवाब
प्रयोगों के पूर्ण विवरण और परिणामों को जाने बिना कुछ के लिए कहना कठिन है।
हालांकि, अगर खेल में फूट डालने के फैसले की अनुमति मिलती है, तो यह संभवत: एजेंट के लिए बेहतर होगा कि वह ड्रॉ ढेर से लिए गए किसी भी पहले से छिपे हुए कार्ड के मूल्य के अतिरिक्त ज्ञान का लाभ उठा सके।
सामान्य तौर पर, यदि प्रत्येक खिलाड़ी के निर्णय को क्रमिक रूप से लिया जाता है, जिसके परिणामस्वरूप राज्य में परिवर्तन होते हैं, तो यह सुदृढीकरण सीखने (आरएल) में उपयोग किए गए एमडीपी सैद्धांतिक मॉडल के अनुसार एक अलग समय कदम पर एक अलग कार्रवाई है। आप अलग-अलग समय के चरणों का वर्णन / नोट करना चाह सकते हैं ताकि वे मेल खाएं कि कैसे खेल खेलते हैं। हालांकि, आरएल के प्रयोजनों के लिए, प्रत्येक निर्णय बिंदु एक नए समय कदम पर होना चाहिए, और इसके परिणामस्वरूप एक नया राज्य, नया मूल्य निर्धारण आदि होना चाहिए।
इसी तरह, मौजूदा विकल्प खिलाड़ी का पहला कार्ड या दूसरा कार्ड है जिसे राज्य का हिस्सा बनाने की जरूरत है। राज्य का यह विवरण पहले से ही खिलाड़ी के हाथ में कार्ड की संख्या से आच्छादित हो सकता है , यदि तार्किक रूप से प्रत्येक चरण में कार्ड की संख्या हमेशा समान होती है। हालांकि, यदि हाथ का आकार अन्य कारणों से भिन्न हो सकता है, तो यह "पहले ड्रॉ पसंद" या समान के लिए एक स्पष्ट ध्वज जोड़ने के लायक है ताकि एजेंट जानकारी का उपयोग कर सके।
आपको एक्शन स्पेस एन्कोडिंग के लिए कुछ स्वतंत्रता है। यदि इस खेल में सभी चरणों में ड्रॉइंग कार्ड एकमात्र संभव क्रिया है, तो 1 + (number_of_players - 1) आयामों का एक बाइनरी आउटपुट वेक्टर उपयुक्त होगा। अन्य एन्कोडिंग भी अच्छी तरह से काम कर सकते हैं, यह निर्भर करता है कि क्या विकल्प या कुछ व्युत्पन्न डेटा के लिए कोई तार्किक संरचना है जो उपयोगी गेम जानकारी को एन्कोड करता है।
यह कार्रवाई के विकल्पों को व्यवस्थित करने के लिए उपयोगी हो सकता है ताकि प्रत्येक खिलाड़ी के त्यागने वाले ढेर से ड्राइंग के लिए सूचकांक को वर्तमान खिलाड़ी की बारी के लिए अपेक्षाकृत माना जाए। अर्थात्, व्यवस्थित किए जाने वाले कार्यों के बजाय$[draw, discard P1, discard P3, discard P4, discard P5]$ P2 के लिए, उन्हें व्यवस्थित किया जाएगा $[draw, discard P3, discard P4, discard P5, discard P1]$ और P3 के लिए अलग होगा: $[draw, discard P4, discard P5, discard P1, discard P2]$। । । यह स्वाभाविक रूप से चक्रीय प्रकृति की अनुमति देता है। राज्य के प्रतिनिधित्व को इसी तरह मैच करने के लिए प्रत्येक खिलाड़ी के बारे में ज्ञान को घुमाने की आवश्यकता होगी। आपको ऐसा करने की आवश्यकता नहीं हो सकती है, लेकिन मैं इसे उन खेलों के लिए सुझाऊंगा जहाँ स्थिति बदलने के लिए कार्रवाई विकल्पों के संबंध में बहुत सारे सामान्य तर्क हैं, जिनका आप लाभ उठा सकते हैं। यदि पी 1, पी 2, पी 3 आदि के बीच खेल में महत्वपूर्ण अंतर थे, तो विपरीत लागू होगा (और आप पूर्ण खिलाड़ी पदों का उपयोग करेंगे)।