私は遺伝的アルゴリズムの作業を再開し、多くの演算子と選択方法を試しています。トーナメントセレクションを行ったとき、常にトップの個人を選ぶのは本当に簡単で、小さい個人は選ばれる可能性が少ないことに気づきました。トーナメントに勝った個人に「選択確率」を実装して、彼が確率を超えない場合、負けた他の人にチャンスを与えるなど、いくつかの回避方法を見ました。
私が読んだ他の方法は、各個人に彼が選択できる回数の制限を与えることでしたが、その文書では、この「制限」を作成する方法はありませんでした。だから私は、各個人が表す%を自分のフィットネスで使用することを考え始めます。例えば:
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%選択できます...
これは簡単なアイデアであり、複雑なものではありません。私が知りたいのは、何らかの方法でこの制限を作成することを示すドキュメントが見つかったかどうか、またはこれを改善できるアイデア/意見があるかどうかです。
まず、遺伝的アルゴリズムを実装する際に留意すべき点がいくつかあります。
GAのほぼすべてが任意です。あなたの解決策は以下に依存します:
これらはすべて、実装のパラメーターです。通常、GAを使用してソリューションを実装し、数回の実行でテストしてから、何度も微調整します。
また、検索スペースとは何か、どのように見えるかについても検討してください。
さて、一部の個人が人口をあまりにも早く引き継ぐことを心配している場合は、適応度関数を確認して、健康な個人の重要性を減らすことができます。 (適応度関数は線形である場合もあれば、最大値で線形である場合もあれば、対数である場合もあります。..)。また、突然変異率を上げることができます。また、あなたが示唆するように、個々のソリューションが繁殖する回数を制限することができます。さまざまな選択メカニズムを試して、それがどのように行われるかを確認することもできます(フィットネス比例、トーナメントなど)
微調整し、テストし、何度も繰り返します。通常、これがGAプログラムを改良する方法です。
すでに実装しているものについてさらに詳しく説明していただければ、さらに詳しくお話しさせていただきます。
幸運を。