遺伝的プログラミングとは何ですか?
遺伝子プログラミングは、1つのコンピュータープログラムを使用して、進化的アルゴリズムベースの方法論を使用して別のコンピュータープログラムを作成するプロセスです。このプロセスは、多くの場合、リニアプログラミングと比較され、プログラマーはコンピューターが実行するための特定の指示を作成します。 LISPとスキームは、高レベルの機能と柔軟性のために、このタイプの作業で最も一般的なプログラミング言語です。生物学的進化との概念的な類似性の結果として、遺伝子プログラミングはバイオインスピレーションのコンピューティングの例としてしばしば引用されます。
遺伝子プログラム(GPS)は、数千のプログラムを生成および実行し、使用するのに最も効果的なものを選択します。たとえば、GPを使用して、写真のスケッチを描くプログラムを作成する場合があります。 GPが最初に行うことは、ランダムな組み合わせでさまざまなコンピューター描画機能を使用する一連のプログラムを作成することです。その後、GPはこれらの各プログラムを順番に実行し、各結果を画像に出力しますファイル。
GPの次のステップは、セットからこれらのプログラムの最良を選択することです。このプロセスは一般に、遺伝子プログラミングの最も難しい部分です。図面プログラムの場合、GPは画像比較ソフトウェアを使用して、ソフトウェアが描画しようとしていた画像に最も似ているランダム図面を決定します。ランダムに生成されたプログラムのうち、GPは上部をいくつか選択し、残りを破棄します。選択プロセスはフィットネス評価として知られており、一般的に遺伝子プログラミングの最も難しい部分であると考えられています。
上位数少ないプログラムが選択されると、GPはそれらを新しいプログラムのバッチの基礎として使用します。それぞれの新しいバッチは世代と呼ばれます。新世代を作成する2つの方法は、突然変異とクロスオーバーです。突然変異は、既存のプログラムの1つを取得し、ランダムな変更を加えることで機能します。より良い。繁殖とも呼ばれるクロスオーバーは、2つのトッププログラムを採用し、それらの要素を組み合わせて新しいプログラムを作成することで機能します。
プログラムの新しいバッチを作成した後、GPはそれらを実行および評価するプロセスを繰り返し、選択、排除、および生成プロセスを繰り返します。 GPSは、満足のいく結果を持つ単一のプログラムを見つける前に、数百世代を頻繁に実行します。この制限にもかかわらず、遺伝子プログラミングは、ロボットエンジニアリングや人工知能の問題など、いくつかのタイプの困難なコンピューティングの問題を解決する一般的な方法です。