AO Skyhawk 最適化アルゴリズム | ソース コード (メタヒューリスティック アルゴリズム) を含む | 23 の古典的な関数 (ソース コードを含む) を実行

-------往期目录------

1. ハイイロオオカミ最適化アルゴリズム



スカイホークオプティマイザー

Aquila Optimizer (AO) は、獲物を捕らえるアクイラの自然な行動からインスピレーションを受けています。したがって、提案する AO アルゴリズムの最適化プロセスは、垂直屈曲高ソアリングによる探索空間の選択、輪郭飛行および短滑空攻撃による発散探索空間内での探索、および収束における低空飛行および低速降下攻撃の使用の 4 つの方法に分割されます。探索空間内を利用するだけでなく、徒歩で急降下して獲物を捕まえることもできます。さまざまな最適化問題に対する最適な解を見つける新しいオプティマイザーの能力を検証するために、一連の実験が行われました。


提示:以下是本篇文章正文内容,下面案例可供参考

1. 最初の検索方法

アクイラは前かがみで垂直に飛行することで獲物がいる場所を特定し、最適な狩猟場所を選択します。ここでは、スカイホークが上空から探検家に向けて広範囲に飛び、獲物がいる 170 度の捜索空間のエリアを決定します。図1は、アクイラが垂直飛行し、屈む様子を示しています。この動作は、次の方程式で数学的に表されます。
図 1: Aquila の高空飛行における垂直方向の屈曲動作
図 1: Aquila の垂直曲げ挙動
X 1 ( t + 1 ) = X best ( t ) × ( 1 − t T ) + ( XM ( t ) − (t+1)=X_{best}(t)\times\ left(1-{\frac{t}{T}}\right)+(X_{M}(t)-X_{best}(t) *rand)バツ1( t+1 )=バツそうです_( t )×( 1T+( XM( t )バツそうです_( t )_ _

XM ( t ) = 1 N ∑ i = 1 NX i ( t ) 、 ∀ j = 1 、 2 、... , D im X_{M}(t)={\frac{1}{N}}\sum_{i=1}^{N}X_{i}(t),\forall j=1,2,.. .,D imバツM( t )=N1i = 1Nバツ私は( t ) ∀j _=1 2 ... D imwhere
,X 1 ( t + 1 ) X_{1}(t+1)バツ1( t+1 )は、最初の検索方法 (X 1 X_{1}バツ1)定義X ベスト ( t ) X_{ベスト}(t)バツそうです_( t )は、t 回目の反復までに得られた最良の解であり、獲物のおおよその位置を反映しています。この方程式1 − t T 1-{\frac{t}{T}}1T反復による拡張検索 (探索) を制御するために使用されます。XM(t)X_M(t)バツM( t ) は、t 回目の反復で接続された現在の解の位置平均を表します。rand ∈ [0, 1] rand∈[0,1]_ _[ 0 ,1 ]

2. 2つ目の検索方法

図 2: ショートグライド攻撃時のアクイラ輪郭飛行挙動

X 2 ( t + 1 ) = X best ( t ) × L evy ( D ) + XR ( t ) + ( y − x ) ∗ rand 、X_{2}(t+1)=X_{best}(t) \times L evy(D)+X_{R}(t)+(yx)*rand,バツ2( t+1 )=バツそうです_( t )×課徴( D ) _ _+バツR( t )+( y× rおよびd
ここでX 2 ( t + 1 ) X_2(t+1)バツ2( t+1 )です_tの次の反復の解は、X 2 X_2バツ2生成、DDDは次元空間、Levy (D) Levy(D)レヴィ( D )レヴィレヴィ_ _飛行分布関数、式XR ( t ) X_R ( t )を使用して計算バツR( t ) はtt 番目ですt反復中の[1, N] [1,N][ 1 N ]の範囲内で取得されるランダムな解
L evy ( D ) = s × u × σ ∣ v ∣ 1 β L evy(D)=s\times{\frac{u\times\sigma}{|v|^ { \frac{1}{β}}}}課徴( D ) _ _=s×v b1あなた×p
ここで、s は 0.01 に固定された定数値、uuu v v v0 00から1までの乱数σ σσ は次の計算を使用します。
σ = Γ ( 1 + β ) × sin ⁡ ( π β 2 ) Γ ( 1 + β 2 ) × β × 2 β − 1 2 \sigma={\frac{\Gamma(1+ \ beta)\times\sin\left({\frac{\pi\beta}{2}}\right)}{\Gamma\left({\frac{1+\beta}{2}}\right)\ 回\beta\times2^{\frac{\beta-1}{2}}}}p=C(21 + b×b×22b 1C ( 1+b )×(2pb _)
β率でも1.5%程度です。
r = r 1 + U × D 1 θ = − ω × D 1 + θ 1 θ 1 = 3 × π 2 \begin{array}{c}{ {r=r_{1}+U\times D_ {1} }}\\ { {}}\\ { {\theta=-\omega\times D_{1}+\theta_{1}}}\\ { {}}\\ { {\theta_{1}=\frac {3\times\in}{2}}}\end{配列}r=r1+U×D1=-ああ×D1+11=23 × π
R 1 ∈ [ 1 , 20 ] R_1∈[1,20]R1[ 1 20 ]、固定検索サイクル数、UUU は0.00565 に固定された小さな値です。D1D_1D1は 1 から検索空間の長さ (Dim) までの整数です。ω \omegaωは 0.005 に固定された小さな値です。AO の挙動は螺旋の形で示されます
x = r × sin ( θ ) y = r × cos ⁡ ( θ ) r = − 0.005 × D 1 + 3 × π 2 \begin{array}{c}{ {x= r \times\mathrm{in}(\theta)}}\\ { {y=r\times\cos(\theta)}}\\ { { r=-0.005\times D_{1}+ \frac{3 \times\pi}{2}}}\end{配列}バツ=r×( i )sy=r×cos ( θ )r=0.005×D1+23 × π

3. 3番目の検索方法

第3の方法(X3)では、獲物の領域が正確に指定され、スカイホークが着地して攻撃の準備をすると、スカイホークは垂直に降下し、獲物の反応を探知するための予備攻撃を行う。
ここに画像の説明を挿入します
低速降下攻撃として知られる低空飛行。ここで、AOはターゲットの選択された領域を使用して獲物に近づき、攻撃します。図はアクイラの低高度飛行徐降降下攻撃の挙動を示す
X 3 ( t + 1 ) = ( X best ( t ) − X_{3}(t+1)=(X_{best}(t)-X_{M }(t))\times\alpha-r an d+((U BL B)\times ran d+LB)\times \deltaバツ3( t+1 )=( Xそうです_( t )バツM( t ))×ある_ _+(( U BLB _×_ _+LB _×δ
X 3 ( t + 1 ) X_3(t+1)バツ3( t+1 )は 3 番目の検索方法X 3 X_3バツ3t の次の反復に対して生成された解。XBest(t)X_Best(t)バツBest ( t )、i 回目の反復 (最もよく得られた解) の前の獲物のおおよその位置、XM (t) X_M(t)バツM( t ) は、式 1 を使用して計算された、t 回目の反復における現在の解の平均です。rand は 0 から 1 までのランダムな値です。α\アルファαδ \デルタδは本記事では小さい値(0.1)に固定した現像調整パラメータです。LB L_BLB指定された問題の下限を表します。UB U_BUB上限の 200 を表します。

4. 4つ目の検索方法

獲物に近づくと、アクイラはランダムな動きに基づいて陸上の獲物を攻撃します。この方法を「歩いて獲物を捕まえる」といいます。ここで、ついに AO が最後の位置で獲物を攻撃します。図は、アクイラが歩いて獲物を捕まえているところを示しています。
ここに画像の説明を挿入します
X 4 ( t + 1 ) = QF × }{ {X_{4}(t+1)=QF\times X_{bex}(t)-(G_{1}\times X(t)\times rand)- G_{2}\times L e\nu y(D)+rand×G_1}}\\{ {}}\end{array}バツ4( t+1 )=準々決勝×バツビーエックス_( t )( G1×X ( t )×_ _G2×L e ν y ( D )+_ _×G1
QF ( t ) = trand − 1 ( 1 − T ) 2 QF(t)=t^{\frac{rand-1}{(1-T)^{2}}}QF ( t )=t( 1 T )2r 1 _
G 1 = 2 × rand − 1 G 2 = 2 × ( 1 − t T ) \begin{array}{c}{ { G_{1}=2\times ran d-1}}\\ { {}}\ \ { {G_{2}=2\times\left(1-\frac{t}{T}\right)}}\end{配列}G1=2×_ _1G2=2×( 1T)
QF ( t ) QF(t)QF(t)是第 i t h i^{th} t回の反復における品質関数の値、rand randrd は0 から 1 までのランダムな値です。t と T はそれぞれ現在の反復と最大反復数を表します。レヴィ(D) レヴィ(D)L e v y ( D ) は、式 (1) を使用して計算された賦課金飛行分配機能強化


コード

完整代码请私信领取:

function [Best_FF,Best_P,conv]=AO(N,T,LB,UB,Dim,F_obj)
Best_P=zeros(1,Dim);
Best_FF=inf;


X=initialization(N,Dim,UB,LB);
Xnew=X;
Ffun=zeros(1,size(X,1));
Ffun_new=zeros(1,size(Xnew,1));

t=1;


alpha=0.1;
delta=0.1;

while t<T+1
    for i=1:size(X,1)
        F_UB=X(i,:)>UB;
        F_LB=X(i,:)<LB;
        X(i,:)=(X(i,:).*(~(F_UB+F_LB)))+UB.*F_UB+LB.*F_LB;
        Ffun(1,i)=F_obj(X(i,:));
        if Ffun(1,i)<Best_FF
            Best_FF=Ffun(1,i);
            Best_P=X(i,:);
        end
    end
    
    
    G2=2*rand()-1; % Eq. (16)
    G1=2*(1-(t/T));  % Eq. (17)
    to = 1:Dim;
    u = .0265;
    r0 = 10;
    r = r0 +u*to;
    omega = .005;
    phi0 = 3*pi/2;
    phi = -omega*to+phi0;
    x = r .* sin(phi);  % Eq. (9)
    y = r .* cos(phi); % Eq. (10)
    QF=t^((2*rand()-1)/(1-T)^2); % Eq. (15)
        %-------------------------------------------------------------------------------------
    for i=1:size(X,1)
        %-------------------------------------------------------------------------------------
        if t<=(2/3)*T
            if rand <0.5
                Xnew(i,:)=Best_P(1,:)*(1-t/T)+(mean(X(i,:))-Best_P(1,:))*rand(); % Eq. (3) and Eq. (4)
                Ffun_new(1,i)=F_obj(Xnew(i,:));
                if Ffun_new(1,i)<Ffun(1,i)
                    X(i,:)=Xnew(i,:);
                    Ffun(1,i)=Ffun_new(1,i);
                end
            else
                %-------------------------------------------------------------------------------------
                Xnew(i,:)=Best_P(1,:).*Levy(Dim)+X((floor(N*rand()+1)),:)+(y-x)*rand;       % Eq. (5)
                Ffun_new(1,i)=F_obj(Xnew(i,:));
                if Ffun_new(1,i)<Ffun(1,i)
                    X(i,:)=Xnew(i,:);
                    Ffun(1,i)=Ffun_new(1,i);
                end
            end
            %-------------------------------------------------------------------------------------
        else
            if rand<0.5
                Xnew(i,:)=(Best_P(1,:)-mean(X))*alpha-rand+((UB-LB)*rand+LB)*delta;   % Eq. (13)
                Ffun_new(1,i)=F_obj(Xnew(i,:));
                if Ffun_new(1,i)<Ffun(1,i)
                    X(i,:)=Xnew(i,:);
                    Ffun(1,i)=Ffun_new(1,i);
                end
            else
                %-------------------------------------------------------------------------------------
                Xnew(i,:)=QF*Best_P(1,:)-(G2*X(i,:)*rand)-G1.*Levy(Dim)+rand*G2; % Eq. (14)
                Ffun_new(1,i)=F_obj(Xnew(i,:));
                if Ffun_new(1,i)<Ffun(1,i)
                    X(i,:)=Xnew(i,:);
                    Ffun(1,i)=Ffun_new(1,i);
                end
            end
        end
    end
    %-------------------------------------------------------------------------------------
    if mod(t,100)==0
        display(['At iteration ', num2str(t), ' the best solution fitness is ', num2str(Best_FF)]);
    end
    conv(t)=Best_FF;
    t=t+1;
end

end
function o=Levy(d)
	beta=1.5;
	sigma=(gamma(1+beta)*sin(pi*beta/2)/(gamma((1+beta)/2)*beta*2^((beta-1)/2)))^(1/beta);
	u=randn(1,d)*sigma;v=randn(1,d);step=u./abs(v).^(1/beta);
	o=step;
end

Abualigah, L.、Yousri, D.、Elaziz, MA、Ewees, AA、A. Al-qaness, MA、Gandomi, AH、Aquila Optimizer: A new meta-heuristic optimization Algorithm、Computers & Industrial Engineering (2021)、doi : https://doi.org/10.1016/j.cie.2021.107250

おすすめ

転載: blog.csdn.net/m0_58857684/article/details/132919181