आनुवंशिक एल्गोरिथ्म के रोक बिंदु को परिभाषित करने से क्या एल्गोरिथ्म का उद्देश्य समाप्त हो जाता है?


11

विकिपीडिया ने इसे GA के समाप्ति बिंदु को परिभाषित किया:

आमतौर पर, एल्गोरिथ्म समाप्त हो जाता है जब या तो अधिकतम पीढ़ियों का उत्पादन किया गया है, या आबादी के लिए एक संतोषजनक फिटनेस स्तर तक पहुंच गया है। यदि एल्गोरिथ्म अधिकतम पीढ़ियों के कारण समाप्त हो गया है, तो एक संतोषजनक समाधान नहीं हो सकता है या नहीं पहुंच सकता है।

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

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


1
शायद cstheory के लिए एक बेहतर फिट है।
कार्ल बेज़ेलफेल्ट

हालांकि ऐसा नहीं था कि :)
slandau

1
@ कर्ल: सवाल cstheory के लिए थोड़ा नरम है। संभवत: इसे वहीं बंद कर दिया जाएगा।
रॉबर्ट हार्वे

2
धन्यवाद, @Robert अब मुझे याद है कि मैं वहां क्यों नहीं जाता। मुझे लगता है कि यह उन "दरार के बीच" सवालों में से एक है।
कार्ल बेज़ेलफेल्ट

1
आप पहले से ही अपने "सही दोस्त" की विशेषताओं को जानते हैं, भी: वे आपको पूरी तरह से खुश कर देंगे! लेकिन यह उन्हें खोजने के लिए पर्याप्त नहीं है (अकेले उन्हें खरोंच से निर्माण करें ...)। साथ ही प्रयोग आवश्यक है।
किलन फथ

जवाबों:


17

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

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


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

@Karl मैं पहली बार Malbolge "नमस्ते दुनिया" का निर्माण करने के लिए एंड्रयू कुक के आनुवंशिक एल्गोरिथ्म समाधान याद और फिर खो दिया एक बेहतर समाधान उसे ईमेल कर दी stackoverflow.com/questions/5338627/...
pageman

8

अक्सर ऐसा होता है कि आप किसी समाधान की फिटनेस निर्धारित कर सकते हैं, लेकिन सीधे समाधान का निर्धारण नहीं कर सकते। कहते हैं कि आप तेज खरगोशों को विकसित करने की कोशिश कर रहे हैं, और कुछ मुट्ठी भर जीन हैं जो खरगोश की गति को प्रभावित करते हैं। आप खरगोश की गति का परीक्षण कर सकते हैं, लेकिन गति से संबंधित जीनों के सभी संयोजनों की गणना करना अव्यावहारिक होगा। ऐसे मामले में, आपके पास एक GA हो सकता है जो खरगोशों को दौड़ता है और सबसे तेज दौड़ता है। आप ऐसा हमेशा के लिए कर सकते हैं, लेकिन आप शायद तब रुकना पसंद करेंगे जब:

  • आपको एक खरगोश मिला है जो X से तेज है, या
  • n पीढ़ियों से वृद्धिशील सुधार कुछ सीमा से नीचे चला गया है, या
  • आपने मी पीढ़ियों के माध्यम से खरगोशों को पाला है

5

जीए का संपूर्ण बिंदु आपको उस समस्या का समाधान देना है जिसमें फिटनेस स्तर है। यह समाधान अन्य अधिक पारंपरिक खोज एल्गोरिदम का उपयोग करके खोजना बहुत कठिन होगा, जो आमतौर पर आप पहली जगह में जीए का उपयोग कर रहे हैं।

या एक फिटनेस मूल्य सीमा के बजाय, आप यह तय कर सकते हैं कि आप कितनी पीढ़ियों को चलाना चाहते हैं (जितनी अधिक पीढ़ियाँ आप चलाएंगे, उतनी अधिक संभावना आपको कभी उच्चतर फिटनेस मूल्यों को खोजने की होती है)। उदाहरण के लिए, ट्रैवलिंग सेल्समैन की समस्या में, एक ऐसा रास्ता प्राप्त करना, जिसमें उन शहरों के बीच सबसे कम लागत हो, जहां आपको यात्रा करना है।

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


3

सहज रूप से, एक आनुवंशिक एल्गोरिथ्म का उद्देश्य एक समस्या के लिए एक एल्गोरिदम समाधान तैयार करना है जो खुद को एक सीधा तार्किक विश्लेषण में उधार नहीं देता है। एक बार जब वह लक्ष्य हासिल हो जाता है, तो GA को और आगे बढ़ने की आवश्यकता नहीं है।

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


2

एक आनुवंशिक एल्गोरिथ्म को अधिक प्रसार के साथ अच्छे जीन को पुरस्कृत करने के लिए किसी तरह की आवश्यकता होती है। यदि आपके पास बुरे जीन से अच्छे जीन को बताने का कोई तरीका नहीं है, तो आप आनुवंशिक एल्गोरिथम का उपयोग नहीं कर सकते हैं।

काम करने के लिए एक आनुवंशिक एल्गोरिथ्म के लिए, आपको कम फिट समाधानों की वरीयता में अधिक उपयुक्त समाधानों को पुन: पेश करने की अनुमति देनी चाहिए। अन्यथा, आप बस यादृच्छिक समाधान की कोशिश कर रहे होंगे।

यहां मेरे स्वयं के अनुभव से एक विशिष्ट उदाहरण है: पहली वॉइस डायलिंग प्रणालियों में से एक का विकास करना, हमारे पास एक कठिन समय था एक एल्गोरिथ्म खोजने के लिए एक बोले गए नाम को उसी नाम की एक संग्रहीत प्रति से मिलान करना। हमें बताया गया कि 25 में से एक नाम लेने वाली 95% सटीकता पर्याप्त थी। हम लोगों के पास एक संग्रहित शव था, जिसमें कहा गया था कि प्रत्येक में 25 नाम 10 बार।

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

अब, हमारे पास एक अंतिम चरण था - उन भारों का मूल्य क्या होना चाहिए?

हमने वजन के 1,000 यादृच्छिक सेट बनाए और उन्हें कॉर्पस के खिलाफ परीक्षण किया। हमने सबसे खराब प्रदर्शन करने वाले 500 को फेंक दिया। शेष 500 के लिए, हमने प्रत्येक को एक में और उनमें से एक में बेतरतीब ढंग से उठाया या कम किया।

हमने लगभग दो सप्ताह तक इस प्रक्रिया को एक कंप्यूटर पर दोहराया जब तक कि यह अंत में वजन का एक सेट नहीं था जो 95% सटीकता की कसौटी पर खरा उतरा। फिर हमने इसे कॉरपस में नहीं डेटा पर परीक्षण किया। यह लगभग 92% सटीक था। इसलिए हम कॉर्पस पर 98% सटीकता प्राप्त करने के लिए लंबे समय तक भागते रहे और वजन के उस सेट ने 95% सटीकता का उत्पादन किया जो कि कॉर्पस में नहीं है।

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


0

एक समाधान तक पूर्ववर्ती पुनरावृत्ति से बहुत भिन्न नहीं होता है। बहुत अधिक के लिए, कृपया एक निश्चित सहिष्णुता को समझें।

Solution in iteration n-6: 600
Solution in iteration n-5: 800
Solution in iteration n-4: 768
Solution in iteration n-3: 780 
Solution in iteration n-2: 778
Solution in iteration n-1: 778.23
Solution in iteration n: 780.18
Solution in iteration n+1: 780.1815

इस उदाहरण में, यदि आपकी निश्चित सहिष्णुता 0.01 थी तो (n + 1) आपको रोकना बताती है क्योंकि एब्स (समाधान (n + 1) -solution (n)) <0.01।

फिर से शुरू, thats जब आपके एल्गोरिथ्म कह सकते हैं: इस अभ्यस्त किसी भी बेहतर हो!


0

आपके लिए मुख्य प्रश्न के त्वरित उत्तर के लिए: यह जानने के लिए कि आप क्या हासिल करना चाहते हैं, और वहां कैसे जाना जाता है, के बीच एक बड़ा अंतर है।

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

जीए / ईए के साथ आप पाएंगे कि यह सामान्य व्यवहार है जो आपको बहुत जल्दी 95% + इष्टतम उत्तर मिल जाता है, लेकिन पिछले 5% की संकीर्णता बहुत अधिक महंगा है। तो सिद्धांत यह है कि आप कम से कम समय में सबसे अच्छा परिणाम प्राप्त करने के लिए एक स्वीकार्य इष्टतम को परिभाषित करते हैं। चूंकि खोजने की लागत, शीर्ष 1% कहती है, इसलिए इसके लाभों को शीर्ष 5% से अधिक हो सकता है, आप अपने स्वीकार्य इष्टतम को परिभाषित करते हैं।

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


0

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

यद्यपि इस पत्र में वर्णित तरीके नए कार्यक्रमों को खरोंच से विकसित नहीं करते हैं, वे दिखाते हैं कि मौजूदा दोषों को सुधारने के लिए विरासत सॉफ्टवेयर को कैसे विकसित किया जाए।

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

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

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