Programarea genetică este procesul de utilizare a unui program de calculator pentru a scrie un alt program de calculator folosind o metodologie bazată pe algoritmi evolutivi. Acest proces este adesea comparat cu programarea liniară, în care programatorul scrie instrucțiuni specifice pentru ca computerul să le realizeze. LISP și Scheme sunt cele mai comune limbaje de programare pentru acest tip de lucru datorită funcționalității și flexibilității lor de nivel înalt. Ca rezultat al similitudinii sale conceptuale cu evoluția biologică, programarea genetică este adesea citată ca exemplu de calcul bio-inspirat.
Programele genetice (GP) funcționează prin generarea și rularea mii de programe și alege cele mai eficiente de utilizat. De exemplu, un GP poate fi folosit pentru a crea un program pentru a desena o schiță a unei fotografii. Primul lucru pe care l-ar face medicul de familie este să creeze un set de programe care utilizează diverse funcții de desen pe computer în combinații aleatorii. Apoi, GP ar rula fiecare dintre aceste programe în ordine, afișând rezultatele fiecăruia în fișiere imagine.
Următorul pas pentru medicul de familie este selectarea celor mai bune dintre aceste programe din set. Acest proces este în general cea mai dificilă parte a programării genetice. În cazul programului de desen, GP ar folosi un software de comparare a imaginilor pentru a determina care dintre desenele aleatorii se aseamănă cel mai mult cu imaginea pe care software-ul încerca să o deseneze. Dintre programele generate aleatoriu, GP ar selecta primele câteva și le-ar arunca pe celelalte. Procesul de selecție este cunoscut sub numele de evaluare a fitnessului și este, în general, considerat a fi cea mai dificilă parte a programării genetice.
Odată ce primele câteva programe au fost selectate, medicul de familie le va folosi ca bază pentru un nou lot de programe. Fiecare lot nou se numește generație. Cele două moduri de a crea noua generație sunt mutația și încrucișarea. Mutația funcționează luând unul dintre programele existente și făcându-i modificări aleatorii, sperăm în bine. Crossover, numit și reproducere, funcționează prin luarea a două dintre programele de top și combinând elemente ale acestora pentru a crea programe noi.
După crearea unui nou lot de programe, GP repetă procesul de rulare și evaluare a acestora, apoi repetă procesele de selecție, eliminare și generare. Medicii de familie vor rula frecvent sute de generații înainte de a găsi un singur program cu un rezultat satisfăcător. În ciuda acestei limitări, programarea genetică este o modalitate obișnuită de a rezolva unele tipuri de probleme de calcul dificile, inclusiv probleme de inginerie robotică și inteligență artificială.