मैं अपने एमुलेटर इनपुट ऑप्टिमाइज़ेशन समस्या को कैसे वर्गीकृत करूं, और मुझे किस एल्गोरिथ्म के साथ संपर्क करना चाहिए?


10

प्रश्न की प्रकृति के कारण, मुझे बहुत सारी पृष्ठभूमि की जानकारी शामिल करनी है (क्योंकि मेरा प्रश्न है: मैं इसे कैसे संकीर्ण कर सकता हूं?) उन्होंने कहा, इसे संक्षेप में (मेरे ज्ञान के सर्वोत्तम) के रूप में किया जा सकता है:

बहुत बड़े कॉम्बीनेटरियल सर्च स्पेस पर स्थानीय अनुकूलन खोजने के लिए क्या तरीके मौजूद हैं?

पृष्ठभूमि

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

इन रनों को बनाने से उनका लक्ष्य आमतौर पर दो मुख्य कारकों में बदल जाता है: मार्ग-नियोजन और ट्रैवर्सल। पूर्ववर्ती उत्तरार्द्ध की तुलना में बहुत अधिक "रचनात्मक" है।

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

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

मेरा लक्ष्य अब निंटेंडो 64 प्रणाली के लिए सामान्य रूप से ट्रैवर्सल प्रक्रिया को स्वचालित करने का प्रयास करना है । खोज इस समस्या के लिए जगह नहीं है अब तक भी एक जानवर बल दृष्टिकोण के साथ हमला करने के लिए बड़े। एक N64 रन की एक n फ्रेम खंड 2 है 30N संभव आदानों, इनपुट के एक मात्र 30 फ्रेम (30fps पर एक दूसरे) 2 है, जिसका अर्थ 900 संभव आदानों; इन संभावित समाधानों का परीक्षण करना असंभव होगा, पूरे दो घंटे चलने वालों को अकेले रहने दें।

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

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

वर्तमान स्थिति

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

ध्यान दें कि इस कार्यक्रम का सबसे धीमा हिस्सा एक इनपुट स्ट्रीम का मूल्यांकन होगा । ऐसा इसलिए है क्योंकि इसमें n फ्रेम के लिए गेम का अनुकरण करना शामिल है । (यदि मेरे पास समय होता तो मैं अपना खुद का एमुलेटर लिखता जो इस तरह के सामान में हुक प्रदान करता था, लेकिन अब मैं संदेशों को संश्लेषित करने और किसी अन्य प्रक्रिया से मौजूदा एमुलेटर के लिए मेमोरी को संशोधित करने के लिए छोड़ दिया गया हूं।) मेरे मुख्य कंप्यूटर पर, जो। काफी आधुनिक है, 200 फ्रेम का मूल्यांकन करने में लगभग 14 सेकंड लगते हैं। जैसे, मैं एक एल्गोरिथम (पसंद को देखते हुए) पसंद करूँगा जो फ़ंक्शन मूल्यांकन की संख्या को कम करता है।

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

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

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

मुसीबत

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

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

सवाल

तो मेरा सवाल है: मैं इसे कैसे मॉडल करूं? मैं किस प्रकार की अनुकूलन समस्या को हल करने की कोशिश कर रहा हूं? मैं किस एल्गोरिथ्म का उपयोग करने के लिए लगता हूं? मैं शोध पत्र पढ़ने से नहीं डरता इसलिए मुझे पता होना चाहिए कि मुझे क्या पढ़ना चाहिए!

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

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

वर्तमान में मैं (रिएक्टिव) तबू सर्च के बारे में पढ़ रहा हूं, बहुत बड़े पैमाने पर पड़ोस की खोज, शिक्षण-शिक्षण-आधारित अनुकूलन और चींटी कॉलोनी अनुकूलन।

क्या यह समस्या बस यादृच्छिक आनुवंशिक एल्गोरिदम के अलावा किसी भी चीज़ से निपटने के लिए बहुत कठिन है? या यह वास्तव में एक तुच्छ समस्या है जो बहुत पहले हल हो गई थी? पढ़ने के लिए धन्यवाद और किसी भी प्रतिक्रिया के लिए अग्रिम धन्यवाद।


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

@Kaveh: मैं समझता हूं कि यह लंबापन है, लेकिन सवाल की प्रकृति के कारण इसे संकीर्ण करना बहुत कठिन है, क्योंकि मैं बहुत अधिक पूछ रहा हूं कि इसे कैसे संकीर्ण किया जाए। :(

जवाबों:


6

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

  • ऑब्जेक्ट स्पेस,
  • लक्ष्य समारोह और
  • आपके आनुवंशिक एल्गोरिथ्म के पैरामीटर,

इसलिए मुझे विस्तृत होने दें।

आपकी वस्तुएं क्या हैं?

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

आपका लक्षित कार्य क्या है?

यह वास्तव में महत्वपूर्ण है। आप क्या अनुकूलित करना चाहते हैं? गोल करने का समय? विभिन्न कार्यों की संख्या? एकत्रित सितारों की संख्या? कई कारकों का एक संयोजन? जैसे ही आप कई लक्ष्य प्राप्त करते हैं, चीजें बालों वाली हो जाती हैं - वहां (आमतौर पर) अब ऑप्टिमा नहीं होती हैं!

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

यहाँ छवि विवरण दर्ज करें
[ स्रोत ]

00

11+लक्ष्य के लिए अंतिम दूरी+11+लक्ष्य के लिए समय

011

तो आप दूरी कैसे मापते हैं? रैखिक दूरी आकर्षक लग सकती है लेकिन इसकी समस्याएं हैं; फिर से, गलत संकेत भेजे जा सकते हैं। इस सरल परिदृश्य पर विचार करें:

यहाँ छवि विवरण दर्ज करें
[ स्रोत ]

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

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

आपका GA कैसे काम करता है?

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

आबादी

आपकी जनसंख्या कितनी बड़ी होने जा रही है? यदि यह बहुत छोटा है, तो यह एक अच्छे समाधान तक पहुंचने के लिए आवश्यक विविधता प्रदान नहीं कर सकता है । यदि यह बहुत बड़ा है, तो प्रक्रिया को धीमा करते हुए, आप बेकार कबाड़ के चारों ओर ले जाने की अधिक संभावना है।

आप अपनी आबादी को कैसे शुरू करते हैं? क्या आप यादृच्छिक एक्शन दृश्यों को चुनते हैं? यदि हां, तो किस लंबाई का है? क्या आपके पास मैन्युअल रूप से उत्पन्न, हल करने के लिए उचित समाधान की एक (छोटी) संख्या है, शायद ऐसे लक्ष्य तक पहुंचें?

चयन

? क्या आप किसी भी मामले में जीवित रहना चाहते हैं या वे मर सकते हैं (स्थानीय ऑप्टिमा छोड़ने के लिए उपयोगी हो सकता है) to?

यहाँ मूल अवधारणा चयन दबाव है : जीवित रहना कितना कठिन है? इसे बहुत छोटा करें और आप बकवास समाधान न करें। इसे बहुत ऊंचा करें और आप बदलाव करें (विशेष रूप से स्थानीय ऑप्टिमा के बीच बढ़ते हुए)।

प्रजनन और उत्परिवर्तन

एक बार जब आप एक दौर के अपने बचे हुए लोगों का चयन कर लेते हैं, तो आपको उनसे अगली पीढ़ी बनानी होगी (क्या माता-पिता जीवित रहते हैं और अगली पीढ़ी का हिस्सा हैं?)। दो प्रमुख रणनीतियाँ हैं: उत्परिवर्तन और पुनर्संयोजन।

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

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

समाप्ति

एन1n


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

नोटा नेने: ऊपर के प्रकाश में बॉक्सकार 2 डी को देखें। वे कुछ चीजें बहुत अच्छी तरह से करते हैं (अन्य, ऐसा नहीं) और आप एक अंतर्ज्ञान प्राप्त कर सकते हैं कि कैसे जीए के पैरामीटर उसके प्रदर्शन को प्रभावित कर सकते हैं।


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

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

1/nn1

ठीक है मैं देखता हूँ। तीसरे बिंदु के बारे में हां, मेरा मतलब कुछ ऐसा ही था। धन्यवाद!
जुहो

सारी जानकारी के लिए शुक्रिया।! वास्तव में अच्छी तरह से रखा गया जवाब जो मेरी समझ को स्पष्ट करता है।
GManNickG

1

टीचिंग-लर्निंग-आधारित अनुकूलन (टीएलबीओ) विधि और इसके कोड के बारे में अधिक जानकारी के लिए, निम्न पेपर देखें:

आर वेंकट राव और वी। पटेल द्वारा जटिल विवश अनुकूलन समस्याओं के समाधान के लिए एक अभिजात्य शिक्षण-शिक्षण-आधारित अनुकूलन एल्गोरिथ्म ; औद्योगिक इंजीनियरिंग संगणना 3 (4) के अंतर्राष्ट्रीय जर्नल: 535-560 (2012)

अतिरिक्त पढ़ने के लिए:


1
Cs.SE में आपका स्वागत है, और आपके उत्तर के लिए धन्यवाद! ध्यान दें कि आप अपने पदों को प्रारूपित करने के लिए मार्कडाउन का उपयोग कर सकते हैं; मेरा सुझाव है कि आप मेरे संपादन का निरीक्षण करें। सामग्री के बारे में, मुझे नहीं लगता कि इससे ओपी को मदद मिलती है जो यह जानना चाहता है कि उसकी समस्या को कैसे मॉडल किया जाए, किसी विशेष तकनीक पर विवरण नहीं। इसके अलावा, टीएलबीओ पर केवल एक ही व्यक्ति काम कर रहा है?
राफेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.