Գենետիկական ծրագրավորում

Արհեստական բանականության մեջ  գենետիկական ծրագրավորումը (անգլ.՝ genetic programming) ծրագրերի ավտոմատ ստեղծումը կամ փոփոխումն է՝ գենետիկական ալգորիթմների օգնությամբ։ Այս մեթոդաբանության շնորհիվ ծրագրերը «աճում են», որոնք ավելի  և ավելի լավ են (ըստ քրոմոսոմ խնդրի համար հատուկ գործառույթով) լուծում  հաշվողական խնդիր:Այն, ըստ էության, հեուրիստական ​​որոնման տեխնիկա է, որը հաճախ նկարագրվում է որպես «բլուր բարձրանալ», այսինքն բոլոր ծրագրերի տարածության մեջ օպտիմալ կամ գոնե հարմար ծրագրի որոնում։
Գործողությունները հետևյալն են.
Քրոսովերի գործողությունը ներառում է ընտրված զույգերի (ծնողների) պատահական մասերի փոխանակում ՝ նոր և տարբեր սերունդներ արտադրելու համար, որոնք   ծրագրերի նոր սերնդի մաս են դառնում։ Փոփոխությունը ենթադրում է ծրագրի որոշ պատահական մասի փոխարինում ծրագրի որոշ այլ պատահական մասի հետ։ - Վերարտադրության համար չընտրված որոշ ծրագրեր ընդօրինակվում են ներկայիս սերնդից  նոր սերնդի համար։ Այնուհետև ընտրությունը և այլ գործողություններ հետադարձաբար կիրառվում են նոր սերնդի ծրագրերի վրա։ Սովորաբար, յուրաքանչյուր նոր սերնդի ծրագրեր միջին հաշվով ավելի հարմար են, քան նախորդ սերնդի ծրագրերը, իսկ սերնդի լավագույն ծրագիրը հաճախ ավելի լավն է, քան նախորդ սերունդների լավագույն ծրագրերը։


== Պատմություն ==
Ծրագրերը զարգացնելու առաջարկի առաջին գրառումը, հավանաբար, Alan Turing- ի գրառումն էր 1950 թ-ին։ Կար մի բացթողում 25 տարի առաջ  մինչև  Ջոն Հոլլանդի «Ադապտացիան բնական և արհեստական ​​համակարգերում » հրապարակումը նախանշեց  գիտության տեսական և էմպիրիկ հիմքերը։ 1981 թ.-ին Ռիչարդ Ֆորսիթը ցույց տվեց փոքր ծրագրերի հաջող զարգացումը, որոնք ներկայացված են որպես ծառեր ՝ կատարելու հանցագործությունների տեսարանների ապացույցների դասակարգումը՝ Միացյալ Թագավորության Ներքին գործերի գրասենյակի համար։
Չնայած զարգացող ծրագրերի գաղափարը (սկզբում համակարգչային լեզվով Lisp ) առկա էր Ջոն Հոլլանդի ուսանողների մեջ, դա այդպես չէր մինչ այն ժամանակ, երբ  Փիթսբուրգում կազմակերպվեց գենետիկական ալգորիթմների առաջին գիտաժողովը, որի ընթացքում Michael Cramer- ը  հրապարակեց զարգացած ծրագրերի երկու հատուկ մշակված լեզուներ։ 1988-ին  Կոզան ( Հոլլանդի ասպիրանտ) արտոնագրեց իր գիտնականի գյուտը ծրագրի զարգացման համար։ Դրան հաջորդեց «Արհեստական ​​ինտելեկտի միջազգային IJCAI-89»  հրապարակումը միջազգային համատեղ համաժողովում ։
Կոզան հետևեց դրան  «Գենետիկ ծրագրավորում» (GP)-ի 205 հրապարակումներով։ Այնուամենայնիվ, դա Կոզայի 4 գրքերի շարքն է ՝ 1992 թվականից  սկսած ուղեկցող տեսանյութերով,  որոնք իսկապես ստեղծեցին GP- ն։ Դրանից հետո տեղի ունեցավ գենետիկական ծրագրավորման մատենագրության հետ հրատարակությունների քանակի ահռելի ընդլայնում ՝ գերազանցելով 10,000 գրառում։  2010 թվականին Կոզան  թվարկեց 77 արդյունք, որտեղ գենետիկական ծրագրավորումը մարդկային մրցակցություն էր։
1996 թ.-ին Կոզան սկսեց գենետիկական ծրագրավորման ամենամյա գիտաժողովը  , որին հաջորդեց 1998-ին ՝ EuroGP ամենամյա կոնֆերանսը,  և առաջին գիրքը  `Koza- ի խմբագրած GP շարքից։ 1998 թվականին լույս տեսավ նաև առաջին GP դասագիրքը։


== Հիմնարար աշխատանք ԳՊ-ում ==
Վաղ աշխատանքները, որոնք հիմք են հանդիսանում ներկայիս գենետիկական ծրագրավորման հետազոտության թեմաների և կիրառությունների համար, բազմազան են և ներառում են ծրագրային ապահովման սինթեզ և նորոգում, կանխատեսման մոդելավորում, տվյալների հանքարդյունաբերություն,  ֆինանսական մոդելավորում, փափուկ տվիչներ,  ձևավորում և պատկերի վերամշակում։  Որոշ ոլորտներում կիրառումները, ինչպիսիք են դիզայնը, հաճախ օգտագործում են միջանկյալ ներկայացուցչություններում,  ինչպիսին է Ֆրեդ Գրուուի բջջային կոդավորումը։  Արդյունաբերական կլանումը նշանակալի է մի քանի ոլորտներում, ներառյալ ֆինանսները, քիմիական արդյունաբերությունը, կենսաֆորմատիկան  և պողպատե արդյունաբերությունը։


== Մեթոդներ ==


==== Ընտրություն ====
Ընտրությունն այն գործընթացն է, որի միջոցով որոշակի ծրագրեր ընտրվում են ներկայիս սերնդից, որոնք որպես սերունդ ծառայելու են հաջորդ սերնդի համար։ ծրագիրները ընտրվում են այն հավանականքւթյամբ, որ  ավելի լավ իրենց ներկայացնող ծրագրերը  ավելի մեծ հավանականություն ունեն ընտրվելու։ GP- ում ամենատարածված ընտրության մեթոդը մրցաշարի ընտրությունն է , չնայած կան այլ մեթոդներ, ինչպիսիք են ֆիթնես համաչափ ընտրությունը , լեքսեքսազի ընտրությունը,  և այլն, որոնք ցույց են տվել, որ ավելի լավ են լուծում GP- ի շատ խնդիրների համար։


==== Crossover ====
Վերոհիշյալ նկարագրության ընտրության փուլում ընտրված անհատների նկատմամբ կիրառվում են տարբեր գենետիկ օպերատորներ` նոր ծրագրեր ստեղծելու համար։ Այս օպերատորների կիրառման որոշումը կատարում է բնակչության բազմազանությունը։


==== Մուտացիա ====
Վերցնենք նախորդ սերունդից մեկ կամ մի քանի բիթեր `նոր ծրագիր կամ սերունդ ստեղծելու համար։


== Ծրագրեր ==
GP- ն հաջողությամբ օգտագործվել է որպես ավտոմատ ծրագրավորման գործիք, մեքենայական ուսուցման գործիք և ավտոմատ խնդիրների լուծման շարժիչ:GP- ն հատկապես օգտակար է այն տիրույթներում, որտեղ լուծման ճշգրիտ ձևը նախապես հայտնի չէ կամ մոտավոր լուծումը ընդունելի է (հնարավոր է, որ ճշգրիտ լուծում գտնելը շատ դժվար է)։ GP- ի որոշ դիմումներից են կորի տեղավորումը, տվյալների մոդելավորումը, խորհրդանշական հետընթացը , հնարավորությունների ընտրությունը , դասակարգումը և այլն։ Ռ. Կոզան նշում է 76 դեպքերի մասին, երբ գենետիկ ծրագրավորումը կարողացել է ունենալ այնպիսի արդյունքներ, որոնք մրցակցային են մարդու արտադրած արդյունքների հետ (կոչվում է Մարդ -մրցակցային արդյունքներ)։ 2004 թվականից ի վեր Գենետիկական և էվոլյուցիոն հաշվարկների ամենամյա գիտաժողովը (GECCO) անցկացնում է Human Competitive Awards  մրցույթը,  որտեղ դրամական պարգևները տրվում են մարդկային մրցակցային արդյունքներին, որոնք արտադրվում են գենետիկական և էվոլյուցիոն հաշվարկների ցանկացած ձևով։ GP- ն տարիների ընթացքում այս մրցույթում շահել է բազմաթիվ մրցանակներ։


== Մետա-գենետիկական ծրագրավորում ==
Մետա-գենետիկական ծրագրավորումն ինքնին գենետիկ ծրագրավորման համակարգի զարգացման մետա-ուսուցման մեթոդն է։ Այն ենթադրում է, որ քրոմոսոմները, խաչաձևությունը և մուտացիան ինքնին զարգացել են, հետևաբար, ինչպես իրենց իրական կյանքի գործընկերները պետք է թույլատրվեն փոխվել ինքնուրույն, այլ ոչ թե որոշվել ծրագրավորողի կողմից։
Այս գաղափարի քննադատողները հաճախ ասում են, որ այս մոտեցումը չափազանց լայն է։ Այնուամենայնիվ, հնարավոր է սահմանափակել ֆիթնեսի չափանիշը արդյունքների ընդհանուր դասի վրա և, այդպիսով, ձեռք բերել զարգացած բժիշկ, որն առավել արդյունավետ արդյունք կտա ենթա դասերի համար։ Սա կարող է լինել մետա-զարգացած GP- ի ձև `մարդկային քայլելու ալգորիթմների ձևավորման համար, որն այնուհետև կօգտագործվի մարդու վազքի, թռչկոտելու և այլ բաներ զարգացնելու համար։


= Գրականություն =
Արդյունաբերությունը Գենետիկ Ալգորիթմներում Archived 2021-01-14 at the Stanford Web Archive
Գենետիկ ծրագրավորման թեորեմը և կիրառությունը
Գենետիկական ծրագրավորում և տվյալների կառուցվածքներ
Գենետիկական ծրագրավորման դաշտային ուղեցույց
Գենետիկական Ծրագրավորում


== Ծանոթագրություններ ==


= Արտաքին հղումներ =
Aymen S Saket & Mark C Sinclair
Genetic Programming and Evolvable Machines
GP bibliography
The Hitch-Hiker's Guide to Evolutionary Computation Archived 2010-04-06 at the Wayback Machine.
A Field Guide to Genetic Programming Archived 2011-06-16 at the Wayback Machine.
Genetic Programming, a community maintained resource