制約のある最適化問題を解決するための一般的な改良された遺伝的アルゴリズム (MATLAB コード)

目次

1。概要

2 遺伝的アルゴリズム

2.1 遺伝的アルゴリズムの基本概念

2.2 遺伝的アルゴリズムの特徴 

2.3 プログラムブロック図 

3 つの実行結果

 4 制約のある最適化問題を解決するための一般的な改良された遺伝的アルゴリズム (MATLAB コード)


1。概要

       遺伝的アルゴリズム (GA) は、自然環境における生物の遺伝および進化のプロセスをシミュレートすることによって形成された適応的全体最適化探索アルゴリズムです。米国の JH ホランド教授によって最初に提案され、1960 年代の自然および人工の適応システムの研究に端を発し、1970 年代には KADe Jong が遺伝的アルゴリズムの考えに基づいて数多くの研究を実施しました。コンピュータ上での純粋数値関数最適化計算実験の研究80 1990 年代に、遺伝的アルゴリズムは一連の研究成果に基づいて DJGoldberg によって要約されました。遺伝的アルゴリズムは、自然界の生物学的進化メカニズムを模倣して開発された、ランダムなグローバル検索および最適化手法です。これは、ダーウィンの進化論とメンデルの遺伝理論に基づいており、本質的に並列で効率的なグローバル検索方法であり、検索プロセス中に検索空間に関する知識を自動的に取得して蓄積し、検索プロセスを適応的に制御して、最適な解決策。遺伝的アルゴリズムの操作: 「適者生存」の原理を使用して、潜在的な解の母集団内で近似的な最適解を連続的に生成します。各世代において、問題領域における個体の適応度値と自然遺伝学から借用した再構成手法に従って個体選択が行われ、新たな近似解が生成されます。このプロセスは集団内の個体の進化につながり、その結果生じる新しい個体は元の個体よりも環境によく適応します。

       自然選択理論では、適者が生き残り、生物が生き残りたい場合は生存のために戦わなければならないと考えられています。生存競争には、種内闘争、種間闘争、生物と環境の間の闘争の 3 つの側面が含まれます。生存競争では、有利な突然変異を持つ個体は生き残る傾向があり、有利な突然変異を子孫に伝える機会が多くなりますが、不利な突然変異を持つ個体は排除される可能性が高く、子孫を残す機会は非常に少なくなります。したがって、生存競争で勝利する個体はすべて環境適応力の高い個体である。ダーウィンは、生存競争における適者生存と不適者排除のこのプロセスを自然選択と呼びましたダーウィンの自然選択理論は、遺伝と変異が生物の進化を決定する内部要因であることを示しています。遺伝は親と子孫の間の形質の類似性を指し、変異は親と子孫の間、および子孫の個体間の形質の違いを指します。生物では、遺伝と変異は密接に関係しています。生物の遺伝形質は突然変異する傾向があり、突然変異した形質の一部は受け継がれる可能性があります。遺伝は生物の形質を子孫に継続的に伝えて種の特性を維持することができ、変異は生物の形質を変化させて新しい環境に適応し、発展を続けることができます。生き物のあらゆる生命活動には物質的な基盤があり、生き物の遺伝や変異も同様です。現代の細胞学と遺伝学の研究によると、遺伝物質の主な伝達者は染色体であり、遺伝子は遺伝的影響を与える断片であり、遺伝情報を保存し、正確にコピーでき、突然変異も起こすことができます。生物自体が、遺伝子の重複と交叉を通じて形質の継承を選択し、制御します。同時に、遺伝子の組み換えや遺伝子の変異、染色体の構造や数の変化などにより、さまざまな変異現象が生じます。生物の遺伝的特性により、生物界の種は比較的安定した状態を保つことができ、生物の変異特性により、個々の生物は新しい形質を生み出し、さらには新しい種を形成することができ、それが生物の進化と発展を促進します。生物の生殖における遺伝子の交叉と突然変異の可能性により、生物学的形質の継続的なわずかな変化が引き起こされ、それが外部環境の方向性選択のための物質的条件と基礎を提供し、生物学的h2の進化を可能にします

2 遺伝的アルゴリズム

2.1 遺伝的アルゴリズムの基本概念

簡単に言うと、遺伝的アルゴリズムは集団検索技術を使用して集団を一連の問題解決策として表現し、選択、交叉、突然変異などの一連の遺伝的操作を      現在の集団に適用することで新しい世代の集団を生成します。集団を徐々に進化させて、ほぼ最適な最適状態を含めます。遺伝的アルゴリズムは自然遺伝学と計算機科学の相互浸透によって形成された計算手法であるため、遺伝的アルゴリズムでは自然進化に関連するいくつかの基本用語が頻繁に使用され、用語間の対応関係を表 2.1 に示します。

遺伝学用語

遺伝的アルゴリズムの用語

グループ

実現可能な解決策セット

個人

実現可能な解決策

染色体

実現可能なソリューションのエンコード

遺伝子

実行可能にデコード可能なコンポーネント

遺伝的形態

遺伝コード

適応力

目的関数の値

選ぶ

アクションを選択

クロス

クロス操作

突然変異

突然変異操作

2.2 遺伝的アルゴリズムの特徴 

遺伝的アルゴリズムは、自然環境における生物の遺伝的および進化の過程をシミュレートすることによって形成された、並列的かつ効率的かつグローバルな検索手法であり、主に次の特徴があります。

(1) 遺伝的アルゴリズムは、決定変数の符号化を演算対象とします。決定変数をエンコードするこの方法により、最適化計算のプロセスで参考として生物学における染色体や遺伝子などの概念を使用したり、自然界の遺伝や進化のメカニズムを模倣したり、遺伝的演算子を便利に適用したりすることが可能になります。特に、コードの概念のみで値の概念が存在しない、あるいは値の概念が存在しにくい一部の最適化問題では、符号化処理方式が特有の利点を発揮します。

(2) 遺伝的アルゴリズムは、目的関数の値をそのまま検索情報として使用します目的関数の微分値などの他の補助情報を必要とせず、目的関数の値から変換された適合度関数の値のみを使用して、さらなる探索方向と探索範囲を決定します。実際の応用においては、導出できない関数や導出困難な関数、あるいはそもそも存在しない関数も多くありますが、このような目的関数の最適化や組み合わせ最適化には、関数導出の問題を回避できる遺伝的アルゴリズムが高い優位性を示します。障害。

(3) 遺伝的アルゴリズムは複数の探索点の探索情報を同時に利用します最適解を求める遺伝的アルゴリズムの探索プロセスは、単一の個人からではなく、多数の個人から構成される初期グループから始まります。

このグループに対して選択、交叉、突然変異などの操作を実行して、多くのグループ情報を含む新世代のグループを生成します。この情報により、不必要な点の検索を回避できます。これは、遺伝的アルゴリズムに特有の暗黙的な並列処理の一種で、より多くの点を検索することに相当します。

(4) 遺伝的アルゴリズムは、確率に基づく検索技術です遺伝的アルゴリズムは適応確率探索技術であり、選択、交叉、突然変異などの操作がすべて確率的に実行されるため、探索プロセスの柔軟性が向上します。この確率的特性により、個体群の中には適応度の低い個体も生まれますが、進化の過程が進むにつれて、常により多くの優れた個体が新しい個体群から生み出されます。他のアルゴリズムと比較して、遺伝的アルゴリズムの堅牢性により、検索効果に対するパラメーターの影響が可能な限り小さくなります。(5) 遺伝的アルゴリズムは自己組織化、自己適応、自己学習の特徴を持っています。遺伝的アルゴリズムが進化の過程を利用して情報を取得し、独自の探索を組織化する場合、適応度の高い個体は生存確率が高く、環境により適応可能な遺伝構造を獲得します。同時に、遺伝的アルゴリズムには拡張性があり、他のアルゴリズムと組み合わせて、双方の利点を組み合わせたハイブリッドアルゴリズムを生成することが容易です。

2.3 プログラムブロック図 

          

遺伝的アルゴリズムの動作フローを図 2.1 に示します。具体的な手順は次のとおりです。

(1) 初期化進化代数カウンタ g=0 を設定し、最大進化代数 G を設定し、初期集団 P(0) として NP 個体をランダムに生成します。

(2) 個人の評価母集団内の各個人の適応度 P() を計算します。

(3) 動作を選択します選択オペレーターは集団に作用し、個体の適応度に応じて、一定の規則または方法に従って、次世代の集団に継承するいくつかの優れた個体を選択します。

(4) クロス操作集団に交叉演算子を適用し、選択した個体のペア間で染色体を一定の確率で交換して新しい個体を生成します。

(5) 変化動作集団に突然変異演算子を適用し、選択した個体の 1 つまたは一部の遺伝子値を一定の確率で他の対立遺伝子に変更します。集団 P(i) が選択、交叉、突然変異操作を受けた後、次世代の集団 P(t+1) が得られます。適応度値を計算し、適応度値に従って並べ替えて、次の遺伝的操作に備えます。

(6) 終了条件判定:g<Gの場合はg=g+1、(2)へ進み、g>Gの場合は今回の進化過程で得られた適応度が最大の個体を最適解として出力し、計算を終了します。

コードの一部:

function New_Population = EnviornmentalSelection(Population,Offspring,state)
% 本函数用来挑选新的种群

N = length(Population);
New_Population = Population;

%% 基本思路如下:为了确保种群的多样性,采用一对一替换机制。只有后代表现强于父代才会发生替换。
for i=1:N
    pcv = Population(i).con;
    ccv = Offspring(i).con;
    pf = Population(i).obj;
    cf = Offspring(i).obj;
    if (pcv == 0 && ccv == 0) % 采用 feasible rules 挑选新解
        if pf < cf
            New_Population(i) = Population(i);
        else
            New_Population(i) = Offspring(i);
        end
    else
        if pcv < ccv
            New_Population(i) = Population(i);
        else
            New_Population(i) = Offspring(i);
        end
    end
end

% %% 此处采用精英保留策略,每一次迭代之后,挑选指定数量的最佳解替换最劣解,其中数量于概率根据迭代进度计算
% objs = [New_Population.obj];
% cons = [New_Population.cons];
% [~,index] = sortrows([cons' objs']);
% n = ceil((1-state)*(N/100));
% if rand>state*state/2
%     New_Population(index(end-n+1:end)) = New_Population(index(1:n));
% end

3 つの実行結果

 4 制約のある最適化問題を解決するための一般的な改良された遺伝的アルゴリズム (MATLAB コード)

ブログホームページ: @果格格果树果

おすすめ

転載: blog.csdn.net/weixin_61181717/article/details/128097603