我曾经制作过一些遗传算法;它们有效(能快速找到合理的解)。但我现在发现了TDD。是否有一种方式可以以TDD的方式编写遗传算法(这种算法严重依赖于随机数)?
更普遍地说,如何测试一个非确定性的方法/函数。以下是我的想法:
使用特定种子。如果我在代码中犯了错误,这种方法将无济于事,但可以帮助在重构时发现错误。
使用已知的数字列表。类似于上面的方法,但我可以手动跟踪代码(这将非常繁琐)。
使用恒定的数字。至少我知道可以期望什么结果。确保骰子总是读取6,当RandomFloat(0,1)始终返回1时,这将是有益的。
尽量将非确定性代码从GA中移出。这似乎很愚蠢,因为那是其核心目的。
也欢迎提供有关测试的优秀书籍的链接。