1

初期のソリューションを生成して分析を行うために、異なるシードで GA を実行することは可能ですか? ただし、GA を適用する最初の段階では、多数の母集団の解を生成する必要があります。たとえば、シード "12345" を使用して遺伝的アルゴリズムを実行して初期解を生成し、この初期解からランダムな解のリストを作成し、問題を解決するために GA ステップを適用し続けます。

次に、「5678」などの別のシードを使用して遺伝を実行して初期解を生成し、この初期解からランダムな解のリストを作成し、問題を解決するために GA ステップを適用し続けます。

つまり、最初の実行で入力されたリストには、2 回目の実行で生成された最初のソリューションが含まれている可能性があります。

私の質問は、GA を異なるシードで使用して比較と分析を行う方法はありますか? そうでない場合、どのように比較して分析を行うことができますか? 問題に対して異なるインスタンス ファイルのみを使用する必要がありますか?

4

1 に答える 1

1

最初に確率的アルゴリズムを比較するには、通常、異なるランダム シードを使用して複数回実行します。次に得られる出力は確率変数です。次に、結果のサンプルに対して統計的仮説検定 (多重比較の場合は ANOVA または Kruskal-Wallis、ペアワイズ比較の場合は t 検定または Mann-Whitney の U 検定) を実行して、あるアルゴリズムが別のアルゴリズムよりも優れているかどうかを評価できます。これらのテストで得られた p 値が目的のしきい値 (通常は 0.05 ですが、より厳密な証明では 0.01 などの低い値に設定します) を下回る場合、これらの結果が等しいという H0 仮説を棄却します。したがって、結果が等しくなく、さらに進んでいると想定し、平均パフォーマンスが優れている方がより良いアルゴリズムを選択すると仮定します (平均パフォーマンスに関心がある場合は、"

あなたのコメントで私が疑問に思ったことが1つあります。

初期解に同じシードを使用して GA アルゴリズムを複数回実行すると、結果はまったく異なります。

コードに何らかのエラーがあると思います。まったく同じ結果を得るには、アルゴリズム内で行われるランダムな決定全体で同じランダム オブジェクトを使用する必要があります。コードのどこかでnew Random()、指定されたシードで最初に取得したものの代わりに a を使用する可能性があります。別の理由として、乱数を描画する部分の並列処理を使用していることが考えられます。スレッドが常に同じ順序で実行されることを保証することはできません。そのため、スレッド 1 が最初の乱数を取得し、スレッド 2 が 2 番目の乱数を取得する場合と、スレッド 2 が最初に実行されて最初の番号を取得する場合があります。

于 2013-05-20T22:22:11.740 に答える