まえがき
フィードバックにより、この投稿を思い出すことが決定されたので、今読んでより楽しく有益なレッスンになることを願っています。 私はすべての願いを最大限に考慮に入れようとしました。
まえがき
先ほど書いたように、ヒューリスティックな方法(かなり一般的でも未知でも)をカバーしたいという要望があります。 この投稿は、このトピックがあなたの興味を引くかどうかを理解することを目的としています。 まあ、私が間違っていなかったことを願っています。 読者に紹介したい最初の方法は、調和検索(HS)メソッドです。

歴史的背景
では、どこから始まったのでしょうか? それはすべてそれほど前ではありませんでした。 2001年、Geemは独自の高調波検索アルゴリズム(Harmony Search、またはHS)を開発および提案しました。 このアルゴリズムはジャズミュージシャンに触発されたと主張する著者もいれば、基本は心地よいメロディーを作成するプロセスにすぎないと言う著者もいます。 これは本質を変えません。 唯一の重要なことは、経験豊富なミュージシャンが他のミュージシャンと素早く演奏し、美しいものを即興演奏できることです。 これがアルゴリズムの基礎となりました。
戦略
クラシックHSは、調和メモリの概念を使用します(遺伝的アルゴリズムの親プールに似ています)。 以下は、最適化問題の近似解を表す保存されたベクトルです。 最初に、最大または最小(必要なものに応じて)が検査される領域でランダムに生成されます。 このメモリのサイズは当然制限されています。 その後
即興演奏自体は次のとおりです。
- テストベクトルが生成されます(絶対にランダムに、またはメモリからのベクトルを使用して)。
- テストベクトルが変更されます(テストベクトルがメモリを使用して作成された場合、コンポーネントにわずかなシフトがあります)。
- 修正されたトライアルベクトルは、利用可能な最悪のものを置き換えます。
アルゴリズムのより詳細な説明に興味がある人向け
アルゴリズム自体の計画は、[ 3 ]から裏切り取られました。 いくつかの式を追加して、これらすべてがより意味のある外観になるようにします。 だから、私たちはいくつかの機能を持っています
最小化することと検索領域
(簡単にするために、多次元の直方体であると仮定します)、最小点、またはむしろその近似が求められます。 次のステップは、検索領域で初期高調波を生成することです
(ランダムに)。 価値
ユーザーが設定し、ご想像のとおり、メモリに保存できる高調波の数を示します。 さらに、ユーザーは以下も指定する必要があります
-メモリ内の高調波から選択する確率、
-変更の可能性および
-その変更の値。 これで、すべての準備が整い、明確な良心をもって、機能を最小限に抑えるための音楽の作成を開始できます。 反復部分は、アルゴリズムを停止する基準が満たされるまで続きます。 これは、反復回数の制限、高調波メモリを更新しない実行回数、または特定のメトリックの意味で追加された高調波の近さのいずれかです。 それはすべてあなたの欲求に依存します。 反復部分では、次のことが発生します。
アルゴリズム
アルゴリズム自体の計画は、[ 3 ]から裏切り取られました。 いくつかの式を追加して、これらすべてがより意味のある外観になるようにします。 だから、私たちはいくつかの機能を持っています







- 新しいゼロ高調波を作成します
。
- 次に、各高調波成分について、次のことを行います。乱数を生成します
0から1まで均一に分布します。 もし
より小さい
、メモリからランダムに選択された高調波の対応するコンポーネントを現在のコンポーネントに書き込みます。 それ以外の場合、コンポーネントは、検索エリアの対応するコンポーネントへの所属を考慮して、ランダムに生成されます
。 コンポーネントがメモリを使用して生成された場合、おそらく変更する必要があります。 このために、乱数が再び生成されます
0から1まで均一に分布します。 もし
より小さい
、次にコンポーネントは
どこで
-から一様に分布したランダム変数
前に
。
- もし
それから
置き換える
(メモリが更新されています)。
長所と短所
長所:
- シンプルさ(実装と理解の両方)。 確かに、アルゴリズムには操作が積まれていません(実際には、乱数の生成とベクトルの変更のみです)。
- かなり少数の構成可能なパラメーターと、パラメーターを選択するための推奨事項の可用性。
- ゼロ次法です(数値微分の必要がないため、このプロセスに関連するすべての困難があります)。
- このメソッドは、他のメソッド(たとえば、ミームアルゴリズム、または遺伝的アルゴリズムの追加の輪郭)に簡単かつ便利に組み込まれます。
短所:
- 収束率が低い;
- 私の意見では、この方法は大規模な問題(アニーリングシミュレーション方法など)を解決するのにあまり適していません。これは、この方法を構成する操作が単純であるためです(この場合、同じ遺伝的アルゴリズムは1桁速く動作します)。
使用したソース
- Zong Woo Geem、音楽にヒントを得たハーモニー検索アルゴリズム(Springer)
- ウィキペディア
- Chukiat Worasucheepが執筆した記事(HSバリエーションへのリンクがあります)、
- 私の好きな作家であり学者でもあるXin-She Yang の記事 。
あとがき
私は良い伝統を確立したい-投票によって将来のポストのトピックを決定する。 だから、次の投稿のトピックに投票したいすべての人への要求。