我做了很多遗传算法;他们工作(他们很快找到一个合理的解决方案)。但我现在发现了TDD。有没有办法以 TDD 方式编写遗传算法(严重依赖随机数)?
为了更笼统地提出这个问题,您如何测试非确定性方法/功能。这是我的想法:
使用特定的种子。如果我首先在代码中犯了错误,这将无济于事,但有助于在重构时发现错误。
使用已知的数字列表。与上面类似,但我可以手动跟踪代码(这将非常乏味)。
使用一个常数。至少我知道会发生什么。当 RandomFloat(0,1) 始终返回 1 时,最好确保骰子始终读取 6。
尝试将尽可能多的非确定性代码移出 GA。这似乎很愚蠢,因为这是其目的的核心。
链接到非常好的测试书籍也将不胜感激。