जेनेटिक एल्गोरिथमहरू (GA) कृत्रिम बुद्धिमत्ताको उत्क्रमणात्मक दृष्टिकोणमा आधारित छन्, जसमा जनसंख्याको उत्क्रमण विधिहरू प्रयोग गरेर कुनै समस्या समाधानको लागि उत्तम समाधान प्राप्त गरिन्छ। यी एल्गोरिथमहरू सन् १९७५ मा जोन हेनरी हल्याण्ड द्वारा प्रस्तावित गरिएको थियो।
जेनेटिक एल्गोरिथमहरू निम्न विचारहरूमा आधारित छन्:
- समस्याको वैध समाधानलाई जीनहरूको रूपमा प्रतिनिधित्व गर्न सकिन्छ।
- क्रसओभरले दुई समाधानलाई मिलाएर नयाँ वैध समाधान प्राप्त गर्न मद्दत गर्दछ।
- चयनले कुनै फिटनेस फङ्सन प्रयोग गरेर अधिकतम समाधानहरू चयन गर्न मद्दत गर्दछ।
- म्युटेसनहरूलाई परिचय गराएर अनुकूलनलाई अस्थिर बनाइन्छ र स्थानीय न्यूनतमबाट बाहिर निकालिन्छ।
यदि तपाईं जेनेटिक एल्गोरिथम कार्यान्वयन गर्न चाहनुहुन्छ भने, तपाईंलाई निम्न आवश्यक छ:
- जीनहरू g∈Γ प्रयोग गरेर समस्या समाधानको कोडिङ विधि पत्ता लगाउनुहोस्।
- जीनहरूको सेट Γमा फिटनेस फङ्सन fit: Γ→R परिभाषित गर्नुहोस्। सानो फङ्सन मानहरू राम्रो समाधानसँग मेल खान्छ।
- दुई जीनहरूलाई मिलाएर नयाँ वैध समाधान प्राप्त गर्न क्रसओभर मेकानिज्म परिभाषित गर्नुहोस् crossover: Γ2→Γ।
- म्युटेसन मेकानिज्म परिभाषित गर्नुहोस् mutate: Γ→Γ।
धेरै अवस्थामा, क्रसओभर र म्युटेसन जीनहरूलाई संख्यात्मक अनुक्रम वा बिट भेक्टरको रूपमा हेरफेर गर्ने सरल एल्गोरिथमहरू हुन्।
जेनेटिक एल्गोरिथमको विशिष्ट कार्यान्वयन केस अनुसार फरक हुन सक्छ, तर समग्र संरचना निम्नानुसार छ:
- प्रारम्भिक जनसंख्या चयन गर्नुहोस् G⊂Γ
- यस चरणमा प्रदर्शन गरिने अपरेशनहरू मध्ये एकलाई अनियमित रूपमा चयन गर्नुहोस्: क्रसओभर वा म्युटेसन
- क्रसओभर:
- अनियमित रूपमा दुई जीनहरू चयन गर्नुहोस् g1, g2 ∈ G
- क्रसओभर गणना गर्नुहोस् g=crossover(g1,g2)
- यदि fit(g)<fit(g1) वा fit(g)<fit(g2) - जनसंख्यामा सम्बन्धित जीनलाई g द्वारा प्रतिस्थापन गर्नुहोस्।
- म्युटेसन - अनियमित रूपमा जीन g∈G चयन गर्नुहोस् र यसलाई mutate(g) द्वारा प्रतिस्थापन गर्नुहोस्।
- चरण २ बाट दोहोर्याउनुहोस्, जबसम्म fit को मान पर्याप्त सानो हुँदैन वा चरणहरूको सीमामा पुग्दैन।
जेनेटिक एल्गोरिथमहरूले सामान्यतया समाधान गर्ने कार्यहरूमा समावेश छन्:
- तालिका अनुकूलन
- उत्तम प्याकिङ
- उत्तम काट्ने विधि
- थकानपूर्ण खोजलाई तीव्र बनाउने
निम्न नोटबुकहरूमा आफ्नो सिकाइ जारी राख्नुहोस्:
यस नोटबुकमा जानुहोस् जेनेटिक एल्गोरिथमहरूको प्रयोगका दुई उदाहरणहरू हेर्न:
- खजाना निष्पक्ष विभाजन
- ८ क्वीन समस्या
जेनेटिक एल्गोरिथमहरू धेरै समस्याहरू समाधान गर्न प्रयोग गरिन्छ, जसमा रसद र खोज समस्याहरू समावेश छन्। यो क्षेत्र मनोविज्ञान र कम्प्युटर विज्ञानको विषयहरूलाई मिलाएर गरिएको अनुसन्धानबाट प्रेरित छ।
"जेनेटिक एल्गोरिथमहरू कार्यान्वयन गर्न सरल छन्, तर तिनीहरूको व्यवहार बुझ्न गाह्रो छ।" स्रोत कुनै जेनेटिक एल्गोरिथमको कार्यान्वयन जस्तै सुडोकु पजल समाधान गर्ने विधि खोज्नुहोस्, र यसले कसरी काम गर्छ भन्ने कुरा स्केच वा फ्लोचार्टको रूपमा व्याख्या गर्नुहोस्।
यो उत्कृष्ट भिडियो हेर्नुहोस् जसले कम्प्युटरले जेनेटिक एल्गोरिथमद्वारा प्रशिक्षित न्युरल नेटवर्क प्रयोग गरेर सुपर मारियो खेल्न सिक्न सक्ने कुरा बताउँछ। हामी यस्तो खेल खेल्न कम्प्युटर सिक्नको बारेमा अर्को खण्डमा थप सिक्नेछौं।
तपाईंको लक्ष्य तथाकथित डायोफेन्टाइन समीकरण - पूर्णांक जरा भएको समीकरण समाधान गर्नु हो। उदाहरणका लागि, समीकरण a+2b+3c+4d=30 विचार गर्नुहोस्। तपाईंले यस समीकरणलाई सन्तुष्ट पार्ने पूर्णांक जरा पत्ता लगाउनुपर्छ।
यो असाइनमेन्ट यो पोस्टबाट प्रेरित छ।
सुझावहरू:
- जराहरूलाई [0;30] अन्तरालमा विचार गर्न सक्नुहुन्छ।
- जीनको रूपमा, जराको मानहरूको सूची प्रयोग गर्न विचार गर्नुहोस्।
Diophantine.ipynbलाई सुरुवात बिन्दुको रूपमा प्रयोग गर्नुहोस्।