Как я должен проверить генетический алгоритм
Я сделал довольно мало генетических алгоритмов; они работают (они быстро находят разумное решение). Но я теперь обнаружилTDD, Есть ли способ написатьгенетический алгоритм (который в значительной степени опирается на случайные числа) в смысле TDD?
Чтобы поставить вопрос в более общем виде, как вы тестируете недетерминированный метод / функцию. Вот что я подумала:
Use a specific seed. Which wont help if I make a mistake in the code in the first place but will help finding bugs when refactoring.
Use a known list of numbers. Similar to the above but I could follow the code through by hand (which would be very tedious).
Use a constant number. At least I know what to expect. It would be good to ensure that a dice always reads 6 when RandomFloat(0,1) always returns 1.
Try to move as much of the non-deterministic code out of the GA as possible. which seems silly as that is the core of it's purpose.
Ссылки на очень хорошие книги по тестированию также приветствуются.