जेनेटिक एल्गोरिदम (GA) एक विकासवादी दृष्टिकोण पर आधारित हैं, जिसमें किसी समस्या के लिए एक आदर्श समाधान प्राप्त करने के लिए जनसंख्या के विकास की विधियों का उपयोग किया जाता है। इन्हें 1975 में जॉन हेनरी हॉलैंड द्वारा प्रस्तावित किया गया था।
जेनेटिक एल्गोरिदम निम्नलिखित विचारों पर आधारित हैं:
- समस्या के वैध समाधान को जीन के रूप में प्रस्तुत किया जा सकता है।
- क्रॉसओवर हमें दो समाधानों को मिलाकर एक नया वैध समाधान प्राप्त करने की अनुमति देता है।
- चयन का उपयोग कुछ फिटनेस फंक्शन के माध्यम से अधिक आदर्श समाधान चुनने के लिए किया जाता है।
- म्यूटेशन को शामिल किया जाता है ताकि अनुकूलन को अस्थिर किया जा सके और हमें स्थानीय न्यूनतम से बाहर निकाला जा सके।
यदि आप जेनेटिक एल्गोरिदम को लागू करना चाहते हैं, तो आपको निम्नलिखित की आवश्यकता होगी:
- हमारे समस्या समाधान को जीन 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) से बदलें।
- चरण 2 से दोहराएं, जब तक कि fit का मान पर्याप्त रूप से छोटा न हो जाए, या चरणों की संख्या की सीमा तक न पहुंच जाए।
जेनेटिक एल्गोरिदम द्वारा आमतौर पर हल किए जाने वाले कार्यों में शामिल हैं:
- शेड्यूल अनुकूलन
- आदर्श पैकिंग
- आदर्श कटिंग
- थकाऊ खोज को तेज करना
अगले नोटबुक्स में अपनी सीख जारी रखें:
इस नोटबुक पर जाएं और जेनेटिक एल्गोरिदम का उपयोग करने के दो उदाहरण देखें:
- खजाने का निष्पक्ष विभाजन
- 8 क्वीन समस्या
जेनेटिक एल्गोरिदम का उपयोग कई समस्याओं को हल करने के लिए किया जाता है, जिनमें लॉजिस्टिक्स और खोज समस्याएं शामिल हैं। यह क्षेत्र मनोविज्ञान और कंप्यूटर विज्ञान के विषयों को मिलाने वाले शोध से प्रेरित है।
"जेनेटिक एल्गोरिदम को लागू करना आसान है, लेकिन उनके व्यवहार को समझना कठिन है।" स्रोत शोध करें और जेनेटिक एल्गोरिदम के किसी कार्यान्वयन को खोजें, जैसे कि सुडोकू पहेली को हल करना, और इसे स्केच या फ्लोचार्ट के रूप में समझाएं।
इस शानदार वीडियो को देखें, जिसमें बताया गया है कि कंप्यूटर जेनेटिक एल्गोरिदम द्वारा प्रशिक्षित न्यूरल नेटवर्क का उपयोग करके सुपर मारियो खेलना कैसे सीख सकता है। हम इस तरह के खेल खेलने के लिए कंप्यूटर सीखने के बारे में अगले सेक्शन में और अधिक जानेंगे।
आपका लक्ष्य तथाकथित डायोफैंटाइन समीकरण को हल करना है - एक समीकरण जिसमें पूर्णांक मूल होते हैं। उदाहरण के लिए, समीकरण a+2b+3c+4d=30 पर विचार करें। आपको उन पूर्णांक मूलों को खोजना है जो इस समीकरण को संतुष्ट करते हैं।
यह असाइनमेंट इस पोस्ट से प्रेरित है।
संकेत:
- आप मूलों को [0;30] अंतराल में मान सकते हैं।
- जीन के रूप में, मूल्यों की सूची का उपयोग करने पर विचार करें।
Diophantine.ipynb को प्रारंभिक बिंदु के रूप में उपयोग करें।