изображението е от freepik

Темата, която, когато чуете, ви кара да мислите като „Как можете да комбинирате генетични и алгоритъм един друг?“ Да, точно същото си помислих. Когато бях в първи клас по програмиране, учителят започна да пита за биология. Помислих си „В час по биология ли сме?“. Той попита като „Дете може да се направи с 2+ родители, нали?“. Какво как? Мислите, че е невъзможно. Но тук е шибаният компютърен свят. Всичко може да е възможно. Той зададе няколко странни въпроса, след което показа окончателния ни изпит PDF. В PDF генетичният алгоритъм е обяснен как работи.

Пример:

Да си помислим, че едно дете съществува само с 4 квалификации. Това са цвят на косата, цвят на очите, височина и пол. Трябва да определим квалификациите на детето, което искаме. И всяко поколение може да отглежда максимум 5 деца. Всяко дете има фитнес резултат. Какво е фитнес резултат? Да кажем, че имаме дете с кафява коса, черни очи, високо и женско. Детето, което искаме, трябва да е с кафява коса, сини очи, високо и мъжко. Кои квалификации са еднакви? Цвят на косата и височина. Така че фитнес резултатът на деца, които имат кестенява коса, черни очи, високи и женски, е 2. Само произволни двоични комбинации от 3 души, които повечето имат фитнес резултат (здрави), ще бъдат избрани за размножаване във всяко поколение. Едно дете може да вземе ген от майка с 45% вероятност и от баща с 45% вероятност. Те ще направят 5 деца - значи правят поколение - след което няма да могат да се размножават повече. Правим го, защото ще бъдем по-близо до детето, което искаме. Само помислете, ако искате дете с кафява коса, трябва да изберете родители с кафява коса, нали? Между другото, има мутационен фактор. Защото мутацията е в живота, нали? Да приемем, че възможността за мутационен фактор е 10%. Когато имате родители, които и двамата имат кафява коса, можете да имате дете с розова коса. В първото поколение може да има 2 родители с определени гени или можете да направите произволни 5 деца от генофонда. Това зависи от теб.

Всичко е готово! Така че нека започнем.

Цветен генофонд={a,b,c,d,e,f,g} (Всяка дума представя цвят)

Пол генофонд={Ж,М} (Ж=жена, М=мъж)

Ръст генофонд={S,M,T} (S=нисък,M=среден,T=висок)

Определение за хромозома:

a c S F | Това е примерен човек (хромозома)

Първият ген представя цвета на косата. Вторият ген представя цвета на очите. Третият ген представя височината. 4-ти ген представя пола.

Всеки ген може да вземе ген само от своя генофонд. Първият и вторият ген не могат да бъдат F,M,S,M,T.

Ще избера конкретни майка и баща.

Майка = d f S F

Баща = a d T M

Правят 5 деца.

Второ поколение= { a f S M , d f T M , c a MF , a d M F , g bS F } (Мутациите са отбелязани с удебелен шрифт.)

Тогава 2 от хората с най-много фитнес резултат ще направят 5 деца и те ще направят трето поколение. Ще продължи отново и отново, докато не намерим детето, което искаме.

Когато намерим детето, което искаме, всичко ще спре. Постигнахме!

Кодирах генетичен алгоритъм на език за програмиране C. Но можете да кодирате и на различни езици.

Надявам се, че ще ви бъде полезно :)