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