私はかなりの数の遺伝的アルゴリズムを作成しました。それらは機能します (合理的な解決策をすばやく見つけます)。しかし、私は今TDDを発見しました。遺伝的アルゴリズム(乱数に大きく依存している)をTDDの方法で書く方法はありますか?
より一般的に質問を投げかけるには、非決定論的なメソッド/関数をどのようにテストしますか。これが私が考えたことです:
特定のシードを使用します。そもそもコードを間違えた場合は役に立ちませんが、リファクタリング時にバグを見つけるのに役立ちます。
番号の既知のリストを使用します。上記と同様ですが、コードを手でたどることができます (これは非常に面倒です)。
定数を使用します。少なくとも私は何を期待すべきか知っています。RandomFloat(0,1) が常に 1 を返す場合、サイコロの目が常に 6 になるようにするとよいでしょう。
非決定論的なコードをできるだけ GA から移動するようにしてください。それがその目的の核心であるため、これはばかげているようです。
テストに関する非常に優れた書籍へのリンクも歓迎します。