回答:
進化的アルゴリズムは、ダーウィンの自然selectionの原理に基づく最適化アルゴリズムのファミリーです。自然selectionの一部として、特定の環境には生存と繁殖を競う個体集団があります。これらの目標を達成する各個人の能力は、子供を持つ可能性、言い換えれば遺伝子を次世代の個人に渡す機会を決定します。 2つの目的。
世代を超えて継続的に改善されるこの原則は、問題の解決策を最適化するための進化的アルゴリズムによって採用されています。初期世代、異なる成る集団の個体はランダムに、または他の方法によって生成されます。個人は、多かれ少なかれ問題の解決策です。問題に関する個人の質はフィットネスと呼ばれ、解決する問題の解決策の妥当性を反映しています。個人の適応度が高いほど、その遺伝子型の一部またはすべてを次世代の個人に渡す可能性が高くなります。
個人は遺伝子型としてコード化され、**ビットベクトル(遺伝的アルゴリズム)または実ベクトル(進化戦略)など、任意の形状をとることができます。各遺伝子型は、個体を評価するとき、つまりその適合性が計算されるときに表現型に変換されます。場合によっては、表現型は遺伝子型と同一です:直接 コーディングと呼ばれます。それ以外の場合、コーディングは間接と呼ばれます。たとえば、長さ、高さ、幅で定義される直方体のサイズを最適化するとします。この例を単純化するために、これらの3つの量が0〜15の整数であると想定します。その後、4ビットの2進数を使用してそれぞれを記述できます。潜在的な解決策の例は、遺伝子型0001 0111 01010です。対応する表現型は、長さ1、高さ7、幅10の平行六面体です。
古い世代から新しい世代への移行中、バリエーション 演算子と呼ばれ、その目的は個人を操作することです。バリエーション演算子には2つの異なるタイプがあります。
進化的アルゴリズムは、オペレーションズリサーチ、ロボット工学、生物学、ニュアンス、暗号化などのさまざまな分野で実証されています。さらに、複数の目的を同時に最適化でき、最適化する数学モデルのプロパティを想定していないため、ブラックボックスとして使用できます。唯一の本当の制限は計算の複雑さです。
遺伝的アルゴリズムは、問題に対して試行された多数の解決策をランダムに生成するアルゴリズムです。この一連の解決策は「人口」と呼ばれます。
次に、特定のフィットネス関数を使用して、これらのソリューションが問題をどの程度解決するかを確認しようとします。最適なフィットネス値を持つ試行されたソリューションは、新しい母集団を生成するために使用されます。これは、試行されたソリューションに小さな変更を加える(突然変異)か、既存の試行されたソリューションを組み合わせること(クロスオーバー)によって実行できます。
アイデアは、時間が経つにつれて、問題を解決するのに十分高い適応度の値を持つ、試行された解決策が現れるということです。
これのインスピレーションは進化論から来ました。最適なソリューションは存続し、生み出されます。
例1
木片から多くの形を切り取る最も効率的な方法を探していたと仮定します。できるだけ木材を無駄にしたくない。
あなたが試みた解決策は、木材の上にこれらの形状をランダムに配置することです。適合性は、この配置に従って形状を切断した後に残っている木材の量によって決まります。
残っている木材が少ないほど、解決策はより良いものになります。
例2
多数の点を通過する多項式を見つけようとしていると仮定します。試みた解はランダム多項式です。これらの多項式
の適合度を決定するには、それらが与えられた点にどの程度適合するかを決定します。(この特定のケースでは、おそらく最小二乗法を使用して、多項式がどの程度ポイントに適合するかを決定します)。多数の試行にわたって、ポイントに十分に近似する多項式が得られるまで、ポイントによりよく適合する多項式が得られます。
この回答では、他の回答に加えて、どのように使用するかの実用的な例を要求します。それらは、遺伝的アルゴリズムが何であるかを説明する非常に良い仕事によるものと思われます。したがって、これは例を示します。
ある特定の入力からいくつかの出力を生成するニューラルネットワーク(それらは唯一のアプリケーションではありませんが)があるとします。遺伝的アルゴリズムはこれらの集団を作成し、どの出力が最適であるかを確認することで、集団のメンバーを繁殖させて殺します。最終的に、これが十分に複雑な場合、これによりニューラルネットワークが最適化されるはずです。
これは私が作成したデモンストレーションです。コーディングが間違っているにもかかわらず、理解に役立つ可能性があります。http://khrabanas.github.io/projects/evo/evo.html 進化ボタンを押して、目標をいじりましょう。
単純な遺伝的アルゴリズムを使用して、どの集団が生き残るかを繁殖、突然変異、決定します。入力変数がどのように設定されているかによって、ネットワークはそれらにある程度の近さを得ることができます。
遺伝的アルゴリズムは、RGBを取り込むことで出力色を生成するような「ニューラルネットワーク」を作成しようとしています。まず、ランダムな母集団を生成します。次に、母集団からランダムに3人のメンバーを取得し、適合度が最も低いメンバーを選択して、母集団から削除します。適合度は、2乗した最上位の目標の差+ 2乗した最下位の目標の差に等しくなります。次に、残りの2つを一緒に繁殖させ、死亡したメンバーと同じ人口に子供を追加します。交配が起こると、突然変異が起こる可能性があります。この突然変異は、値の1つをランダムに変更します。
サイドノートとして、それがどのように設定されているかにより、多くの場合、完全に正しいことは不可能ですが、それは相対的な近さに達します。
ここには、遺伝的アルゴリズムとは何かを説明し、応用例を示した多くの良い答えがあります。私はそれらが何のために良いのかについてのいくつかの一般的な目的のアドバイスを追加していますが、あなたがそれらを使うべきでない場合もあります。私の口調が厳しいように思えるのは、「不適切」セクションのいずれかのケースでGAを使用すると、一流のジャーナルから即座に論文が却下されるためです。
まず、あなたの問題は最適化の問題でなければなりません。最適化しようとしている「フィットネス関数」を定義する必要があり、それを測定する方法が必要です。
良い:
適切ではありません:
最後に、GAを検討している場合は、進化戦略の最近の研究を検討してください。私はCMA-ESに偏っています。これは、従来のGAではできない方法で、フィットネスのランドスケープの勾配の概念をとらえる優れたシンプルなアルゴリズムだと思います。
別の答えに見られるように、遺伝的アルゴリズム(GA)を適用するために必要なのは、クロスオーバーと突然変異の影響を受ける形式で問題の潜在的な解決策を提示することだけです。理想的には、フィットネス機能は、単に「干し草の山の針」であるのではなく、ソリューションの品質に関する何らかのスムーズなフィードバックを提供します。
以下に、遺伝的アルゴリズム(および実際のメタヒューリスティック)が適している問題の特性をいくつか示します。
しかし、目的のための彼らの広範な使用にもかかわらず、ノートではガスが実際にあることではない機能オプティマイザ - GAメカニズムは、いくつかの遠くの高品質なソリューションを見つけることを期待して探索空間の「辺境」領域を探索するのではなく、周りの多くのクラスタ化しない傾向があります「フィットネスランドスケープ」で簡単に達成できるピーク。
GAの適用可能性の詳細は、有名な初期の論文「遺伝的アルゴリズムの問題を難しくしているのは何ですか?」