Algoritmo genetico limite selezione selezione da selezionare

2

Ho ricominciato a lavorare su un Algoritmo Genetico e sto provando un sacco di operatori e modi di selezione. Quando ho fatto la selezione del torneo, ho notato che è molto facile ottenere sempre le persone migliori da selezionare e quelle più piccole hanno meno possibilità di essere selezionate. Ho visto alcuni metodi di soluzione, come implementare alcune "probabilità di selezione" per l'individuo che vince il torneo in modo che se non passa attraverso la probabilità che dà possibilità agli altri che hanno perso.

Altro metodo che ho letto è stato quello di dare a ciascun individuo un limite di quante volte poteva essere selezionato, ma su quel documento non c'era modo di creare questo "limite". Quindi comincio a pensare di usare la% che ogni individuo rappresenta con la sua forma fisica. Ad esempio:

ind 1: 10% 'fino al 100% va 10x
ind 2: 40% 'fino al 100% va da 2 a 3x
ind 3: 8% 'fino al 100% va da 10 a 12x
ind 4: 30% 'fino al 100% va da 3 a 4x

o utilizzando l'inverso%
ind 1 potrebbe essere selezionato 90% del numero di tornei (o turni)
ind 2 potrebbe essere selezionato al 60% ...
ind 3 potrebbe essere selezionato 92% ...
ind 4 potrebbe essere selezionato 70% ...

Questa è solo una rapida idea, nulla di complesso. Quello che mi piacerebbe sapere è se c'è qualche documento che potrei trovare che mostra qualche metodo per creare questi limiti o se conosci o hai qualche idea / opinione che potrebbe migliorare questo.

    
posta RubenC 22.01.2015 - 16:49
fonte

1 risposta

2

In primo luogo, quando si implementano algoritmi genetici è necessario tenere a mente un paio di cose:

Quasi tutto in GA è arbitrario. La tua soluzione dipenderà da:

  • Il modo in cui la popolazione rappresenta le potenziali soluzioni,
  • Il modo in cui misura l'idoneità dei tuoi individui,
  • Il modo in cui implementa la selezione e l'allevamento,
  • La quantità di mutazione,
  • Il numero di generazioni e la dimensione delle tue popolazioni,
  • Quali altri concetti di GA potresti scegliere di implementare ...

Tutti questi sono parametri per la tua implementazione. Tipicamente con gli GA si implementerà una soluzione, testandola su più esecuzioni e poi la modificherete molte volte.

Considerare anche qual è il tuo spazio di ricerca e come potrebbe apparire:

  • Il tuo spazio di ricerca è uno spazio N-dimensionale che definisce l'universo di tutta la tua popolazione potenziale. (N è il numero di caratteristiche che definiscono le tue soluzioni individuali).
  • Se ci pensi in 3 dimensioni (per renderlo semplice), allora avrai un paesaggio piuttosto piatto, o sembrerà una montagna enorme, o avrà molte colline, montagne e valli? Questo è importante anche quando si modifica la tua implementazione.

Ora, se sei preoccupato che alcuni individui prendano il controllo della popolazione troppo velocemente, puoi rivedere la tua funzione di fitness per ridurre l'importanza degli individui in forma. (La tua funzione di fitness potrebbe essere lineare, o potrebbe essere lineare con un valore massimo, o logaritmico, o qualcos'altro ...). Inoltre puoi aumentare il tasso di mutazione. Inoltre, come suggerisci, potresti limitare il numero di volte in cui una soluzione individuale genererà. Puoi anche provare diversi meccanismi di selezione per vedere come va (fitness proporzionato, torneo, ecc ...)

Basta modificare, testare e ripetere ripetutamente. In genere è così che si raffina un programma GA.

Se fornisci maggiori dettagli su ciò che hai già implementato, sarò lieto di darti qualche ulteriore idea al riguardo.

Buona fortuna.

    
risposta data 23.01.2015 - 01:14
fonte

Leggi altre domande sui tag