问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

2024年最新优化算法——阿尔法进化算法,MATLAB代码免费获取

创作时间:
作者:
@小白创作中心

2024年最新优化算法——阿尔法进化算法,MATLAB代码免费获取

引用
CSDN
1.
https://blog.csdn.net/woaipythonmeme/article/details/143787977

阿尔法进化算法(Alpha Evolution, AE)是一种新型的进化算法,通过自适应基向量和随机步长的优化策略,在多个测试集上取得了优异的性能。本文将详细介绍该算法的原理、实现步骤和MATLAB代码,并展示其在CEC2017、CEC2005等测试集上的实验结果。

算法原理

1. 初始化

种群初始化策略根据问题空间生成一组候选解,为进化算法提供对有希望信息的初步猜测。在D维搜索空间中,候选解Xi通常使用以下方程进行统一初始化:

其中Xi表示第i个候选解,lb和ub分别表示搜索空间的下界和上界。此外,rand被定义为随机数生成器。Rand(0,1,[1,D])生成一个由D列组成的向量,其中包含均匀分布在[0,1]范围内的随机数。此外,二进制操作表示解决方案的数量,通常比作总体大小。

2. 算子

为了找到问题的最优解,需要对候选解进行改进,这是优化算法中的关键步骤。在这项工作中,候选解的集合被定义为候选矩阵X,而进化矩阵E是候选矩阵的子集。请注意,总体通常是解决方案集的隐喻,解决方案集本质上是一个矩阵。在进化过程中,不是直接进化当前候选矩阵中的每个解Xi,而是对矩阵进行一次抽样替换操作,得到待进化的矩阵。图和方程描述了这种关系:

其中符号“→”表示执行带有替换的抽样操作,该操作将被执行两次。候选矩阵负责提供解决方案,而进化矩阵负责探索新的解决方案。需要注意的是,当Ei中X成功进化时,对应的解会根据索引被替换。

对于优化算法,在迭代过程中,性能很大程度上取决于搜索算子。因此,一个优秀的搜索算子对于引导算法发现更高质量的解起着至关重要的作用。与其他算法不同,该算法仅依赖于一个操作符(alpha操作符)来实现高效搜索。在该算子中,进化信息的提取和利用的多个步骤在一个算子中同时进行。算子的数学模型如以下公式所示:

Ei是矩阵中ith的进化解;t是当前迭代。P是基数向量,决定进化起始位置。α是衰减因子,控制算法的勘探和开发。θ控制参数,用于控制微分矢量(自适应步长)。Wi和Li从X中抽取的解。

对于自适应基向量,该分量在解的更新中起着至关重要的作用,因为它决定了进化起点,根据以下公式,进化起点最初以两种方式计算:

其中,对角表示一个函数,该函数获得矩阵的对角元素。A是一个Dth阶平方矩阵,它是通过替换D乘以的候选解进行采样得到的。其中,B是一个行为K,列为D的矩阵,它是通过不替换的抽样得到的。下图显示了如何执行对角线A和wB。其中wi:k表示方程中ith解的权值:

其中,i:k表示采样的K个解决方案中的第i个解决方案,并且 返回的目标函数值Xi:k。

但是,由A或B自身产生的P不参与进化,导致每代之间没有联系,导致进化信息的丢失。因此,引入进化路径的概念来增加连续迭代步骤之间的相关性,在上述描述的基础上,使用以下方程构造两条不同的进化路径:

式中ca和cb分别代表了学习速率。学习率的设计是为了不断增强当前信息的影响,削弱历史信息的影响,完成算法从探索到利用的转变。

对于随机步长 ,该组件提供了全局搜索功能。衰减因子是一个非线性递减值,与扰动矩阵密切相关。其衰减过程如图图所示,利用方程进行计算:

其中,FEs表示适应度评估(当前对目标函数的调用次数)。

3. 边界约束

边界约束方法保证了算法在搜索空间内的有效搜索,尤其适用于约束优化问题。常见的边界约束方法,如裁剪、随机、反射、周期性和减半距离。在声发射算法中,采用距离减半方法,如以下方程所示:

其中ub和lb分别为搜索空间的上界和下界。需要注意的是,Ei是负责生成更好的解决方案的,这就是为什么它是受约束的,而不是Xi。

4. 选择策略

选择策略是将相关解添加到下一代集的方法。常见的选择策略包括贪婪选择、轮盘选择、锦标赛选择、截断选择等。其中,贪婪选择通过一种简单的方法将进化成功的解传递给下一代,而不需要额外的操作。因此,将这种选择策略引入到AE算法中,其模型可由以下公式表示:

在这里,E的ith解对应于X的kth解。

AE算法所对应的伪代码如下所示
AE算法的流程图如下所示。

结果展示






将本期的阿尔法进化算法(简称AE)算法集成到作者开发的智能优化算法APP后,可以方便AE算法与其他算法在各大测试集和工程问题中的对比,只需要在算法框填入AE算法名字即可,如图:

CEC2017上:

CEC2005上:

CEC2017的单个算法测试上:

MATLAB核心代码

% Algorithm Name: Alpha Evolution Algorithm (AE).
% gbestx: The global best solution ( gbestx = [x1,x2,...,xD]).
% gbestfitness: Record the fitness value of global best individual.
% gbesthistory: Record the history of changes in the global optimal fitness.
%---------------------------------------------------------------------------
%Initialization
FEs=0;
X=zeros(N,D);
R=X;
W=X;
newE=X;
MaxFEs = (N+1)*MAXITR;
f=inf(1,N);
gbesthistory=inf(1,MaxFEs);
lb = lb.*ones(1,D);
ub = ub.*ones(1,D);
%Building the candidate matrix
X=lb+(ub-lb).*rand(N,D);
for i=1:N
    f(i)=Func(X(i,:));
    FEs=FEs+1;
end
[gbestfitness,mi]=min(f);
gbestx=X(mi,:);
gbesthistory(1:FEs)=gbestfitness;
Pa=lb+(ub-lb).*rand(1,D);
Pb=lb+(ub-lb).*rand(1,D);
%---------------------------------------------------------------------------
for it = 1:MAXITR
    %Sampling evolution matrix
    k=randi(N,N,1);
    E=X(k,:);
    [~,ind]=sort(f);
    R1=rand(N,D);R2=rand(N,D);S=randi([0,1],N,D);
    r=(ub-lb).*(2*R1.*R2-R2).*S;
    %Computing alpha
    alpha=exp(log(1-FEs/MaxFEs)-(4*(FEs/MaxFEs))^2);
    ar=alpha.*r;
    for i=1:N
        cab=FEs/MaxFEs;
        %Sampling W and L
        R(i,:)=X(ind(randi([1,length(1:find(k(i)==ind))])),:);
        W(i,:)=X(ind(randi([length(1:find(k(i)==ind)),N])),:);
        %Building evolutionary paths
        if rand<0.5
            A=X(randi(N,D,1),:);
            Pa=(1-cab)*Pa+cab*diag(A)';
            Ov=Pa;
        else
            K=ceil(N*rand);
            I1=[];I1=randperm(N,K);
            w=[];w=f(I1)./sum(f(I1));
            B=[];B=X(I1,:);
            Pb=(1-cab)*Pb+cab*(w*B);
            Ov=Pb;
        end
        I2=round(rand);
        sita=[];sita=I2*rand(1,D)+(1-I2)*rand*2;
        
        %AE Core operator
        newE(i,:)=Ov+ar(i,:)+sita.*(R(i,:)+E(i,:)-Ov-W(i,:));
        
        %Boundary constraint
        flagub=newE(i,:)>ub;flaglb=newE(i,:)<lb;
        newE(i,flagub)=(E(i,flagub)+ub(flagub))/2;newE(i,flaglb)=(E(i,flaglb)+lb(flaglb))/2;
        newf=Func(newE(i,:));
        FEs=FEs+1;
        %Selection
        if newf<=f(k(i))
            f(k(i))=newf;
            X(k(i),:)=newE(i,:); 
            if f(k(i))<=gbestfitness
                gbestfitness=f(k(i));
                gbestx=X(k(i),:);
            end
        end
        gbesthistory(FEs)=gbestfitness;
    end
    
  cuver(it) = gbestfitness;
end % end while
%---------------------------------------------------------------------------
gbesthistory=gbesthistory(1:MaxFEs);
end  

参考文献

[1]Gao H, Zhang Q. Alpha evolution: An efficient evolutionary algorithm with evolution path adaptation and matrix generation. Engineering Applications of Artificial Intelligence, 2024, 137: 109202.

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号