0

私は最近遺伝的アルゴリズムを使い始めましたが、それをよりよく理解するために、問題を解決するためにそれを使用することにしました。私は、遺伝的アルゴリズムを使用して、パス テストの質問のテスト ケースを生成することに取り組んでいます。最適なフィットネス関数を選択する方法を除いて、すべてを理解しました。だから、私はいくつかの助けを使うことができました:)

私の問題の概要は次のとおりです。各世代で、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

各テストケースの適合度を計算するためのより良いアプローチは何だと思いますか?

  1. w/300

  2. w/24

それとも、まったく異なるアプローチを提案しますか? この問題に対して、より優れたフィットネス関数を生成できますか?

私はあなたの助けに感謝します:)

4

0 に答える 0