Rappresentazioni non binarie

Un cromosoma  è una sequenza di simboli e questi simboli sono cifre binarie, così ciascun simbolo ha cardinalità di due. Alfabeti con alte cardinalità sono stati usati in varie ricerche e alcuni ritengono che siano vantaggiosi. Secondo Goldberg la rappresentazione binaria dà il più grande numero di schemi, e fornisce il più alto grado di parallelismo implicito, mentre Antonisse interpreta gli schemi differentemente e conclude che gli alfabeti con alte cardinalità contengono più schemi di quelli binari (è ancora argomento di discussioni).
Studi empirici sugli alfabeti con alte cardinalità hanno usato cromosomi dove ciascun simbolo rappresenta un intero o un floating point. Infatti  poiché i parametri del problema sono spesso numerici, rappresentarli direttamente come numeri, anziché come cifre binarie,  è un vantaggio. Così possiamo definire facilmente degli operatori di crossover e mutazione specifici:

Operatori di combinazione
- Media: prende la media aritmetica dei geni dei due genitori.
- Media Geometrica: prende la radice quadrata del prodotto dei due valori.
- Extension: prende la differenza tra due valori e la aggiunge al più alto o la sottrae al più basso.

Operatori di mutazione
- Rimpiazzamento casuale: rimpiazza un valore con uno casuale.
- Creep: aggiunge o sottrae un piccolo numero generato casualmente.
- Geometric Creep: moltiplica per un valore prossimo a 1.

Per entrambi gli operatori creep il numero generato casualmente può avere diverse distribuzioni: uniforme dentro un dato range, esponenziale, gaussiana, binomiale etc.

Codifica con Permutazione

La codifica con permutazione può essere usata in problemi di ordinamento, come il problema del commesso viaggiatore.

Con questa codifica, tutti i  cromosomi sono una stringa di numeri.
Esempio:
Cromosoma A    1  5  3  2  6  4  7  9  8
Cromosoma B    8  5  6  7  2  3  1  4  9
 

Nei problemi di ordinamento per alcuni tipi di crossover and mutazione devono essere fatte correzioni  per non compromettere la consistenza del cromosoma (cioè  avere una sequenza reale in esso).
 
 

Codifica per valore

Una codifica col valore diretto può essere usata in problemi dove si usano valori complicati come i numeri reali. L’uso di una codifica binaria per questo tipo di problemi sarebbe molto difficile.

In questa codifica, ogni cromosoma è una stringa di alcuni valori. I valori possono essere qualsiasi cosa correlata al problema: da interi, numeri reali o caratteri fino ad alcuni oggetti complicati.

Esempio:

Cromosoma A1.2324  5.3243  0.4556  2.3293  2.4545

Cromosoma  B ABDJEIFJDHDIERJFDLDFLFEGT

Cromosoma C  (back), (back), (right), (forward), (left)

 
La codifica per valore è molto buona per alcuni problemi speciali. D’altra parte, per questa codifica è spesso necessario costruire nuovi operatori crossover e mutazione specifici per il problema.

Codifica ad albero

La codifica ad albero è usata principalmente per programmi evolutivi or espressioni, per la programmazione genetica.

In questa codifica ogni cromosoma è un albero di alcuni oggetti, come funzioni o comandi in linguaggio di programmazione.

Il linguaggio LISP è spesso usato con questa codifica, perché  in esso i programmi sono scritti in questa forma  e possono essere facilmente analizzati come un albero, in questo modo crossover e mutazione possono essere fatti in modo relativamente facile.