Эволюциялық алгоритмдер

Эволюциялық алгоритмдер — бұл жасанды интеллект бағытындағы (дәлірек айтқанда, эволюциялық есептеулер саласындағы) оңтайландыру және модельдеу есептерін шешуге арналған тәсілдер жиынтығы. Бұл бағыт табиғи сұрыптау және тұқым қуалаушылық секілді биологиялық эволюция механизмдерін математикалық модельдеуге негізделген.Eiben, A. E., Smith, J. E. Introduction to Evolutionary Computing. — Springer, 2003. — ISBN 3-540-40187-6.

Эволюциялық алгоритмдер — бұл іздеудің эвристикалық алгоритмдері. Олар нақты бір есептің жалғыз шешімін іздемей, «популяция» деп аталатын ықтимал шешімдер жиынтығымен жұмыс істейді. Әрбір «индивид» (шешім) арнайы жарамдылық функциясы (fitness function) арқылы бағаланады.

 Жұмыс істеу принципі 
Алгоритм бірнеше негізгі кезеңнен тұратын циклдік процесті орындайды:
 Бастапқы популяция: Кездейсоқ шешімдер жиынтығын құру.
 Бағалау: Әрбір шешімнің тиімділігін (жарамдылығын) есептеу.
 Сұрыптау (Selection): Келесі ұрпаққа ең жақсы нәтиже көрсеткен индивидтерді таңдап алу.
 Генетикалық операторлар:
 Кроссинговер (Будандастыру): Екі шешімнің бөліктерін біріктіріп, жаңа шешім алу.
 Мутация: Шешімнің құрылымына кездейсоқ өзгерістер енгізу.
 Тоқтату шарты: Оңтайлы шешім табылғанша немесе ұрпақтардың белгілі бір санына жеткенше процесс қайталанады.Гладков Л. А., Курейчик В. В., Курейчик В. М. Генетические алгоритмы: Учебное пособие. — 2-е изд. — М: Физматлит, 2006. — 320 с.

 Негізгі бағыттары 
Эволюциялық алгоритмдер бірнеше классикалық бағыттарға бөлінеді:

1. Генетикалық алгоритмдер (Genetic Algorithms)

Бұл — ең кең таралған түрі. Мұнда кез келген шешім (мысалы, маршрут немесе параметр) бинарлық код (0 мен 1) түріндегі "хромосома" ретінде көрсетіледі. Алгоритм осы кодтарды кездейсоқ біріктіру (комбинация) және өзгерту (мутация) арқылы ең тиімді шешімді іздейді.

2. Эволюциялық стратегиялар (Evolutionary Strategies)

Инженерлік есептерді шешуге арналған. Генетикалық алгоритмнен айырмашылығы — мұнда деректер бинарлық код емес, нақты сандар (мысалы, салмақ, ұзындық, температура) түрінде болады. Бұл әдісте тек ең жақсы нәтиже көрсеткен "ұрпақтар" (жағымды мутациялар) ғана келесі кезеңге өтеді.

3. Генетикалық бағдарламалау (Genetic Programming)

Бұл әдіс дайын сандарды емес, компьютерлік бағдарламаның өзін автоматты түрде жасауға немесе өзгертуге арналған. Бағдарлама "ағаш" құрылымы ретінде қарастырылып, оның бұтақтары (функциялары мен айнымалылары) эволюция заңымен ауысып отырады.

4. Эволюциялық бағдарламалау (Evolutionary Programming)

Генетикалық бағдарламалауға ұқсас, бірақ мұнда бағдарламаның құрылымы (қаңқасы) өзгермейді. Тек бағдарламаның ішкі логикасы мен мінез-құлқы (сандық мәндері) оңтайландырылады.

5. Нейроэволюция (Neuroevolution)

Бұл — жасанды нейрондық желілерді эволюциялық жолмен дамыту. Мұнда желінің ішкі байланыстары (салмақтары) немесе оның бүкіл құрылымы (топологиясы) генетикалық алгоритмдер арқылы ең үздік деңгейге жеткізіледі.

 Қолданылуы 
Эволюциялық алгоритмдер дәстүрлі математикалық әдістер тиімсіз болатын күрделі есептерді шешуде қолданылады:
 Робототехника және ұшқышсыз аппараттарды басқару жүйелерін оңтайландыру.
 Күрделі инженерлік конструкцияларды жобалау.
 Машиналық оқытуда нейрондық желілердің құрылымын (CNN) ықшамдау және тиімділігін арттыру.
 Қаржылық нарықтарды болжау және портфельді оңтайландыру.
 Биоинформатика және дәрі-дәрмектерді әзірлеу.

 Дереккөздер 

Санат:Жасанды интеллект
Санат:Алгоритмдер