web-dev-qa-db-ja.com

選択する遺伝的アルゴリズムトーナメントの選択制限

私は遺伝的アルゴリズムの作業を再開し、多くの演算子と選択方法を試しています。トーナメントセレクションを行ったとき、常にトップの個人を選ぶのは本当に簡単で、小さい個人は選ばれる可能性が少ないことに気づきました。トーナメントに勝った個人に「選択確率」を実装して、彼が確率を超えない場合、負けた他の人にチャンスを与えるなど、いくつかの回避方法を見ました。

私が読んだ他の方法は、各個人に彼が選択できる回数の制限を与えることでしたが、その文書では、この「制限」を作成する方法はありませんでした。だから私は、各個人が表す%を自分のフィットネスで使用することを考え始めます。例えば:

ind 1:10% '100%が10倍になるまで
ind 2:40% '100%が2から3xになるまで
ind 3:8% '100%が10から12xになるまで
ind 4:30% '100%が3から4xになるまで

または逆%を使用する
ind 1はトーナメント(またはラウンド)数の90%を選択できます
ind 2は60%選択できます...
ind 3は92%選択できます...
ind 4は70%選択できます...

これは簡単なアイデアであり、複雑なものではありません。私が知りたいのは、何らかの方法でこの制限を作成することを示すドキュメントが見つかったかどうか、またはこれを改善できるアイデア/意見があるかどうかです。

2
RubenC

まず、遺伝的アルゴリズムを実装する際に留意すべき点がいくつかあります。

GAのほぼすべてが任意です。あなたの解決策は以下に依存します:

  • あなたの人口の個人が潜在的な解決策を表す方法、
  • あなたがあなたの個人の健康を測定する方法、
  • あなたが選択と繁殖を実行する方法、
  • 突然変異の量、
  • 世代数と母集団のサイズ、
  • 他にどのようなGA実装することを選択できる概念...

これらはすべて、実装のパラメーターです。通常、GAを使用してソリューションを実装し、数回の実行でテストしてから、何度も微調整します。

また、検索スペースとは何か、どのように見えるかについても検討してください。

  • 検索空間は、すべての潜在的な母集団の宇宙を定義するN次元空間です。 (Nは、個々のソリューションを定義する特性の数です)。
  • (簡単にするために)3次元で考えると、かなり平坦な風景になりますか、それともヒューズ山のように見えますか、それとも丘、山、谷がたくさんありますか?これは、実装を微調整するときにも重要です。

さて、一部の個人が人口をあまりにも早く引き継ぐことを心配している場合は、適応度関数を確認して、健康な個人の重要性を減らすことができます。 (適応度関数は線形である場合もあれば、最大値で線形である場合もあれば、対数である場合もあります。..)。また、突然変異率を上げることができます。また、あなたが示唆するように、個々のソリューションが繁殖する回数を制限することができます。さまざまな選択メカニズムを試して、それがどのように行われるかを確認することもできます(フィットネス比例、トーナメントなど)

微調整し、テストし、何度も繰り返します。通常、これがGAプログラムを改良する方法です。

すでに実装しているものについてさらに詳しく説明していただければ、さらに詳しくお話しさせていただきます。

幸運を。

2
rtome