【群智能算法改进】一种改进的算术优化算法 改进算术优化算法 改进AOA[2]【Matlab代码#38】

文章目录

    • 【`获取资源`请见文章第5节:资源获取】
    • 1. 原始AOA
    • 2. 改进后的MAOA算法
      • 2.1. Kent映射种群初始化
      • 2.2 复合摆线法优化MOA参数
      • 2.3 种群top20%精英变异和Cauchy变异组合
        • 2.3.1 麻雀精英变异
        • 2.3.2 柯西变异
    • 3. 部分代码展示
    • 4. 仿真结果展示
    • 5. 资源获取说明


获取资源请见文章第5节:资源获取】


1. 原始AOA

算术优化算法是一类基于数学运算和搜索策略的智能优化算法,旨在解决优化问题。该算法通常用于求解连续优化问题,例如数学规划、函数优化和参数优化等。

算术优化算法的基本思想是通过模拟数学运算和搜索过程,逐步调整优化问题的解向更优的方向。算法通常维护一组候选解,并使用数学运算(如加法、减法、乘法、除法等)和搜索操作(如移动、变异、交叉等)对候选解进行更新和改进。通过迭代的方式,算法逐渐收敛到问题的最优解或近似最优解。

在这里插入图片描述
在这里插入图片描述

2. 改进后的MAOA算法

2.1. Kent映射种群初始化

在混沌映射中选用Kent映射对原始AOA算法加以改进,Kent 映射具有较强的遍历性,能提高算法的全局搜索性能。在运用Kent映射进行搜索时,先对数据作归一化处理,使种群在运用 Kent 映射搜索时处于完全混沌的状态,具有更好的遍历性能,在一定程度上避免陷入局部最优。Kent 映射的表达形式为:
【群智能算法改进】一种改进的算术优化算法 改进算术优化算法 改进AOA[2]【Matlab代码#38】_第1张图片
其中, a ∈ ( 0 , 1 ) a\in (0,1) a(0,1) a a a为Kent映射的调节参数。为了加强种群的多样性,每次进行Kent 映射,调节参数 a a a在[0,1]上随机取值。

2.2 复合摆线法优化MOA参数

在基本AOA中的MOA更新公式中,MOA呈线性增长,在迭代过程中,MOA的最小值为0.2,最大值为1。这导致在早期迭代中将大量的个体分配到开发阶段,而在后期迭代中将大量的个体分配到探索阶段,也就是说,这种分配方法导致全局搜索能力不足,收敛速度较快。在后期迭代中进行全局搜索,导致收敛速度较慢,容易陷入局部最优。
因此,本文借助复合摆线的思想,改进了MOA参数,改进后的MOA参数的迭代曲线如下:
【群智能算法改进】一种改进的算术优化算法 改进算术优化算法 改进AOA[2]【Matlab代码#38】_第2张图片
可以看到,在迭代初期,MOA值较大,那么大量个体可以参与到探索过程中,可以提高全局的寻优能力,在迭代后期,MOA值也很大,那么可以避免陷入局部最优,在后期也能有机会跳出局部最优。

2.3 种群top20%精英变异和Cauchy变异组合

2.3.1 麻雀精英变异

精英变异是一种将具有较高搜索性能的个体的能力呈现给当前最优个体的突变方法。在AOA的每次迭代中,给予当前适应度值的前20%的个体较强的优化能力,这种方法被称为麻雀精英变异。更新公式如下:
【群智能算法改进】一种改进的算术优化算法 改进算术优化算法 改进AOA[2]【Matlab代码#38】_第3张图片

2.3.2 柯西变异

在麻雀精英突变后,通过引入柯西算子对当前最优个体进行柯西扰动,进一步提高了AOA的优化性能。柯西变异公式如下:
在这里插入图片描述

3. 部分代码展示

% ★★改进2:复合摆线因子★★
    C=...; % 此处未展示具体公式
    MOA=......; % 此处未展示具体公式
   
    %Update the Position of solutions
    for i=1:size(X,1)   % if each of the UB and LB has a just value 
        for j=1:size(X,2)
           r1=rand();
            if (size(LB,2)==1)
                if r1<MOA
                    r2=rand();
                    if r2>0.5
                        Xnew(i,j)=Best_P(1,j)/(MOP+eps)*((UB-LB)*Mu+LB);
                    else
                        Xnew(i,j)=Best_P(1,j)*MOP*((UB-LB)*Mu+LB);
                    end
                else
                    r3=rand();
                    if r3>0.5
                        Xnew(i,j)=Best_P(1,j)-MOP*((UB-LB)*Mu+LB);
                    else
                        Xnew(i,j)=Best_P(1,j)+MOP*((UB-LB)*Mu+LB);
                    end
                end               
            end
            
           
            if (size(LB,2)~=1)   % if each of the UB and LB has more than one value 
                r1=rand();
                if r1<MOA
                    r2=rand();
                    if r2>0.5
                        Xnew(i,j)=Best_P(1,j)/(MOP+eps)*((UB(j)-LB(j))*Mu+LB(j));
                    else
                        Xnew(i,j)=Best_P(1,j)*MOP*((UB(j)-LB(j))*Mu+LB(j));
                    end
                else
                    r3=rand();
                    if r3>0.5
                        Xnew(i,j)=Best_P(1,j)-MOP*((UB(j)-LB(j))*Mu+LB(j));
                    else
                        Xnew(i,j)=Best_P(1,j)+MOP*((UB(j)-LB(j))*Mu+LB(j));
                    end
                end               
            end
            
        end

4. 仿真结果展示

【群智能算法改进】一种改进的算术优化算法 改进算术优化算法 改进AOA[2]【Matlab代码#38】_第4张图片
【群智能算法改进】一种改进的算术优化算法 改进算术优化算法 改进AOA[2]【Matlab代码#38】_第5张图片
【群智能算法改进】一种改进的算术优化算法 改进算术优化算法 改进AOA[2]【Matlab代码#38】_第6张图片
【群智能算法改进】一种改进的算术优化算法 改进算术优化算法 改进AOA[2]【Matlab代码#38】_第7张图片
【群智能算法改进】一种改进的算术优化算法 改进算术优化算法 改进AOA[2]【Matlab代码#38】_第8张图片
【群智能算法改进】一种改进的算术优化算法 改进算术优化算法 改进AOA[2]【Matlab代码#38】_第9张图片
【群智能算法改进】一种改进的算术优化算法 改进算术优化算法 改进AOA[2]【Matlab代码#38】_第10张图片
【群智能算法改进】一种改进的算术优化算法 改进算术优化算法 改进AOA[2]【Matlab代码#38】_第11张图片

5. 资源获取说明

可以获取完整代码资源。

你可能感兴趣的:(Matlab,#群智能算法改进,matlab,算法,数学建模,性能优化)