Ho fatto un pò di algoritmi genetici; lavorano (trovano rapidamente una soluzione ragionevole). Ma ora ho scoperto TDD. C'è un modo per scrivere un genetic algorithm (che si basa molto su numeri casuali) in un modo TDD?Come testare un algoritmo genetico
Per porre la domanda più in generale, come si verifica un metodo/funzione non deterministico. Ecco cosa ho pensato:
Utilizzare un seme specifico. Il che non mi aiuterà se commetto un errore nel codice, ma aiuterò a trovare bug durante il refactoring.
Utilizzare un elenco di numeri noto. Simile a quanto sopra ma potrei seguire il codice a mano (che sarebbe molto noioso).
Utilizzare un numero costante. Almeno so cosa aspettarmi. Sarebbe bene assicurarsi che un dado legge sempre 6 quando RandomFloat (0,1) restituisce sempre 1.
Cercare di spostare il maggior numero possibile di codice non deterministico dall'accordo GA. il che sembra sciocco dato che è il nocciolo del suo scopo.
Anche i collegamenti a ottimi libri di prova potrebbero essere apprezzati.
Grazie per la risposta. Avevo sperato in una pallottola d'argento ma immagino che questo non sia qualcosa di facile da testare. Se seleziono attentamente i numeri casuali, posso testare ogni percorso di esecuzione. Farò anche un test con un noto panorama del fitness, così posso vedere quanto sta facendo bene. –
@James, basta ricordare con algoritmi non deterministici che esiste una marcata differenza tra "testare la logica" e testare "risultati attesi". Fai uno, poi l'altro. Se il primo è rotto, il secondo non ha senso. –