La programmazione genetica è un modello di programmazione che utilizza le idee (e parte della terminologia) dell'evoluzione biologica per gestire un problema complesso. Di una serie di programmi possibili (di solito piccoli programmi funzionano all'interno di un'applicazione più ampia), i programmi più efficaci sopravvivono e competono o si incrociano con altri programmi per avvicinarsi continuamente alla soluzione necessaria. La programmazione genetica è un approccio che sembra più appropriato con problemi in cui ci sono un gran numero di variabili fluttuanti come quelle legate all'intelligenza artificiale. Il modello di programmazione genetica viene utilizzato principalmente con i linguaggi di programmazione LISP e Scheme. Tuttavia, può essere utilizzato anche con C e altri linguaggi di programmazione.
La programmazione genetica può essere vista come un'estensione di algoritmo genetico , un modello per testare e selezionare la scelta migliore tra una serie di risultati, ciascuno rappresentato da una stringa. La programmazione genetica fa un passo avanti e rende il programma o "funzione" l'unità che viene testata. Per selezionare il programma di successo vengono utilizzati due approcci: il cross-breeding e l'approccio del torneo o della competizione. Una parte difficile dell'utilizzo della programmazione genetica è determinante la funzione fitness , il grado in cui un programma sta aiutando a raggiungere l'obiettivo desiderato. Un semplice esempio di un compito adatto alla programmazione genetica sarebbe ideare un programma per sparare con una pistola. La distanza di cui il proiettile manca il bersaglio determinerebbe la funzione fitness.
La programmazione genetica è un nuovo approccio stimolante che richiede un notevole investimento di apprendimento per il programmatore.