7

एक लेख स्टारक्राफ्ट II में "बिल्ड ऑर्डर" को अनुकूलित करने के लिए जेनेटिक एल्गोरिदम के उपयोग पर हाल ही में चर्चा करने वाले राउंड बना रहा है।वास्तविक समय रणनीति गेम के लिए अनुकूलित करने वाला कौन सा मॉडल सबसे अच्छा सूट है?

http://lbrandy.com/blog/2010/11/using-genetic-algorithms-to-find-starcraft-2-build-orders/

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

मेरा प्रश्न एक आनुवंशिक एल्गोरिथ्म वास्तव में आदेश निर्माण के अनुकूलन मॉडल करने के लिए सबसे अच्छा तरीका है है ...?

एक निर्माण के क्रम गतिविधियों का क्रम है। कुछ कार्यों में पूर्व शर्त होती है, "बिल्डिंग सी बनाने से पहले आपको बिल्डिंग बी की आवश्यकता है, लेकिन आप किसी भी समय बिल्ड ए बना सकते हैं।" तो एक गुणसूत्र एएबीएसी की तरह लग सकता है।

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

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

+2

जीनों को मिश्रित नहीं किया जा सकता है और या तो स्वतंत्र रूप से मेल नहीं किया जा सकता है। (मेरी तीसरी नाक के साथ लिखा गया संदेश) –

+0

"सर्वश्रेष्ठ" को परिभाषित करता है, जैसा कि * एक्स वास्तव में सबसे अच्छा एल्गोरिदम * है। – peterchen

+0

सबसे उपयुक्त? –

उत्तर

2

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

इष्टतम परिणाम प्राप्त करने के लिए आपको क्रियाओं के हर संभावित संयोजन के माध्यम से खोजना होगा जब तक कि आप पेड़ की तरह प्रतिनिधित्व के माध्यम से इष्टतम मार्ग नहीं पाते। हालांकि, स्टार क्राफ्ट के लिए ऐसा करना मुश्किल है, क्योंकि लक्ष्य तक पहुंचने के लिए कई अलग-अलग पथ हैं। शतरंज में आप ई 2 से ई 4 तक एक पंख ले जाते हैं और फिर प्रतिद्वंद्वी चलता है। स्टार क्राफ्ट में आप तत्काल एक्स या एक्स + 1 या एक्स +10 पर एक इकाई को स्थानांतरित कर सकते हैं या ...

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

बिल्ड-ऑर्डर निर्माता के लिए केवल समय ही मायने रखता है। क्या खनिजों को तेजी से प्राप्त करने के लिए एक और ड्रोन बनाना बेहतर है, या क्या यह तुरंत स्पॉन्गिंग पूल शुरू करना तेज़ है? शतरंज के साथ सीधा नहीं है।

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

Score = a*(Buildings_and_units_done/Buildings_and_units_required) - b*Time_elapsed - c*Minerals - d*Gas + e*Drone_count - f*Supply_left 

यह समापन प्रतिशत के साथ-साथ स्टारक्राफ्ट सामान्य ज्ञान से जुड़े स्कोर को रखने की कोशिश करता है (अपने संसाधनों को कम रखें, ड्रोन बनाएं, अपनी आवश्यकता से अधिक आपूर्ति न करें)। एफ के चर के लिए निश्चित रूप से tweaking की आवश्यकता होगी।

आपके पास एक उदारवादी होने के बाद कुछ हद तक स्थिति का मूल्य अनुमान लगा सकता है, तो मैं Best-first search या शायद IDDFS का उपयोग संभावनाओं के पेड़ के माध्यम से खोजने के लिए करता हूं।

संपादित:

मैं हाल ही में एक paper है कि वास्तव में StarCraft में आदेश अनुकूलन का निर्माण, यहां तक ​​कि वर्णन करता है वास्तविक समय में मिल गया। लेखक depth-first searchbranch and bound और हेरिस्टिक्स का उपयोग करते हैं जो तकनीकी पेड़ (जैसे ज़र्ग्लिंग्स को स्पॉन्गिंग पूल की आवश्यकता होती है) और आवश्यक खनिजों को इकट्ठा करने के लिए आवश्यक समय तक पहुंचने के लिए आवश्यक न्यूनतम प्रयास का अनुमान लगाते हैं।

1

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

2

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

तो, आपकी एआई लागू करने के तरीके के आधार पर, जेनेटिक एल्गोरिदम सबसे अच्छा हो सकता है।

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


"जेनेटिक प्रोग्रामिंग" देखें। यह समान है, लेकिन पात्रों की रेखाओं के बजाय पेड़-संरचनाओं का उपयोग करता है, जो बेहतर प्रजनन करने वाली अधिक जटिल बातचीत के लिए अनुमति देता है। अधिक जटिल चीजों के लिए, वे आम तौर पर बेहतर काम करते हैं।

0

यह जेनेटिक एल्गोरिदम केवल गेम के एक बहुत ही विशिष्ट भाग के लिए रणनीति को अनुकूलित करता है: गेम के पहले कुछ निर्माण कार्यों का क्रम। और इसका एक बहुत ही विशिष्ट लक्ष्य भी है: जितनी जल्दी हो सके उतने रोशनी लें।

इस प्रणाली को प्रभावित करने ही पहलुओं (मैं कोई starcraft खिलाड़ी हूँ) होने लगते हैं:

  • विभिन्न इकाइयों के निर्माण समय और इमारतों
  • अनुमति इकाइयों और इमारतों उपलब्ध इकाइयों और इमारतों को देखते हुए
  • लार्वा पुनर्जन्म दर।

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

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

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

3

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

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

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

हालांकि, "गरीब विकल्प" से मेरा क्या मतलब है कि यह एक अधिक उपयुक्त दृष्टिकोण के सापेक्ष अक्षम है; यह कहना नहीं है कि यह अभी भी 98% इष्टतम परिणाम एक सेकंड या जो कुछ भी हो सकता है। इस तरह की परिस्थितियों में जहां कंप्यूटर का ब्रूट फोर्स उपयोगी होता है, आमतौर पर यह अधिक महत्वपूर्ण होता है कि आपने सबसे प्रभावी एल्गोरिदम का उपयोग करने के बजाय खोज स्थान को सही तरीके से मॉडल किया है।

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