私は最近遺伝的アルゴリズムを使い始めましたが、それをよりよく理解するために、問題を解決するためにそれを使用することにしました。私は、遺伝的アルゴリズムを使用して、パス テストの質問のテスト ケースを生成することに取り組んでいます。最適なフィットネス関数を選択する方法を除いて、すべてを理解しました。だから、私はいくつかの助けを使うことができました:)
私の問題の概要は次のとおりです。各世代で、100 個のテスト ケースが生成されています。CFG の各パスには、そのパスのテスト ケースの頻度に応じて重みが割り当てられています。たとえば、次の CFG を使用します。
4 つの独立したパスがあります。パスの重みが次のようになっているとしましょう-
パス 1: 10
パス 2: 5
パス 3: 4
パス 4: 5
現在、世代内の各テスト ケースについて、世代全体が持つことができる平均適合度を検討しています。
(10*100 - 4*100)/2 = 300 [100 個のテスト ケースがあるため]
そのため、そのテスト ケースの重み (それがカバーするパスの重み) を 300 で割っています。結果は満足のいくものですが、このロジックには非常に欠陥があります。テストケースの適合度がそれがカバーするパスの重みに正比例するように、より良い適合度関数は、重みをすべてのパスの重みの合計で割ったものになると思います。したがって、この問題については、
w/(10+5+5+4) = w/24
各テストケースの適合度を計算するためのより良いアプローチは何だと思いますか?
w/300
w/24
それとも、まったく異なるアプローチを提案しますか? この問題に対して、より優れたフィットネス関数を生成できますか?
私はあなたの助けに感謝します:)