Nicchia e Specificazione

Negli ecosistemi  naturali, ci sono molti modi differenti con i quali gli animali possono sopravvivere: cacciando, sottoterra, sugli alberi, pascolando eccetera. E le differenti specie evolvono per riempire ciascuno la sua nicchia ecologica. La specificazione è il processo nel quale una singola specie si differenzia  in due o più specie che occupano differenti nicchie.
Negli algoritmi genetici le nicchie sono il massimo della funzione fitness. Alcune volte abbiamo funzioni fitness multimodali di vogliamo localizzare tutti i picchi. Sfortunatamente i GA tradizionali non riescono a fare questo; l’intera popolazione converge in un singolo picco. Naturalmente dovremmo aspettarci che la popolazione di un Ga converga a un picco con alto fitness, ma possono esserci altri picchi uguale fitness e il GA andrà  a finire su uno di questi. Questo è dovuto allo “spostamento genetico" . Alcune modifiche per il GA tradizionale sono state proposte per risolvere questo problema tutte basate sugli ecosistemi naturali. Le due tecniche base sono per mantenere la diversità e per raggiungere il “costo” associato a una nicchia.
Cavicchio ha introdotto un meccanismo che ha introdotto preselezione, dove un figlio, se ha un fitness maggiore del genitore con fitness più basso, lo rimpiazza. Quindi c’è una competizione tra genitori e figli,  il costo non viene condiviso, ma il vincitore lo prende tutto. Questo metodo aiuta la mantenere diversità in quanto le stringhe tendono a rimpiazzarne altre che sono simili a loro, e  così si previene la convergenza in un singolo massimo.
Molti problemi sorgono col metodo delle nicchie se ci sono molti massimi locali con fitness vicino al massimo globale. Una tecnica che distribuisce i membri della popolazione nei picchi in proporzione al fitness di questi ultimi, non riesce a trovare facilmente il massimo globale se ci sono più picchi di quanti sono i membri della popolazione.
Un differente approccio è quello fornito da Breasley, Bull e Martin noto come “nicchie sequenziali”  che si basa su esecuzioni multiple del GA: ciascuna di esse localizza un picco e la sua funzione fitness viene modificata in modo che il picco venga “cancellato”  e questo ci assicura che in una esecuzione successiva non venga ritrovato. Il GA quindi riparte con una nuova popolazione e in questo modo viene localizzato un nuovo picco per ogni esecuzione.