質問

遺伝的アルゴリズムを介して近似したい未知の関数があると想像してみましょう。この場合、y = 2x であると仮定します。

x = 0 から x = 4 まで、x ごとに 1 つの y を含む 5 つの要素で構成される DNA があり、多くの試行と計算を経て、次のような形式に近づきます。

best_adn = [ 0, 2, 4, 6, 8 ]

それが線形関数なのか、多項式なのか、それとももっと醜いものなのか、事前にはわからないことに注意してください。また、私の目標は、関数の種類が何であるかを best_adn から推論することではありません。私は単にそれらの点が必要なので、後で使用できます。

これは単なる問題例でした。私の場合、DNA には 5 つのポイントしかありませんが、50 か 100 のようなものがあります。最適なポイントのセットを見つけるための GA の最適なアプローチは何ですか?

  1. 100人の母集団を生成すると、20%を破棄する
  2. 残りの8割を組み直す?どうやって?ランダムなポイントでそれらをカットし、母親のADNの第2部で父親のADNの最初の部分をまとめますか?
  3. 突然変異、この種の問題変異でどのように定義すればよいですか?
  4. エリート主義を使用する価値はありますか?
  5. 周りで使用する価値のある他の単純なアイデアはありますか?

ありがとう

役に立ちましたか?

解決

ガウス適応は通常、標準の遺伝的アルゴリズムよりも優れたパフォーマンスを発揮します。独自のパッケージを最初から書きたくない場合は、Mathematica Global Optimization パッケージが優れています。私はこれを、標準のフィッターが惨めに失敗した非常に厄介な非線形関数の近似に使用しました。

編集:ウィキペディアの記事

この記事にリストされている論文のプリントを探し出すと、ホワイトペーパーと実装を見つけることができます。ただし、一般に、適応度関数を最大化するための解空間がどのようなものであるかをある程度理解している必要があります。変数の数が少ない場合、または極大値の数が少ない場合、またはそれらが大域最大値に接続または傾斜している場合は、単純な最小二乗法が適切に機能します。各極大値の周囲の領域が小さい場合 (つまり、最良の解をヒットするには非常に良い解を取得する必要があり、そうでないと悪い解をヒットすることになります)、より複雑なアルゴリズムが必要になります。

遺伝的アルゴリズムの変数の選択は、解空間がどのようになるかによって異なります。

他のヒント

通常、これらは実験によってのみ発見されます...おそらく、GA を調整するために GA を作成します。

しかし、それはさておき、私はあなたが何を尋ねているのか理解できません。機能が分からず、付き合うポイントも分からない場合、どうやって適合度を判断するのでしょうか?

この問題についての私の現在の理解によれば、これはニューラル ネットワークの方が適切です。

編集:

2.残り8割を組み換える?どうやって?ランダムな位置でそれらを切り取って、父親の ADN の最初の部分と母親の ADN の 2 番目の部分を結合しますか?

これをクロスオーバーといいます。真面目にやりたい場合は、ランダムな開始点を選択し、ランダムな長さを交換するなどの操作を行ってください。たとえば、オブジェクトに 10 個の要素があるとします。1 ~ 10 の間でスポット X をランダムに選択し、x..10-rand%10+1.. を交換します。写真はわかります...少し味付けしてください。

3.突然変異、この種の問題の突然変異ではどのように定義すればよいですか?通常、それは何よりも法的解決策として定義されるものに依存します。突然変異はクロスオーバーと同じ方法で行うことができますが、別の標本と交換するのではなく、ランダムなデータ (つまり合法です) を入力する点が異なります。そしてあなたはそれを 多くの より低い率。

4.エリート主義を使用する価値はありますか?実験して調べてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top