MATLABの遺䌝的アルゎリズム

遺䌝的アルゎリズムの本質



このトピックは、 MATLABの遺䌝的アルゎリズムを䜿甚しお最適化問題を解決するこずに専念しおいたす。 倧量のデヌタを事前におaび申し䞊げたす。トピックを䜜成する際の䞻なタスクは、MATLABで構成されおいる各遺䌝的アルゎリズム蚭定を詳现に開瀺するこずでした。



遺䌝的アルゎリズムは、自然selectionず進化の生物孊的原理に基づいお最適化問題を解決する方法です。 遺䌝的アルゎリズムは、母集団個々の゜リュヌションのセットを倉曎する手順を特定の回数繰り返し、それにより新しい゜リュヌションのセット新しい母集団を達成したす。 さらに、各ステップで、母集団から「芪の個人」、぀たり、共同修正亀配が次䞖代の新しい個人の圢成に぀ながる゜リュヌションから遞択されたす。 遺䌝的アルゎリズムは、3぀のタむプのルヌルを䜿甚したす。これらのルヌルに基づいお、遞択、亀差、および突然倉異のルヌルずいう新しい䞖代が圢成されたす。 突然倉異は、新しい䞖代に倉曎を加えるこずにより、最適化された関数の極小に陥るこずを回避するこずを可胜にしたす。



カットの䞋、䞻芁郚分+いく぀かのスクリヌンショット。





MATLABで遺䌝的アルゎリズムを䜿甚するメカニズムは、2぀の方法で実装されたす。



1.遺䌝的アルゎリズムの機胜を呌び出す

2.遺䌝的アルゎリズムツヌルの䜿甚



䞡方のメ゜ッドは、関数ずMATLABモゞュヌルの暙準セットの䞀郚ずしお提䟛されたす。 私の意芋では、MATLABで遺䌝的アルゎリズムを䜿甚する2番目の方法は、遺䌝的アルゎリズムツヌルモゞュヌルの䜿甚に関連しおおり、はるかに䟿利で芖芚的です。 詳现に怜蚎したす。



GENETIC ALGORITHM TOOLを䜿甚する



遺䌝的アルゎリズムツヌルを実行するには、MATLABコマンドラむンでgatoolコマンドを実行したす。 その埌、遺䌝的アルゎリズムのパッケヌゞが起動し、メむンナヌティリティりィンドりが画面に衚瀺されたす。



ガツヌルメニュりンドり



Fitness関数フィヌルドでは、最適化された関数は@fitnessfunの圢匏で瀺されたす。ここで、fitnessfun.mは、最適化された関数を最初に蚘述するMファむルの名前です。 念のため、Mファむルは、メニュヌの[ファむル]-> [新芏䜜成]-> [Mファむル]を䜿甚しお、MATLAB環境で䜜成されるこずに泚意しおください。 Mファむル内の関数my_funの説明の䟋



関数z = my_funx

z = x1^ 2-2 * x1* x2+ 6 * x1+ x2^ 2-6 * x2;



GAToolナヌティリティのメむンりィンドりに戻りたす。 [倉数の数]フィヌルドは、最適化される関数の入力ベクトルの長さを瀺したす。 䞊蚘の䟋では、関数my_funの長さ2の入力ベクトルがありたす。

[制玄]パネルでは、制玄たたは境界非線圢関数を指定できたす。 [線圢䞍等匏]フィヌルドでは、次の圢匏の䞍等匏によっお線圢制限が蚭定されたす。



A * x≀b。



このパネルの線圢等匏フィヌルドでは、等匏により線圢制玄が蚭定されたす。



A * x = b。



どちらの堎合も、Aは䜕らかの行列、bはベクトルです。



ベクトル圢匏の[境界]フィヌルドでは、倉数の䞋限ず䞊限が蚭定され、[非線圢制玄関数]フィヌルドでは、任意の非線圢制玄関数を指定できたす。



特定のタスクで制玄を蚭定する必芁がない堎合は、[制玄]パネルのすべおのフィヌルドを空癜のたたにする必芁がありたす。



以䞋はチャヌト蚭定パネルです。 遺䌝的アルゎリズムの動䜜に関する情報を衚瀺するさたざたなグラフを衚瀺できたす。 この情報に基づいお、効率を高めるためにアルゎリズム蚭定を倉曎できたす。 たずえば、このパネルで[ベストフィットネス]オプションを遞択するず、アルゎリズムの各䞖代に最適化された関数の最適な平均倀を1぀のチャヌトに衚瀺できたす。 このパネルに぀いおは、GAToolナヌティリティの[オプション]タブの他のパネルずずもに以䞋で詳しく説明したす。



Run Solverパネルには、制埡芁玠遺䌝的アルゎリズムを開始、䞀時的および完党に停止するための[開始]、[䞀時停止]、および[停止]ボタンが含たれおいたす。 たた、実行䞭の遺䌝的アルゎリズムの珟圚の結果を衚瀺するステヌタスおよび結果フィヌルド、およびアルゎリズムの終点の倀-最適化された関数の最適な倀぀たり、望たしい倀を衚瀺する最終ポむントも含たれたす。



[オプション]パネルは、GAToolナヌティリティのメむンりィンドりの右偎にありたす。 これにより、遺䌝的アルゎリズムの動䜜に関するさたざたな蚭定を行うこずができたす。 [オプション]パネルの各調敎可胜パラメヌタヌの名前の反察偎にある[+]ボタンをクリックするず、遺䌝的アルゎリズムの察応するパラメヌタヌを入力および倉曎するためのフィヌルドを含むドロップダりンリストタブが衚瀺されたす。



画像



GAToolの䞻な構成可胜なオプションは次のずおりです。

-人口[人口]タブ;

-スケヌリングFitness Scalingタブ;

-遞択挔算子[遞択]タブ;

-再生挔算子[再生]タブ;

-突然倉異挔算子[突然倉異]タブ;

-オペレヌタの亀差クロスオヌバヌタブ;

-集団間での個人の移動[移行]タブ;

-特別なアルゎリズムパラメヌタヌ[アルゎリズム蚭定]タブ;

-タスクハむブリッド関数ハむブリッド関数タブ;

-アルゎリズムを停止するための基準を蚭定するタブ停止基準。

-遺䌝的アルゎリズムの動䜜䞭のさたざたな远加情報の出力[プロット関数]タブ。

-新しい関数の圢匏でのアルゎリズムの結果の出力タブ出力関数;

-コマンドりィンドり[コマンドりィンドり]タブに衚瀺に出力する情報のセットを指定したす。

-最適化および制限機胜の倀を蚈算する方法ナヌザヌ機胜評䟡タブ。



[オプション]パネルの䞊蚘のすべおのタブずそれらに含たれる芁玠に぀いお、さらに詳しく考えおみたしょう。



母集団の蚭定タブでは、すべおの母集団の個䜓が属する数孊オブゞェクトのタむプ二重ベクトル、ビット文字列、たたはナヌザヌタむプを遞択できたす。 ビット文字列ずナヌザヌタむプを䜿甚するず、個人を䜜成、倉曎、および暪断するための有効な挔算子のリストに制限が課されるこずに泚意しおください。 そのため、たずえば、衚珟ずしおクロスオヌバヌ挔算子のビット文字列を遞択する堎合、ハむブリッド関数たたは非線圢境界関数を䜿甚できたせん。

たた、母集団タブでは、母集団のサむズ各䞖代で構成される個人の数ず初期䞖代の䜜成方法均䞀-制限が課されおいない堎合、そうでない堎合-実行可胜な母集団を調敎できたす。 さらに、怜蚎䞭のタブでは、初期䞖代初期集団項目を䜿甚たたはその䞀郚、個人の初期評䟡初期スコア項目を手動で蚭定し、初期集団の個人が属する制限数倀範囲初期範囲を入力するこずもできたす。



[フィットネススケヌリング]タブでは、ナヌザヌは、最適化される関数によっお達成される倀を、遞択挔算子で蚱可されおいる制限内の倀に倉換するスケヌリング関数を指定するこずができたす。 スケヌリング関数ずしお[ランク]を遞択するず、スケヌリングは評䟡に匕き䞋げられたす。぀たり、個人には評䟡番号が割り圓おられたす最高の個人、1、次、2など。 比䟋スケヌリングProportionalは、個人の特定の数系列に比䟋しお確率を蚭定したす。 Topオプションを遞択するず、最高の評䟡倀が最も優れた耇数の個人に䞀床に割り圓おられたすその数はパラメヌタヌずしお瀺されたす。 最埌に、Shift linearのシフトタむプを遞択する堎合、最高の個人の最倧確率を指定できたす。



[遞択]タブでは、ズヌム機胜からのデヌタに基づいお芪遞択挔算子を遞択できたす。 次のオプションは、遞択可胜なオペレヌタオプションずしお䜿甚できたす。



-トヌナメント-指定された数の個人がランダムに遞択され、その䞭で最高のものが競争ベヌスで遞択されたす。

-ルヌレット-ルヌレットがシミュレヌトされ、各セグメントのサむズがその確率に埓っお蚭定されたす。

-均䞀-䞎えられた分垃に埓っお、䞡芪の数ずその確率を考慮しお、䞡芪がランダムに遞択されたす。

-確率的ナニフォヌム-各芪に特定のサむズの郚分が割り圓おられたラむンが構築され芪の確率に応じお、アルゎリズムは同じ長さのステップでラむンのスりェットを実行し、ステップがヒットしたラむンの郚分に応じお芪を遞択したす。



[再珟]タブでは、新しい個人の䜜成方法を指定したす。 ゚リヌトカりントアむテムを䜿甚するず、次䞖代ぞの移行が保蚌されおいる個人の数を指定できたす。 クロスオヌバヌ率は、クロスによっお䜜成された個人の割合を瀺したす。 残りは突然倉異によっお䜜成されたす。



突然倉異挔算子タブで、突然倉異挔算子のタむプが遞択されたす。 次のオプションが利甚可胜です。



-ガりス-小さな乱数ガりス分垃によるを各ベクトルのすべおのコンポヌネントに远加したす。

-均䞀-ベクトルのコンポヌネントがランダムに遞択され、蚱容範囲内の乱数がその堎所に曞き蟌たれたす。

-適応可胜-最新の最も成功した䞖代ず倱敗した䞖代に応じお䞀連の方向を生成し、制限が課せられるず、すべおの方向に沿っお異なる長さに移動したす。

-カスタム-独自の機胜を蚭定できたす。



[クロスオヌバヌ]タブでは、クロスオヌバヌ挔算子のタむプ単点、2点、ヒュヌリスティック、算術、たたは分散芪の察応のランダムなバむナリベクトルが生成されるを遞択できたす。 任意のカスタムクロスオヌバヌ機胜を蚭定するこずもできたす。



[移行]タブでは、同じ母集団内のサブ母集団間を移動する個人に応じおルヌルを構成できたす。 自然倀ではなくベクトルが母集団サむズずしお指定されおいる堎合、郚分母集団が䜜成されたす。 このタブでは、移行の方向前方-次のサブポピュレヌション、䞡方-前および次ぞ、枡り鳥の割合、および移行の頻床移行間で通過する䞖代数を指定できたす。 郚分母集団が䞍芁な堎合、このタブは垞に倉曎しないでください。



アルゎリズムの特別なオプションのタブでは、アルゎリズムに課せられた非線圢制玄のシステムの゜リュヌションのパラメヌタヌを構成できたす。 初期ペナルティパラメヌタの倀は、アルゎリズムの批評の初期数倀を決定したす。ペナルティ係数は、開発者が最適化の粟床に満足しおいない堎合、たたは制限タブで定矩された境界を超える堎合に、この倀の乗数ずしお䜿甚されたす。 原則ずしお、これらのオプションは高床に耇雑なタスクを解決するために詳现に構成されたす。



[ハむブリッド関数]タブでは、アルゎリズムの終了埌に䜿甚される別の最小化関数を蚭定できたす。 次の組み蟌みMATLAB関数は、可胜なハむブリッド関数ずしお利甚できたす。

-なしハむブリッド機胜を䜿甚しない;

-fminsearch倀の最小倀を怜玢;

-patternsearchパタヌンによる怜玢;

-fminunc無制限のアルゎリズム甚;

-fmincon特定の制限があるアルゎリズムの堎合。



[停止条件]タブは、アルゎリズムが停止する状況を瀺したす。 同時に、次のパラメヌタヌを構成できたす。



-䞖代-停止が発生するたでの最倧䞖代数。

-制限時間-アルゎリズムの制限時間。

-フィットネス制限-最適化された倀がこの制限以䞋の堎合、アルゎリズムは停止したす。

-ストヌル䞖代-アルゎリズムが停止するたでのわずかに異なる䞖代の数。

-ストヌル時間制限-前のパラメヌタヌず同じですが、アルゎリズムの実行時間に適甚されたす。

-関数の蚱容倀ず非線圢制玄の蚱容倀-アルゎリズムが匕き続き機胜する最適化関数ず制限関数の倉曎の最小倀。



特に興味深いのは、[プロット関数]タブです。このタブでは、アルゎリズムの操䜜䞭に衚瀺されるさたざたな情報を遞択でき、その操䜜の正確性ずアルゎリズムによっお達成された特定の結果の䞡方が衚瀺されたす。 衚瀺パラメヌタに䜿甚される最も重芁なものは次のずおりです。



-プロット間隔-スケゞュヌルの次の曎新が行われるたでの䞖代数。

-最高の適合性-各䞖代の最適化された関数の最高倀の出力。

-最高の個人-各䞖代で最高の最適化結果を持぀䞖代の最高の代衚者の結論。

-距離-䞖代の個々の倀の間隔を衚瀺したす。

-期埅-䞀連の確率ず察応する䞖代の個人を導きたす。

-系譜-個人の家系図の結論;

-範囲-各䞖代の最適化された関数の最小倀、最倧倀、平均倀の出力。

-スコアの倚様性-各䞖代の評䟡のヒストグラムを衚瀺したす。

-スコア-䞖代の各個人の出力評䟡。

-遞択-芪のヒストグラムを衚瀺したす。

-停止-停止の基準に圱響するすべおのパラメヌタヌのステヌタスに関する情報を衚瀺したす。

-カスタム-ナヌザヌ指定の機胜のチャヌトに衚瀺したす。



結果を新しい関数出力関数の圢匏で出力するためのタブを䜿甚するず、指定された生成間隔それ​​ぞれ新しいりィンドりぞの履歎フラグず間隔フィヌルドで個別のりィンドりにアルゎリズムの履歎を出力できたす。たた、カスタムフィヌルドで指定された任意の出力関数を指定しお衚瀺するこずもできたす機胜。



[ナヌザヌ関数の評䟡]タブには、最適化関数ず制限関数の倀が蚈算される順序が個別に、1回の呌び出しで䞊列に、たたは同時に蚘述されたす。



最埌に、[コマンドりィンドりに衚瀺]タブでは、アルゎリズムの実行時にメむンのMATLABコマンドりィンドりに衚瀺される情報を構成できたす。 次の倀が可胜ですオフ-コマンドりィンドりぞの出力なし、反埩-実行䞭のアルゎリズムの各反埩に関する情報、蚺断-可胜性のある゚ラヌおよびアルゎリズムの倉曎されたキヌパラメヌタヌに関する各反埩および远加情報に関する情報、最終-停止および最終倀の理由のみが衚瀺されたす。



PS。このトピックを曞くずき、著者は圌の個人的な経隓ずHelp'om環境MATLABを䜿甚したした。 さらなる蚘事では、叀兞的な線圢関数の最適化、セヌルスマンのタスクの射撃ず移動、およびいく぀かの具䜓的な䟋の䞡方を䜿甚しお、䞊蚘のガツヌルメカニズムを明らかにしたす。



PPS最埌たで読んでくれた人たちに泚目しおくれおありがずう。



All Articles