Kas yra genetinis programavimas?

Genetinis programavimas – tai procesas, kai naudojant vieną kompiuterio programą rašant kitą kompiuterinę programą, naudojant evoliuciniu algoritmu pagrįstą metodiką. Šis procesas dažnai lyginamas su linijiniu programavimu, kai programuotojas rašo konkrečias kompiuterio instrukcijas. LISP ir Scheme yra labiausiai paplitusios programavimo kalbos tokio tipo darbui dėl savo aukšto lygio funkcionalumo ir lankstumo. Dėl savo konceptualaus panašumo į biologinę evoliuciją genetinis programavimas dažnai minimas kaip biologiškai įkvėpto skaičiavimo pavyzdys.

Genetinės programos (GP) dirba generuodamos ir paleisdamos tūkstančius programų ir pasirenka efektyviausias naudoti. Pavyzdžiui, šeimos gydytojas gali būti naudojamas kuriant programą nuotraukos eskizui nupiešti. Pirmas dalykas, kurį padarytų GP, būtų sukurti programų rinkinį, kuris atsitiktiniais deriniais naudoja įvairias kompiuterinio piešimo funkcijas. Tada GP paleisti kiekvieną iš šių programų eilės tvarka, išvesdamas kiekvienos iš šių programų rezultatus į vaizdo failus.

Kitas šeimos gydytojo žingsnis yra iš rinkinio atrinkti geriausią iš tų programų. Šis procesas paprastai yra sunkiausia genetinio programavimo dalis. Piešimo programos atveju GP naudotų vaizdų palyginimo programinę įrangą, kad nustatytų, kuris iš atsitiktinių brėžinių buvo panašiausias į vaizdą, kurį programinė įranga bandė nupiešti. Iš atsitiktinai sugeneruotų programų šeimos gydytojas pasirinktų kelias geriausias, o likusias išmestų. Atrankos procesas žinomas kaip tinkamumo vertinimas ir paprastai laikomas sunkiausia genetinio programavimo dalimi.

Kai bus atrinktos kelios populiariausios programos, šeimos gydytojas jas naudos kaip naujos programų paketo pagrindą. Kiekviena nauja partija vadinama karta. Du būdai sukurti naują kartą yra mutacija ir kryžminimas. Mutacija veikia paimant vieną iš esamų programų ir atsitiktinai ją keičiant, tikiuosi, kad bus geriau. „Crossover“, dar vadinamas veisimu, veikia paimdamas dvi populiariausias programas ir sujungdamas jų elementus, kad sukurtų naujas programas.

Sukūręs naują programų paketą, GP pakartoja jų paleidimo ir įvertinimo procesą, o tada kartoja atrankos, pašalinimo ir generavimo procesus. Šeimos gydytojai dažnai dirbs šimtus kartų, kol suras vieną programą su patenkinamu rezultatu. Nepaisant šio apribojimo, genetinis programavimas yra įprastas būdas išspręsti kai kurias sudėtingas skaičiavimo problemas, įskaitant robotų inžineriją ir dirbtinio intelekto problemas.