超詳細 | シミュレーテッド アニーリング アルゴリズムとその MATLAB 実装

ここに画像の説明を挿入します

シミュレーテッド アニーリング アルゴリズム (シミュレーテッド アニーリング、SA) は、大規模な組み合わせ最適化問題を解決するために 1980 年代初頭に開発された確率論的手法です。これは、最適化問題の解法と物理システムのアニーリングプロセスの類似性に基づいており、メトロポリスアルゴリズムを使用し、温度降下プロセスを適切に制御して模擬アニーリングを実現し、それによって大域的最適化問題を解決するという目的を達成します。

応用範囲が広く、大域最適解を求める信頼性が高く、アルゴリズムが単純で、実装が容易であるという利点があります。シミュレーテッド アニーリング アルゴリズムは、その探索戦略において従来のランダム探索法とは異なり、適切なランダム要素を導入するだけでなく、物理システムのアニーリング プロセスの自然なメカニズムも導入します。この自然なメカニズムの導入により、シミュレーテッド アニーリング アルゴリズムは、反復プロセス中に目的関数の値が「良好」になる試行点を受け入れるだけでなく、特定の条件で目的関数の値が「悪」になる試行点も受け入れることができます。温度が下がると、その度合いは徐々に減少します。シミュレーテッドアニーリングアルゴリズムのこの探索戦略は、局所最適解に陥って探索プロセスが自己調整できないという欠点を回避するのに役立ち、大域最適解を取得する信頼性を向上させるのに役立ちます。

この記事では、シミュレーテッドアニーリングアルゴリズムの原理を説明し、そのコード実装を示します。

00 記事の内容
1 シミュレーテッドアニーリングアルゴリズムの原理
2 問題のインポート
3 MATLAB プログラムの実装
4 展望

01 シミュレーテッド アニーリング アルゴリズムの原理 シミュレーテッド
アニーリング アルゴリズムは、カークパトリックらによって初めて組み合わせ最適化の分野に適用されました. モンテカルロ反復解法に基づく確率的最適化アルゴリズムであり、物理学における金属アニーリングの原理を利用しています。つまり、熱力学の理論を統計的に適用することは、物理学における固体物質のアニーリングプロセスと一般的な組み合わせ最適化問題との類似性に基づいています。

SA アルゴリズムの基本的な考え方は、制御パラメータ t が減少するときに生成される一連のマルコフ連鎖において、選択された初期解から開始し、新しい解生成デバイスと許容基準を使用して、「新しい解を生成し、目的関数の計算「差異の判断 - 新しい解を受け入れるかどうかの判断 - 新しい解を受け入れるか破棄する」を実行し、現在の解を継続的に反復して、目的関数の最適な実行プロセスを作成します。固体アニーリングはゆっくりと冷却する必要があるため、固体は各温度で熱平衡に達し、最終的には平衡状態に向かう傾向があります。したがって、シミュレートされたアニーリング アルゴリズムが最終的に最適化問題に対する全体的な最適な解決策に向かうことを保証するために、制御パラメーター t の値はゆっくりと減衰する必要があります。
シミュレーテッド アニーリング アルゴリズムは、確率的なジャンプ特性を組み合わせて、解空間内の目的関数の大域的最適解をランダムに見つけます。つまり、局所的な最適解は確率的に飛び出し、最終的には大域的な最適解に近づくことができます。シミュレーテッド アニーリング アルゴリズムは一般的な最適化アルゴリズムであり、理論的には確率的な大域最適化性能を備えています。
解法手順は次のとおりです:
(1) 実現可能解空間から初期状態 x0 を選択し、その目的関数値 f(x0) を計算し、初期制御温度 T0 とマルコフ連鎖の長さを選択します。実現可能解
空間 空間内にランダムな外乱を生成し、状態生成関数を使用して新しい状態 x1 を生成し、その目的関数値 f(x1) を計算します (3) 状態許容関数に従って許容するかどうかを決定します
。 f(x1)<f(x0) の場合、新しい状態 x1 を現在の状態として受け入れます。そうでない場合は、メトロポリス基準に従って x1 を受け入れるかどうかを判断します。受け入れられた場合は、現在の状態を x1 にします。受け入れられない場合は、現在の状態を x1 にします。状態がx0に等しい; (4) 一定の収束基準に従ってサンプリングプロセスを判断する
終了した場合、はいの場合は5に進み、そうでない場合は2に進みます
(5) 一定の温度冷却計画に従って制御温度Tを下げます
。 6) ある収束基準に従って、アニーリングが終了したかどうかを判断し、終了した場合は 7 に進み、そうでない場合は 2 に進みます
( 7) 現在の解が最適解として出力されます。

02 問題の導入
SA アルゴリズムのパフォーマンスを検証するためにマルチピーク非線形関数を導入します。関数は次のとおりです。ここに画像の説明を挿入します

そのイメージは次のとおりです。ここに画像の説明を挿入します

その限界位置は (0,0) 付近で最大値を取得することであり、最大値は 1.0054 です。

03 MATLAB プログラムの実装
アルゴリズムの解決ステップに従って、メイン プログラムの一部は次のとおりです。ここに画像の説明を挿入します

完全なプログラムはコメント欄で見つけるか、電子メールでプライベートメッセージを送ってください。見つけたら送信します

プログラムを実行すると、次の結果が得られます。ここに画像の説明を挿入します

ここに画像の説明を挿入します

シミュレーテッドアニーリングの反復メカニズムは以前に紹介したアルゴリズムとは異なるため、シミュレーテッドアニーリングアルゴリズムの反復回数は通常非常に多くなりますが、その比較方法はペアワイズ比較であるため、反復速度は非常に高速です。

04 Outlook
4.1 従来のシミュレーテッド アニーリング アルゴリズムの限界
シミュレーテッド アニーリング アルゴリズムは、劣った解を受け入れる能力には限界がありますが、局所的な最適解から飛び出すことができ、原理が単純で、使用が柔軟で、大域的な最適解や解を解くのに適しています。最適化問題などに対するほぼ大域的な最適解が得られます。利点はありますが、明らかに次の欠点があります。
(1) 解決時間が長すぎます。変数が多く、目的関数が複雑な場合、適切な近似解を得るには、制御パラメータ T をより大きな値から開始し、各温度値 T でメトロポリス アルゴリズムを複数回実行する必要があるため、反復演算速度が遅くなります。遅い。
(2) 温度 T の初期値と減少ステップ サイズを決定するのは困難です。T の初期値が大きく選択され、縮小ステップ サイズが小さすぎる場合、最終的にはより良い解が得られるものの、アルゴリズムの収束が遅すぎます。T の初期値が小さく選択され、リダクションステップサイズが大きすぎると、大域的な最適解が得られない可能性があります。
(3) 探索プロセス中に、確率受け入れリンクの実行により、現在見つかっている最適解が失われます。
4.2 焼きなましアルゴリズムの改善 [1]
焼きなましアルゴリズムは理論的には焼きなましアルゴリズムの変化過程をマルコフ連鎖で記述するため、大域最適性を持っています。実際のアプリケーションにおけるシミュレーテッド アニーリング アルゴリズムはヒューリスティック アルゴリズムです。開始温度、温度降下計画、固定温度の反復長、終了ルールなど、手動で調整する必要があるパラメータが多数あります。

一定の必要な最適化品質を確保することに基づいて、シミュレーテッドアニーリングアルゴリズムの検索効率(時間パフォーマンス)を改善することが、SAアルゴリズムを改善する主な内容です。考えられる解決策は次のとおりです。
(1) 加熱または再加熱プロセスを増やす。アルゴリズム プロセスの適切な時点で、温度を適切に上昇させて各状態の受け入れ確率をアクティブにして、探索プロセスの現在の状態を調整し、アルゴリズムが極小解で停滞するのを防ぐことができます。
(2) メモリ機能を増加します。検索プロセス中の確率受け入れリンクの実行によって現在見つかっている最適解が失われないようにするために、ストレージ リンクを追加することで「これまでの最良」状態を記憶できます。
(3) 補助検索処理を追加します。すなわち、アニーリング処理が完了した後、探索された最適解を初期状態として、再度、シミュレーテッドアニーリング処理または局所走化性探索が実行される。
(4) 各現在の状態について、標準的な SA の単一の比較方法の代わりに、複数の検索戦略を使用して領域内の最適な状態を確率で受け入れます。
(5) 遺伝的アルゴリズム、カオス検索など、他の検索メカニズムと組み合わせたアルゴリズム。

参考文献
[1] Zhu Haodong、Zhong Yong、改良されたシミュレーテッド アニーリング アルゴリズム [J]、コンピュータ技術と開発、2009 年、19(06):32-35。

もう 1 つ: 解決すべき最適化問題 (あらゆる種類の分野が利用可能) を抱えているパートナーがいる場合は、私に送っていただければ、これらの問題を解決するための最適化アルゴリズムの使用に関する記事を選択的に更新します。

この記事が役に立ったり、インスピレーションを与えたりした場合は、右下隅にある「いいね (ง •̀_•́)ง」をクリックしてください (クリックする必要はありません)。カスタマイズが必要な場合は、著者にプライベート メッセージを送信できます。 。

おすすめ

転載: blog.csdn.net/sfejojno/article/details/132030873