# ജനിതക ആൽഗോരിതങ്ങൾ ## [പ്രീ-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ai/quiz/41) **ജനിതക ആൽഗോരിതങ്ങൾ** (GA) AI-യിലെ ഒരു **വികാസപരമായ സമീപനം** അടിസ്ഥാനമാക്കിയുള്ളതാണ്, ഇതിൽ ഒരു ജനസംഖ്യയുടെ വികാസ രീതികൾ ഉപയോഗിച്ച് ഒരു നൽകിയ പ്രശ്നത്തിന് ഏറ്റവും അനുയോജ്യമായ പരിഹാരം കണ്ടെത്തുന്നു. 1975-ൽ [ജോൺ ഹെൻറി ഹോളണ്ട്](https://wikipedia.org/wiki/John_Henry_Holland) ഈ ആശയം അവതരിപ്പിച്ചു. ജനിതക ആൽഗോരിതങ്ങൾ താഴെപ്പറയുന്ന ആശയങ്ങളെ അടിസ്ഥാനമാക്കുന്നു: * പ്രശ്നത്തിന് സാധുവായ പരിഹാരങ്ങൾ **ജീനുകൾ** ആയി പ്രതിനിധീകരിക്കാം * **ക്രോസോവർ** ഉപയോഗിച്ച് രണ്ട് പരിഹാരങ്ങൾ ചേർത്ത് പുതിയ ഒരു സാധുവായ പരിഹാരം ലഭ്യമാക്കാം * **തിരഞ്ഞെടുപ്പ്** ചില **ഫിറ്റ്നസ് ഫംഗ്ഷൻ** ഉപയോഗിച്ച് കൂടുതൽ അനുയോജ്യമായ പരിഹാരങ്ങൾ തിരഞ്ഞെടുക്കാൻ ഉപയോഗിക്കുന്നു * **മ്യൂട്ടേഷനുകൾ** പരിഹാരത്തിന്റെ സ്ഥിരത തകർക്കാനും ലോക്കൽ മിനിമത്തിൽ നിന്ന് പുറത്തുവരാനും ഉപയോഗിക്കുന്നു ജനിതക ആൽഗോരിതം നടപ്പിലാക്കാൻ നിങ്ങൾക്ക് താഴെപ്പറയുന്നവ വേണം: * പ്രശ്ന പരിഹാരങ്ങളെ **ജീനുകൾ** g∈Γ ആയി കോഡുചെയ്യാനുള്ള ഒരു രീതി കണ്ടെത്തുക * ജീനുകളുടെ സെറ്റ് Γ-യിൽ **ഫിറ്റ്നസ് ഫംഗ്ഷൻ** fit: Γ→**R** നിർവചിക്കുക. ചെറിയ ഫംഗ്ഷൻ മൂല്യങ്ങൾ മികച്ച പരിഹാരങ്ങളെ സൂചിപ്പിക്കുന്നു. * രണ്ട് ജീനുകൾ ചേർത്ത് പുതിയ സാധുവായ പരിഹാരം ലഭ്യമാക്കാനുള്ള **ക്രോസോവർ** സംവിധാനം crossover: Γ2→Γ നിർവചിക്കുക. * **മ്യൂട്ടേഷൻ** സംവിധാനം mutate: Γ→Γ നിർവചിക്കുക. അധികം സാഹചര്യങ്ങളിൽ, ക്രോസോവർ, മ്യൂട്ടേഷൻ എന്നിവ ജീനുകളെ സംഖ്യാത്മക ശ്രേണികളോ ബിറ്റ് വെക്ടറുകളോ ആയി കൈകാര്യം ചെയ്യാനുള്ള ലളിതമായ ആൽഗോരിതങ്ങളാണ്. ജനിതക ആൽഗോരിതത്തിന്റെ പ്രത്യേക നടപ്പാക്കൽ സാഹചര്യത്തിനനുസരിച്ച് വ്യത്യാസപ്പെടാം, എന്നാൽ പൊതുവായ ഘടന താഴെപ്പറയുന്നവയാണ്: 1. പ്രാരംഭ ജനസംഖ്യ G⊂Γ തിരഞ്ഞെടുക്കുക 2. ഈ ഘട്ടത്തിൽ നടത്തേണ്ട പ്രവർത്തനങ്ങളിൽ നിന്ന് ക്രോസോവർ അല്ലെങ്കിൽ മ്യൂട്ടേഷൻ യാദൃച്ഛികമായി തിരഞ്ഞെടുക്കുക 3. **ക്രോസോവർ**: * ജനസംഖ്യയിൽ നിന്ന് യാദൃച്ഛികമായി രണ്ട് ജീനുകൾ g1, g2 ∈ G തിരഞ്ഞെടുക്കുക * ക്രോസോവർ കണക്കാക്കുക g=crossover(g1,g2) * fit(g)1) അല്ലെങ്കിൽ fit(g)2) ആണെങ്കിൽ - ജനസംഖ്യയിലെ അനുയോജ്യമായ ജീൻ g-ൽ മാറ്റുക. 4. **മ്യൂട്ടേഷൻ** - ജനസംഖ്യയിൽ നിന്ന് യാദൃച്ഛികമായി ഒരു ജീൻ g∈G തിരഞ്ഞെടുക്കുകയും അതിനെ mutate(g) ആയി മാറ്റുകയും ചെയ്യുക 5. ഘട്ടം 2-ൽ നിന്ന് ആവർത്തിക്കുക, fit മൂല്യം ആവശ്യമായത്ര ചെറുതായോ അല്ലെങ്കിൽ ഘട്ടങ്ങളുടെ പരമാവധി പരിധി എത്തിച്ചേരുകയോ ചെയ്യുന്നത് വരെ. ## സാധാരണ ജോലികൾ ജനിതക ആൽഗോരിതങ്ങൾ സാധാരണയായി പരിഹരിക്കുന്ന ജോലികൾ: 1. ഷെഡ്യൂൾ മെച്ചപ്പെടുത്തൽ 1. ഏറ്റവും അനുയോജ്യമായ പാക്കിംഗ് 1. ഏറ്റവും അനുയോജ്യമായ കട്ടിംഗ് 1. സമഗ്രമായ തിരച്ചിൽ വേഗത്തിലാക്കൽ ## ✍️ അഭ്യാസങ്ങൾ: ജനിതക ആൽഗോരിതങ്ങൾ താഴെപ്പറയുന്ന നോട്ട്‌ബുക്കുകളിൽ നിങ്ങളുടെ പഠനം തുടരുക: [ഈ നോട്ട്‌ബുക്ക്](Genetic.ipynb) സന്ദർശിച്ച് ജനിതക ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ചുള്ള രണ്ട് ഉദാഹരണങ്ങൾ കാണുക: 1. നിധിയുടെ നീതിപൂർവ്വമായ വിഭജനം 1. 8 ക്വീൻസ് പ്രശ്നം ## സമാപനം ജനിതക ആൽഗോരിതങ്ങൾ ലജിസ്റ്റിക്സ്, തിരച്ചിൽ പ്രശ്നങ്ങൾ ഉൾപ്പെടെ നിരവധി പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ ഉപയോഗിക്കുന്നു. ഈ മേഖല മനശാസ്ത്രവും കമ്പ്യൂട്ടർ സയൻസും സംയോജിപ്പിച്ച ഗവേഷണത്തിൽ നിന്നാണ് പ്രചോദനം ലഭിച്ചത്. ## 🚀 ചലഞ്ച് "ജനിതക ആൽഗോരിതങ്ങൾ നടപ്പിലാക്കാൻ ലളിതമാണ്, പക്ഷേ അവയുടെ പെരുമാറ്റം മനസ്സിലാക്കാൻ ബുദ്ധിമുട്ടാണ്." [source](https://wikipedia.org/wiki/Genetic_algorithm) ഒരു ജനിതക ആൽഗോരിതത്തിന്റെ നടപ്പാക്കൽ കണ്ടെത്താൻ ഗവേഷണം നടത്തുക, ഉദാഹരണത്തിന് സുദോകു പസിൽ പരിഹരിക്കൽ, അതിന്റെ പ്രവർത്തനം സ്കെച്ച് അല്ലെങ്കിൽ ഫ്ലോചാർട്ട് രൂപത്തിൽ വിശദീകരിക്കുക. ## [പോസ്റ്റ്-ലെക്ചർ ക്വിസ്](https://ff-quizzes.netlify.app/en/ai/quiz/42) ## അവലോകനം & സ്വയം പഠനം [ഈ മികച്ച വീഡിയോ](https://www.youtube.com/watch?v=qv6UVOQ0F44) കാണുക, ജനിതക ആൽഗോരിതങ്ങൾ ഉപയോഗിച്ച് പരിശീലിപ്പിച്ച ന്യൂറൽ നെറ്റ്വർക്കുകൾ ഉപയോഗിച്ച് കമ്പ്യൂട്ടർ സൂപ്പർ മാരിയോ കളിക്കാൻ എങ്ങനെ പഠിക്കാമെന്ന് വിശദീകരിക്കുന്നു. ഇത്തരത്തിലുള്ള ഗെയിമുകൾ കളിക്കാൻ കമ്പ്യൂട്ടർ പഠിക്കുന്നതിനെക്കുറിച്ച് കൂടുതൽ [അടുത്ത ഭാഗത്ത്](../22-DeepRL/README.md) പഠിക്കും. ## [അസൈൻമെന്റ്: ഡയോഫാന്റൈൻ സമവാക്യം](Diophantine.ipynb) നിങ്ങളുടെ ലക്ഷ്യം **ഡയോഫാന്റൈൻ സമവാക്യം** പരിഹരിക്കുകയാണ് - പൂർണ്ണസംഖ്യ മൂല്യങ്ങളുള്ള സമവാക്യം. ഉദാഹരണത്തിന്, a+2b+3c+4d=30 എന്ന സമവാക്യം പരിഗണിക്കുക. ഈ സമവാക്യം തൃപ്തിപ്പെടുത്തുന്ന പൂർണ്ണസംഖ്യ മൂല്യങ്ങൾ കണ്ടെത്തണം. *ഈ അസൈൻമെന്റ് [ഈ പോസ്റ്റ്](https://habr.com/post/128704/) പ്രചോദനമായതാണ്.* സൂചനകൾ: 1. മൂല്യങ്ങൾ [0;30] പരിധിയിലുള്ളവയെന്ന് കരുതാം 1. ജീനായി മൂല്യങ്ങളുടെ പട്ടിക ഉപയോഗിക്കുക ആരംഭം ആയി [Diophantine.ipynb](Diophantine.ipynb) ഉപയോഗിക്കുക. --- **അസൂയാ**: ഈ രേഖ AI വിവർത്തന സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. നാം കൃത്യതയ്ക്ക് ശ്രമിച്ചെങ്കിലും, സ്വയം പ്രവർത്തിക്കുന്ന വിവർത്തനങ്ങളിൽ പിശകുകൾ അല്ലെങ്കിൽ തെറ്റുകൾ ഉണ്ടാകാമെന്ന് ദയവായി ശ്രദ്ധിക്കുക. അതിന്റെ മാതൃഭാഷയിലുള്ള യഥാർത്ഥ രേഖ അധികാരപരമായ ഉറവിടമായി കണക്കാക്കണം. നിർണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യ വിവർത്തനം ശുപാർശ ചെയ്യപ്പെടുന്നു. ഈ വിവർത്തനം ഉപയോഗിക്കുന്നതിൽ നിന്നുണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്കോ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കോ ഞങ്ങൾ ഉത്തരവാദികളല്ല.