4

遺伝的アルゴリズムを介して近似したい未知の関数があるとしましょう。この場合、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. 残りの80%を再結合?どのように?それらをランダムなポイントで切断し、父親の ADN の最初の部分と母親の ADN の 2 番目の部分を組み合わせますか?
  3. ミューテーション、この種の問題ミューテーションではどのように定義すればよいでしょうか?
  4. エリート主義を使う価値はありますか?
  5. 他に使用する価値のある簡単なアイデアはありますか?

ありがとう

4

2 に答える 2

3

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

しかし、それはさておき、あなたが何を求めているのか理解できません。機能がわからず、一緒にいるポイントもわからない場合、どのように適合度を判断しますか?

この問題に対する私の現在の理解から、これはニューラル ネットワークによってより適切に適合されます。

編集:

2.残りの80%を再結合?どのように?それらをランダムなポイントで切断し、父親の ADN の最初の部分と母親の ADN の 2 番目の部分を組み合わせますか?

これをクロスオーバーと呼びます。あなたが生意気になりたい場合は、ランダムな開始点を選んでランダムな長さを交換するなどのことをしてください. たとえば、オブジェクトに 10 個の要素があるとします。1 から 10 の間のスポット X をランダムに選択し、x..10-rand%10+1.. を交換します。

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

4.エリート主義を使う価値はありますか? 実験して見つけてください。

于 2009-12-11T01:00:50.187 に答える
2

ガウス適応は通常、標準の遺伝的アルゴリズムよりも優れています。独自のパッケージをゼロから作成したくない場合は、Mathematica グローバル最適化パッケージが優れています。私はこれを使用して、標準フィッターが悲惨な失敗をした非常に厄介な非線形関数をフィッティングしました。

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

この記事に記載されている論文の印刷物を探すと、ホワイトペーパーと実装を見つけることができます。ただし、一般に、フィットネス関数を最大化するための解空間がどのように見えるかについて、ある程度の考えを持っている必要があります。変数の数が少ない場合、または局所的な最大値の数が少ない場合、またはそれらがグローバルな最大値に接続されている/傾斜している場合、単純な最小二乗法はうまく機能します。各極大値の周りの領域が小さい場合 (つまり、最高の解に到達するには非常に優れた解を取得する必要があります。そうしないと、悪い解に到達します)、より洗練されたアルゴリズムが必要になります。

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

于 2009-12-11T01:05:58.647 に答える