[最適化された分布] matlab 遺伝的アルゴリズムに基づくアンテナ線形アレイ分布の最適化問題を解く [Matlab ソース コード 2679 を含む]

⛄1. 遺伝的アルゴリズムの概要

1 遺伝的アルゴリズムの概要 遺伝的
アルゴリズム(GA)は、進化コンピューティングの一部であり、ダーウィンによる生物進化の遺伝的選択と自然淘汰の過程を模擬した計算モデルであり、自然進化の過程を模擬して最適解を探索する手法です。このアルゴリズムはシンプルで汎用的、堅牢であり、並列処理に適しています。

2. 遺伝的アルゴリズムの特徴と応用
遺伝的アルゴリズムは、複雑なシステムの最適化に使用できるロバストな探索アルゴリズムの一種で、従来の最適化アルゴリズムと比較して、次のような特徴があります
。操作オブジェクト。従来の最適化アルゴリズムは、最適化計算に決定変数そのものの実際の値を使用することが多いですが、遺伝的アルゴリズムでは、決定変数を何らかの形でコーディングして演算対象とします。決定変数をエンコードするこの方法により、生物学における染色体や遺伝子などの概念を最適化計算の参考として使用したり、自然界の生物の遺伝的および進化的インセンティブを模倣したり、遺伝的演算子を簡単に適用したりすることができます。
(2)フィットネスをそのまま検索情報として利用する。従来の最適化アルゴリズムは、目的関数の値を使用する必要があるだけでなく、検索プロセスが目的関数の連続性によって制約されることが多く、「目的関数の導関数が存在する必要がある」という要件を満たす必要がある場合もあります。検索方向を決定します。遺伝的アルゴリズムは、目的関数の微分値などの他の補助情報を使用せず、目的関数の値から変換された適合度関数の値のみを使用して、さらなる検索範囲を決定します。また、目的関数値や個別適応度値を直接利用することで、より適応度の高い探索空間に探索範囲を集中させることができ、探索効率を向上させることができる。
(3) 複数点の探索情報を利用することにより、暗黙の並列性が生じます。従来の最適化アルゴリズムは、多くの場合、解空間の初期点から開始して最適解を求める反復検索プロセスです。単一の点から提供される探索情報は多くないため、探索効率は高くなく、局所的な最適解に陥って停滞する可能性があります;遺伝的アルゴリズムは、多数の点から構成される初期母集団から最適解の探索プロセスを開始します単一の個人からではなく、個人から検索を開始します。選択、交叉、突然変異などの操作が初期集団に対して実行され、多くのグループ情報を含む新世代の集団が生成されます。この情報により、局所的な最適解に陥ることを回避し、徐々に全体的な最適解に近づくために、いくつかの不必要な点の検索を回避できます。
(4) 決定論的なルールの代わりに確率論的な検索を使用します。従来の最適化アルゴリズムでは、多くの場合、決定論的な検索方法が使用されます。ある検索ポイントから別の検索ポイントへの転送には、明確な転送方向と転送関係があります。この確実性により、検索が最適なストアに到達できない可能性があり、アルゴリズムの適用範囲が制限されます。遺伝的アルゴリズムは適応探索技術であり、その選択、交叉、突然変異などの操作が確率的に実行されるため、探索プロセスの柔軟性が向上し、高い確率で最適解に収束することができます。 。ただし、交叉確率や突然変異確率などのパラメータもアルゴリズムの検索結果や検索効率に影響を与えるため、遺伝的アルゴリズムのパラメータをどのように選択するかは、その適用において比較的重要な問題となります。
要約すると、遺伝的アルゴリズムの全体的な探索戦略と最適な探索方法は、計算中の勾配情報やその他の補助知識に依存しないため、探索方向に影響を与える目的関数と対応する適合度関数を解くだけで済みます。遺伝的アルゴリズムは、複雑なシステムの問題を解決するための一般的なフレームワークを提供します。問題の特定領域に依存せず、問題の種類に対するロバスト性が高いため、機能最適化、組み合わせ最適化、生産スケジューリング問題、自動制御、ロボティクス、画像処理など、さまざまな分野で広く利用されています(
画像復元、画像エッジ特徴抽出...)、人工生命、遺伝的プログラミング、機械学習。

3. 遺伝的アルゴリズムの基本的な流れと実装技術
Simple Genetic Algorithms (SGA) は、選択演算子、交叉演算子、突然変異演算子の 3 つの遺伝演算子のみを使用し、進化の過程が単純であり、他の遺伝的アルゴリズムの基礎となっています。

3.1 遺伝的アルゴリズムの基本プロセス
一定の長さ(長さは解くべき問題の精度に関係します)でエンコードされたいくつかの初期集団をランダムに生成し、適応度関数を通じて各個体を評価し、高い
適応度を持つ個体を選択します遺伝子操作に参加するために、適応度の低い個体は排除され、
遺伝子操作 (複製、交叉、突然変異) による個体の集合は、停止基準が満たされるまで (進化代数 GEN>=?)、新しい世代の集団を形成します
。アルゴリズムの実行結果。
ここに画像の説明を挿入
このうち、GEN は現在の世代、M は集団サイズ、i は集団数を表します。

3.2 遺伝的アルゴリズムの実装技術
基本的な遺伝的アルゴリズム (SGA) は、コーディング、適応度関数、遺伝的演算子 (選択、交叉、突然変異) および操作パラメータから構成されます。
3.2.1 エンコード
(1) バイナリエンコード
バイナリエンコードの文字列長は、解く問題の精度に関係します。ソリューション空間内のすべての個人を確実にエンコードできるようにする必要があります。
長所: エンコードとデコードの操作が簡単、継承とクロスオーバーの実装が簡単
短所: 長さが長い
(2)
グレイコード、浮動小数点数エンコード、シンボルエンコード、マルチパラメータエンコードなどの他のエンコード方式
3.2.2 フィットネス
関数適応度関数は、染色体と問題に対する最適解の染色体との間の距離を効果的に反映する必要があります。
3.2.3 選択演算子
ここに画像の説明を挿入
3.2.4 交叉演算子
交叉操作とは、2 つのペアの染色体の一部の遺伝子を特定の方法で交換して 2 つの新しい個体を形成することを指します; 交叉操作は、他の進化的アルゴリズムとは異なる遺伝的アルゴリズムです。新しい個体を生成するための主な方法。交叉の前に、グループ内の個体をペアにする必要があり、一般にランダムペアリングの原理が採用されます。
一般的に使用されるクロスオーバー方法:
1 点クロスオーバー、
2 点クロスオーバー (多点クロスオーバー、クロスオーバー ポイントの数が増えるほど、個々の構造が破壊される可能性が高くなります。多点クロスオーバー方法は一般に使用されません) 3.2.5
変異計算 亜遺伝的アルゴリズムにおける変異操作とは、個々の染色体コード列の一部の遺伝子座の遺伝子値を、その遺伝子座の他の対立遺伝子と置き換えて新しい個体を形成することを指します。


遺伝的アルゴリズムの操作中に新しい個体を生成する能力の点で、交叉操作は新しい個体を生成するための主な方法であり、遺伝的アルゴリズムの全体的な検索能力を決定しますが、突然変異操作は単なる補助的な方法です。遺伝的アルゴリズムの局所探索能力を決定する演算ステップが 1 つ減ります。交差演算子と突然変異演算子の組み合わせにより、探索空間のグローバル探索とローカル探索が完了し、遺伝的アルゴリズムが良好な探索パフォーマンスで最適化問題の最適化プロセスを完了することができる。

3.2.6 操作パラメータ
ここに画像の説明を挿入
4 遺伝的アルゴリズムの基本原理
4.1 パターン定理

ここに画像の説明を挿入
4.2 ビルディングブロックの仮定
次数が低く、定義長が短く、適応度が集団の平均適応度よりも高いパターンを遺伝子ブロックまたはビルディングブロックと呼びます。
ビルディングブロック仮説: 個々の遺伝子ブロックは、選択、交叉、突然変異などの遺伝的オペレーターの効果によって一緒にスプライスされ、より高い適合度を備えた個々のコード文字列を形成することができます。
ビルディング ブロック仮説は、さまざまな問題を解決するために遺伝的アルゴリズムを使用するという基本的なアイデアを示しています。つまり、ビルディング ブロックを直接つなぎ合わせることでより良い解決策を生み出すことができます。

⛄ 2. ソースコードの一部

% 遺伝的アルゴリズムの最適化スパース アンテナ アレイ問題を
すべてクリア
clc
フォーマット long e;
indivlength=1000; % 個々の文字列の長さ
Popsize=50; % 初期集団サイズ
グローバル atennum;
atennum=500; % 配列要素番号
eranum=200; % 最大反復回数
pc=0.8; %交叉確率
pm=0.05; %突然変異確率
%pcmin=0.5;
%pmmin=0.03;
%deltapc=(pc-pcmin)*100/eranum;
%deltapm=(pm-pmmin)*100/eranum ;
T1=クロック;
s=sprintf('プログラムが実行中です、しばらくお待ちください...');
disp(s);
%最初のステップ、実数エンコード
% 初期集団
トレースを生成します=zeros(eranum,indivlength+1) ; % 最適な軌道
Pop=initpop(popsize,indivlength,atennum);
i=1:eranum の場合
[fitvalue]=calfitval(popsize,indivlength,pop);
[bestindivdual,bestfit]=best(pop,fitvalue);
[選択]=select(fitvalue,pop);
[newpop]=cross(選択,pc);
[newpop]=突然変異(newpop,pm);
Pop=[newpop;bestindivdual];
トレース(i,1)=ベストフィット;
トレース(i,2:indivlength+1)=bestindivdual;
%if mod(i,100)==0
% pc=pc-deltapc;
%pm=pc-deltapm;
%終了
終了

⛄3. 走行結果

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

⛄4. Matlab のバージョンとリファレンス

1 MATLAB バージョン
2014a

2 参考文献
[1] Bao Ziyang、Yu Jizhou、Yang Shan. インテリジェント最適化アルゴリズムとその MATLAB 例 (第 2 版) [M]. Electronic Industry Press、2016. [2] Zhang Yan、Wu Shuigen. MATLAB 最適化アルゴリズム ソース コード
[ M]. 清華大学出版局、2017 年。

3 備考 はじめ
に この部分はインターネットから取得したものであり、参照のみを目的としています。侵害がある場合は、連絡して削除してください。

おすすめ

転載: blog.csdn.net/TIQCmatlab/article/details/131125452
おすすめ