Programowanie genetyczne to proces używania jednego programu komputerowego do napisania innego programu komputerowego przy użyciu metodologii opartej na algorytmach ewolucyjnych. Proces ten jest często porównywany do programowania liniowego, w którym programista pisze określone instrukcje do wykonania przez komputer. LISP i Scheme są najczęstszymi językami programowania do tego typu pracy ze względu na ich wysoką funkcjonalność i elastyczność. Ze względu na podobieństwo pojęciowe do ewolucji biologicznej, programowanie genetyczne jest często cytowane jako przykład przetwarzania inspirowanego biologią.
Programy genetyczne (GP) działają poprzez generowanie i uruchamianie tysięcy programów i wybierają najbardziej efektywne w użyciu. Na przykład lekarz ogólny może być użyty do stworzenia programu do rysowania szkicu fotografii. Pierwszą rzeczą, jaką zrobiłby lekarz ogólny, jest stworzenie zestawu programów, które wykorzystują różne funkcje komputerowe do rysowania w losowych kombinacjach. Następnie lekarz ogólny uruchamiałby każdy z tych programów w kolejności, wyprowadzając wyniki każdego z nich do plików graficznych.
Następnym krokiem lekarza rodzinnego jest wybranie najlepszego z tych programów z zestawu. Ten proces jest na ogół najtrudniejszą częścią programowania genetycznego. W przypadku programu do rysowania lekarz ogólny używałby oprogramowania do porównywania obrazów, aby określić, który z losowych rysunków był najbardziej podobny do obrazu, który oprogramowanie próbowało narysować. Z losowo generowanych programów lekarz ogólny wybrałby kilka pierwszych, a resztę odrzuciłby. Proces selekcji znany jest jako ocena sprawności i jest powszechnie uważany za najtrudniejszą część programowania genetycznego.
Po wybraniu kilku najlepszych programów lekarz ogólny użyje ich jako podstawy nowej partii programów. Każda nowa partia nazywana jest pokoleniem. Dwa sposoby tworzenia nowej generacji to mutacja i crossover. Mutacja działa poprzez zabranie jednego z istniejących programów i dokonywanie w nim losowych zmian, miejmy nadzieję, że na lepsze. Crossover, zwany także hodowlą, działa poprzez połączenie dwóch najlepszych programów i połączenie ich elementów w celu stworzenia nowych programów.
Po utworzeniu nowej partii programów lekarz ogólny powtarza proces ich uruchamiania i oceny, a następnie powtarza procesy selekcji, eliminacji i generowania. Lekarze rodzinni często przeprowadzają setki pokoleń, zanim znajdą pojedynczy program z zadowalającym wynikiem. Pomimo tego ograniczenia, programowanie genetyczne jest powszechnym sposobem rozwiązywania niektórych rodzajów trudnych problemów obliczeniowych, w tym problemów inżynierii robotycznej i sztucznej inteligencji.