2010-12-14 11 views
6

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

मैं निम्नलिखित दो गुणसूत्रों संभोग करने के लिए सक्षम होना चाहते हैं:

[1 2 3 4] और [3 4 5 6] कुछ उपयोगी में। स्पष्ट रूप से मैं ठेठ क्रॉसओवर फ़ंक्शन का उपयोग नहीं कर सकता क्योंकि मैं अपने बच्चों में डुप्लिकेट के साथ समाप्त हो सकता हूं जो अमान्य समाधान का प्रतिनिधित्व करेगा। इस मामले में सबसे अच्छी क्रॉसओवर विधि क्या है।

+0

क्या किसी को पता है कि इस वर्ग की समस्याओं को साहित्य में क्या कहा जाता है? – aloo

उत्तर

3

बस सेट के दोनों (यानी उनके चौराहे में।), कि इस तरह के छोड़ किसी भी तत्व है कि में होता है पर ध्यान न दें तत्व दोनों सेट में अपरिवर्तित।

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

यह दोनों सेटों को ऑर्डर करने और संरेखित करने के रूप में सोचा जा सकता है ताकि मेल खाने वाले तत्व एक-दूसरे का सामना कर सकें और मानक क्रॉसओवर एल्गोरिदम में से एक को लागू कर सकें।

+0

मैं इसे आजमाउंगा। आम तत्वों को अनदेखा करना सबसे अच्छा क्यों है? यदि ये दो अच्छे माता-पिता हैं तो क्या आप आम तत्वों को रखना नहीं चाहते हैं क्योंकि यही कारण है कि उन्हें अच्छे समाधान मिल सकते हैं? – aloo

+0

इसके अलावा, इस प्रकार की समस्या के लिए एक आम नाम है कि मैं इस पर शोध पत्रों को देखना शुरू कर सकता हूं? – aloo

+0

अनदेखा करना अपरिवर्तित रखना - स्पष्टता के लिए संपादन। –

1

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

+0

क्या यह कहानी कवरेज तक अधिक नहीं होगी क्योंकि आप क्रमिक क्रमों का परीक्षण कर रहे हैं जिनके पास वैध होने का मौका कभी नहीं होगा? – aloo

+0

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

1

मैं वास्तव में क्या आप "ठेठ विदेशी" पर इसका मतलब यह नहीं पता है, लेकिन मैं आपको एक क्रॉसओवर क्या अक्सर क्रमपरिवर्तन के लिए प्रयोग किया जाता है के लिए इसी तरह इस्तेमाल कर सकते हैं लगता है:

  • पहले से मीटर ints ले माता-पिता (मीटर < n, जहां n अपने सेट में ints की संख्या है)
  • दूसरा स्कैन और (एनएम) ints कि मुक्त (नहीं सबसेट में पहले से ही कर रहे हैं) के साथ से अपने सबसेट को भरने ।

इस तरह से आप पहले से n ints और एन-मीटर दूसरे माता पिता से ints, दोहराव के बिना होगा।

मेरे लिए एक वैध क्रॉसओवर की तरह लगता है :-)।

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

अगर ऐसा है सबसे अच्छा तरीका समस्या को हल करना चाहते हैं पर निर्भर करता है ...

1

सेट ए और बी को गठबंधन करने के लिए, आप परिणामी सेट एस को संभाव्य रूप से चुन सकते हैं ताकि एक्स में एस की संभावना है (ए, बी, जिसमें एक्स होता है)/2 से यह सेट होगा चौराहे को शामिल करने और संघ में निहित होने की गारंटी दी जाएगी, और कार्डिनालिटी 4 की उम्मीद होगी।

+0

यह काम करता प्रतीत होता है। हालांकि क्या यह बच्चों को उनके माता-पिता के समान ही पैदा करेगा कि पूरी आबादी जल्द ही उसी समाधान में एकत्र हो जाएगी? साथ ही, इस प्रकार की समस्या के लिए एक आम नाम है जैसे कि मैं शोध पत्रों को देखना शुरू कर सकता हूं? – aloo

1

चूंकि ऑर्डर कोई फर्क नहीं पड़ता है, इसलिए सभी संख्याओं को किसी सरणी में एकत्र करें, सरणी को सॉर्ट करें, डुप्लिकेट फेंक दें (उन्हें किसी लिंक की गई सूची से डिस्कनेक्ट करके, या उन्हें ऋणात्मक संख्या में सेट करके, या जो भी हो)। सरणी को घुमाएं और पहले 4 नंबर लें।

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