He hecho algunos algoritmos genéticos; funcionan (encuentran una solución razonable rápidamente). Pero ahora descubrí TDD. ¿Hay alguna manera de escribir un genetic algorithm (que depende en gran medida de números aleatorios) de una manera TDD?Cómo debo probar un algoritmo genético
Para plantear la pregunta más en general, ¿Cómo se prueba un método/función no determinista. Esto es lo que he pensado:
Utilice una semilla específica. Lo cual no ayudará si cometo un error en el código en primer lugar, pero ayudará a encontrar errores al refactorizar.
Utilice una lista de números conocida. Similar a lo anterior, pero podría seguir el código a mano (lo cual sería muy tedioso).
Use un número constante. Al menos sé qué esperar. Sería bueno asegurarse de que un dado siempre muestre 6 cuando RandomFloat (0,1) siempre devuelve 1.
Intente mover la mayor parte del código no determinista de la GA como sea posible. que parece tonto ya que ese es el núcleo de su propósito.
También se apreciarán los enlaces a libros muy buenos sobre pruebas.
Gracias por la respuesta. Esperaba algo de bala de plata, pero creo que esto no es algo fácil de probar. Si selecciono cuidadosamente los números aleatorios, puedo probar cada ruta de ejecución. También haré una prueba con un paisaje físico conocido para poder ver qué tan bien está funcionando. –
@James, solo recuerde con algoritmos no determinísticos que hay una marcada diferencia entre 'probar la lógica' y probar 'resultados esperados'. Haz uno, luego el otro. Si el primero está roto, el segundo no tiene sentido. –