序文 最近、遺伝的アルゴリズムを使用していくつかのことを最適化する必要があります。当初は、最適化のためにいくつかのアルゴリズムに基づいて簡単な関数を実装する予定でしたが、後で実行するために非一般的な関数を単に記述するだけでは、演算子を改善したり、他の人が使用したりすることが困難になると感じています。同時に、遺伝的アルゴリズムの基本的な概念と操作プロセスは比較的固定されており、一般的にはエンコードメカニズム、選択戦略、交差突然変異演算子、およびパラメーター設計を通じて改善が行われ、アルゴリズムの全体的な構造に大きな影響を与えません。これにより、遺伝的アルゴリズムでは、比較的固定されたフレームワークを記述し、演算子やパラメーターなどのためのスペースを残して、新しいアルゴリズムをテストおよび改善することが非常に適したものになります。そこで、GAFT という小さな遺伝的アルゴリズム フレームワークを作成しました。この記事では、このフレームワークを紹介し、1 次元検索と 2 次元検索を例に使用してその使用方法について説明します。
現在、フレームワークは初期バージョンのみが完成しており、比較的シンプルで、よく使用される基本的な演算子がいくつか組み込まれています。ユーザーは、インターフェース ルールに従ってカスタム演算子を実装し、フレームワークに組み込んで操作することができます。また、自分のニーズに応じてさらに改良された演算子を追加し、フレームワークをより汎用的なものにするために改良していきます。 文章 遺伝的アルゴリズム入門 ここでは、遺伝的アルゴリズムの基本概念を簡単に紹介し、GAFT の設計原則について説明します。 簡単に言えば、遺伝的アルゴリズムは集団探索技術を使用して、問題に対する実行可能な解決策のグループを表します。選択、交差、突然変異などの一連の遺伝的操作を現在の集団に適用することで、新しい世代の集団が生成され、集団は徐々に、おおよその全体最適解を含む状態に進化します。以下に、遺伝学と遺伝的アルゴリズム関連の用語の対応をまとめます。 用語 アルゴリズムの特徴
アルゴリズムフロー GAFT 設計原則 遺伝的アルゴリズムのプロセスは比較的固定されているため、私たちの最適化アルゴリズムは基本的に、プロセスの全体的なフレームワーク内でエンコードメカニズム、演算子、パラメータなどを変更します。そのため、フレームワークを作成するときに、それらの固定された遺伝的演算子と適応度関数をインターフェースに書き込み、メタクラス、デコレータなどを使用してインターフェースを制限および最適化し、その後の演算子と適応度関数のカスタマイズに便利になるようにしたいと考えました。 *** すべてのパーツを組み合わせてエンジンを形成し、アルゴリズム フローに従って遺伝的アルゴリズムを実行してターゲットを最適化します。 この方法により、遺伝的アルゴリズムのプロセスを毎回記述する面倒さから解放されます。プラグインを作成するように独自の演算子と適応度関数を実装し、それらを GAFT に組み込むだけで、アルゴリズムのテストや目的関数の最適化を開始できます。 GAFT ファイル構造 このセクションでは、私が実装したフレームワークの全体的な構造を紹介します。
現在のファイルの結果は上記に表示されます。
GAFTの使用 以下では、GAFT を使用して目的関数を最適化する例として 2 つの関数を使用します。 一次元検索 まず、複数の局所極値を持つ単純な関数を最適化してみましょう。組み込み演算子を使用して、関数f(x)=x+10sin(5x)+7cos(4x)の最大値を見つけます。ここで、xの値は範囲[0,10]にあります。 1.まず必要なモジュールをインポートする
2. エンジンを作成する
3. カスタムフィットネス関数 適合関数は、修飾子を使用してエンジンに登録できます。
4. カスタムオンザフライ分析プラグイン プラグインを定義する際に修飾子を使用して、プラグインをエンジンに直接登録することもできます。
5. では、実行(最適化)を始めましょう! ここでは 100 世代の人口を飼育しています。
組み込みの分析プラグインは、各反復で各世代の最良の個体を記録し、保存用のデータを生成します。 関数自体の曲線と遺伝的アルゴリズムを使用して得られる進化曲線をプロットします。 最適化プロセスのアニメーション: 2D検索 次に、GAFTの組み込み演算子を使用して、複数の極値点を持ち、x、yの範囲が[−2,2]であるバイナリ関数f(x) = ysin(2πx) + xcos(2πy)の最大値を検索します。 ここでは、分析プラグインをカスタマイズするのではなく、組み込みの分析クラスを直接使用し、エンジンの構築時に直接渡します。
進化曲線: 2次元関数面: 検索プロセスのアニメーション: この例から、現在組み込まれている基本演算子は関数のクライマックスを非常にうまく見つけることができることがわかります。 要約する この記事では主に、遺伝的アルゴリズムの最適化計算用に私が開発した Python フレームワークを紹介します。このフレームワークには、個体、集団、さまざまなエンコード方法を持つ遺伝的演算子など、遺伝的アルゴリズムでよく使用されるコンポーネントが組み込まれています。同時に、このフレームワークはカスタム遺伝的演算子と分析プラグイン用のインターフェースも提供しており、遺伝的アルゴリズムのプロセスを簡単かつ迅速に構築し、アルゴリズムのテストに使用することができます。 現在、このフレームワークはまだ初期段階にあります。今後、私自身が使用していく過程で、より多くの組み込み演算子が徐々に改善され、フレームワークの汎用性が高まります。この記事の両方の最適化例のソースコードは、GitHub (https://github.com/PytLab/gaft/tree/master/examples) にあります。 現在の計画: 1. 組み込み演算子の追加、2. 組み込み演算子とコンポーネントへの C++ バックエンドの追加、3. 並列化 参照する
|
>>: 従来の銀行は人工知能をどのように活用しているのでしょうか? ——2017年中国国際金融博覧会で光り輝く民生銀行の技術革新に関するメモ
[51CTO.com からのオリジナル記事] Long Short-Term Memory Netw...
機械学習やコンピューター ビジョンのプロジェクトで、画像の品質が低いという問題に遭遇したことはありま...
ディープラーニングの分野では、「転移学習」という用語がますます注目を集めています。パフォーマンスが優...
[[193126]] Keras は、独自のディープラーニング モデルを迅速に構築およびトレーニング...
[[435127]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...
ネットユーザーたちはこのオリンピックについて不満を述べている。たとえ境界線を越えたとしても、高得点を...
技術の第一人者カパシー氏がOpenAIを去った後、彼のビジネスは非常に活発になっています。新しいプロ...
8月1日、海外メディアは、Axiosの報道によると、GoogleはGoogleアシスタントを生成AI...
市場調査会社IDCは7月25日、近年の人工知能の急速な進化と発展により、ビッグデータモデルはますます...
この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...
Google の次世代アーキテクチャ Pathways は、大規模なモデルのトレーニングに使用されて...