2011-07-07 15 views
8

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

अभी मैं राज्य मशीनों का उपयोग करके एक स्टारक्राफ्ट बॉट (bwapi) पर wotking हूँ, मैं प्रत्येक इकाई के लिए एक एकल राज्य मशीन का उपयोग करने के बारे में सोच रहा हूं और एक मास्टर कमांडिंग सोल्डर क्या करना है, लेकिन यह अभी भी मुझे पहले कार्यक्रम की आवश्यकता है और स्टारक्राफ्ट जैसे गेम के लिए यह असंभव है, मैं सोच सकता हूं कि एकमात्र तरीका मैं सीख सकता हूं कि इन राज्य मशीनों को विकसित करने के लिए जीपी का उपयोग करना है।

कहें कि मानचित्र पर एक पुल है यदि 20 मरीन एक ही समय में पुल से गुजरने की कोशिश करते हैं तो एक बड़ा ट्रैफिक जाम होगा, मैं कौन सी तकनीक का उपयोग कर सकता हूं ताकि वह गलती से सीख सके? तो मुझे एक शर्त को प्रीप्रोग्राम करने की ज़रूरत नहीं है जो कि पुल के माध्यम से एक-एक करके जाती है।

संपादित करें: सिर्फ इसलिए कि किसी प्रश्न में स्टारक्राफ्ट या बॉट शब्द हैं, यह स्वचालित रूप से यह नहीं बनाता है कि यह प्रश्न रोबोटिक्स पर भी लागू होता है।

+0

क्या आप पुल से दूरी के क्रम में पुल पार करने के लिए मरीन को आदेश जारी नहीं कर सकते? तो वे एक-एक करके जाते हैं? – Andrey

+0

क्या यह [programmers.stackexchange] (http://programmers.stackexchange.com/faq) पर अधिक उपयुक्त होगा? –

+0

या यहां तक ​​कि http://gamedev.stackexchange.com/? – Andrey

उत्तर

7

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

आप इसे कैसे मापते हैं?

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

+0

हां संख्यात्मक संकेतक हैं जिन्हें मैं जीपी के साथ उपयोग कर सकता हूं, लेकिन मैं अन्य तकनीकों के बारे में सोच रहा हूं जो सीख सकते हैं? –

+3

यह बात है। सभी सीखने वाले एल्गोरिदम को उम्मीदवारों को स्कोर करने के तेज़, स्वचालित साधनों की आवश्यकता होती है ताकि आप यह जान सकें कि क्या आप सही दिशा में जा रहे हैं या नहीं। इस कार्य को हल करने से आप अपने बॉट्स के लिए कई तकनीकों का उपयोग कर सकते हैं। न्यूरल नेटवर्क भी राज्य मशीनों को हल करने का एक अच्छा तरीका हो सकता है, लेकिन यह हमेशा वापस आ जाएगा कि आप अपने automatons कैसे स्कोर करते हैं। – spender

+0

मुझे लगता है कि (मेरा क्षेत्र नहीं) यह भी मदद करेगा कि अगर आप अपने बॉट को कुछ अच्छी तरह से परिभाषित प्रकार के सबक सीखने के लिए प्रमुख बना सकते हैं। यद्यपि निश्चित रूप से ऐसा करने के बाद, यदि आप सभी प्रकार के सबक की उम्मीद नहीं करते हैं तो आपके बॉट को सीखने की आवश्यकता हो सकती है ... - दृष्टिकोण संभावित रूप से अधिक लचीला/अनुकूलनीय बॉट दे सकता है, लेकिन केवल एक डिग्री के लिए। – Steve314

0

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

उदाहरण के लिए, यह जानना कि आपकी इकाइयों को कहां/कब रखना है, यह 100% दक्षता के साथ इसे कैसे करना है, यह जानने के लिए तर्कसंगत रूप से अधिक महत्वपूर्ण है।

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

2

आप यहां दो अलग-अलग प्रश्न पूछ रहे हैं।

पहला "एआई क्या है जो सीख सकता है"? यह सामान्य प्रश्न मशीन लर्निंग अनुसंधान का उत्तर देने का प्रयास करता है। मशीन सीखने को लागू करने के लिए दर्जनों विभिन्न टूल हैं, लेकिन आपके आवेदन के लिए कोई चांदी बुलेट नहीं है। आपको एआई को "सीखने" के बारे में बहुत कठिन विचार करना होगा - इसके इनपुट क्या होंगे, और यह क्या उत्पादन करेगा?

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

या तो देखने के लिए Google खोज का उपयोग करने से आप एक उत्तर में क्रैम करने की तुलना में बहुत अधिक जानकारी के बारे में बताएंगे, विशेष रूप से यह देखते हुए कि आपका प्रश्न खुले अंत में है (w.r.t. लर्निंग सिस्टम)।

0

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

ठीक है, मजाक कर रहा है। मुझे लगता है कि यह सिर्फ इंजीनियरिंग है। एक चरित्र विकसित करना जरूरी नहीं है कि यह सभी घटनाओं के लिए मजबूती से प्रतिक्रिया दे, लेकिन इसे विस्तारित करने और इसे अपने गुणों का अवलोकन रखने के लिए काम करना बहुत मुश्किल हो सकता है।

आप एक लक्ष्य आधारित दृष्टिकोण में रुचि हो सकती:

http://www.media.mit.edu/~jorkin/gdc2006_orkin_jeff_fear.pdf

यह एक प्रयास के साथ लेकिन लंबे समय में शुरू करने के लिए का एक सा है, यह इसके अधिक स्वच्छ और आसान बना देता है है अपने दोस्तों 'का विस्तार करने के व्यवहार।

1

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

यह एक न्यूरोविवल तकनीक है; अर्थात्, विकास के माध्यम से तंत्रिका नेटवर्क का निर्माण।

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

कार्यान्वयन वास्तव में कठिन नहीं है, लेकिन वे इस तकनीक की कुंजी आनुवांशिक इतिहास है, जो महत्वपूर्ण है विकासवादी प्रक्रिया। (यह भी इस तकनीक को न्यूरोवॉल्यूशन के पहले प्रयासों की तुलना में इतना अद्भुत बनाता है; यहां समस्या यह है कि इनपुट और आउटपुट समान होना चाहिए, और यह मामला नहीं हो सकता है)

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

यहां एक कार्यान्वयन है कि मुझे आपके काम को आधार देने के लिए बहुत अच्छा लगता है;

http://nn.cs.utexas.edu/?windowsneat

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

तकनीक का मुखपृष्ठ यहां है;

http://www.cs.ucf.edu/~kstanley/neat.html

यहाँ कालानुक्रमिक क्रम में प्रकाशन है,

http://nn.cs.utexas.edu/keyword?stanley:ec02

http://nn.cs.utexas.edu/keyword?stanley:ieeetec05

http://nn.cs.utexas.edu/?kbneat

(KB-NEAT rtNEAT पहले से ही उपयोग करता है इसके बाद के संस्करण के प्रकाशन में)

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

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

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

ओह, और एक तीसरा नोट; आप इकाइयों के लिए कई दिमाग विकसित कर सकते हैं, और यहां तक ​​कि प्रत्येक इकाई प्रकार के लिए अलग-अलग दिमाग भी हो सकते हैं। बस, अब बहुत हो चुका। शायद आप अपने या दुश्मन के प्रत्येक प्रौद्योगिकी स्तर के लिए एक मस्तिष्क चाहते हैं। पाठ्यक्रम के विकास में अतिरिक्त समय लगता है, लेकिन मस्तिष्क स्मृति में छोटे होते हैं इसलिए राशि कोई समस्या नहीं है।

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

0

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

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

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

एक बार जब आप उस समस्या को थोड़ा बेहतर समझते हैं, तो आप उन डिज़ाइनों के साथ आना शुरू कर सकते हैं जो आपकी सभी आवश्यकताओं को सर्वोत्तम रूप से जोड़ते हैं।

संबंधित मुद्दे