Я сделал несколько генетических алгоритмов; они работают (они быстро находят разумное решение). Но я теперь обнаружил TDD. Есть ли способ написать genetic algorithm (который опирается в основном на случайные числа) на TDD?Как проверить генетический алгоритм
Чтобы задать вопрос более широко, как вы протестируете недетерминированный метод/функцию. Вот что я подумал:
Используйте специальное семя. Что не поможет, если я ошибаюсь в коде, в первую очередь, но поможет найти ошибки при рефакторинге.
Используйте известный список номеров. Как и выше, но я мог бы следовать за кодом через руку (что было бы очень утомительно).
Используйте постоянное число. По крайней мере, я знаю, чего ожидать. Было бы хорошо убедиться, что кубик всегда читает 6, когда RandomFloat (0,1) всегда возвращает 1.
Постарайтесь как можно больше перенести не-детерминированный код из GA. что кажется глупым, поскольку это является основной целью его цели.
Ссылки на очень хорошие книги по тестированию также будут оценены.
Спасибо за ответ. Я надеялся на какую-то серебряную пулю, но я думаю, что это просто нелегко проверить. Если я тщательно выбираю случайные числа, я могу проверить каждый путь выполнения. Я также сделаю тест с известным фитнес-ландшафтом, чтобы я мог видеть, насколько хорошо он работает. –
@ Джеймс, просто помните, что с недетерминированными алгоритмами существует явная разница между «тестированием логики» и тестированием «ожидаемых результатов». Сделайте один, затем другой. Если первое сломано, второе не имеет смысла. –