【改进优化算法】改进混沌原子搜索优化比较和原始混沌原子搜索优化算法比较(Matlab代码实现)

本文探讨了元启发式优化算法在智能计算中的重要性,介绍了进化、物理和群体启发算法的类别及代表性例子,如遗传算法、粒子群优化等。特别提出了基于原子搜索优化(ASO)的新算法,结合MATLAB代码,展示了其在全球优化问题上的潜力。
摘要由CSDN通过智能技术生成

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

元启发式优化算法智能计算中越来越受欢迎,并广泛应用于大量实际工程问题。它们的受欢迎程度来自以下几个方面。首先,所有这些优化技术都有一些被证明是合理的基础理论和数学模型,这些理论和数学模型来自现实世界,并受到各种物理现象或生物行为的启发[1][2]。这些理论简单易懂。其次,这些优化算法可以看作是一个黑匣子。这意味着给定一组输入,这些算法可以很容易地为任何优化问题提供一组输出。它们非常灵活和通用,因为可以更改算法的结构和参数以获得更好的解决方案。(3)元启发式算法能够有效避免局部最优,由于许多工程问题被认为是多模态函数,因此对于解决工程问题非常有价值。此外,人们可以通过吸收其他算法的优点来开发它们的变体,以在合理的时间内提高解决方案的准确性。第四,元启发式优化算法可以处理不同类型的问题,包括但不限于单目标和多目标问题、低维和高维问题、单模态和多模态问题以及离散和连续问题[3]、[4][5]。

许多具有不同灵感的元启发式算法被提出并成功应用于各个领域,大致分为三类[6]:进化启发[7]、[8]、[9]、物理启发[10]和群体启发[11]方法。

受进化启发的算法是一种随机的、基于种群的方法,因此保护种群的多样性对于算法的迭代可持续发展非常重要。许多受进化启发的算法通过模仿基本的遗传规则来维持种群的多样性,包括繁殖、突变、选择、趋化性、消除和迁移[12],[13]。这些算法随机初始化从后续迭代中进化而来的群体,并使用适应度函数评估个体质量。遗传算法(GA)最初由Holland[14]提出,是一种著名的经典进化算法(EA)。由于GA通常可以使用突变、交叉和选择步骤获得高质量的解决方案,因此原始版本及其变体被广泛应用于许多现实世界的问题[15]。自其出现以来,已经制定了一系列旨在加强GA的计划。随着GA的日益普及,文献中出现了相当多的其他基于进化的算法,包括进化策略(ES)[16]、差分进化(DE)[17]、进化规划(EP)[18]、模因算法(MA)[ 19],依此类推。此外,最近还提出了各种新的EA,如细菌觅食优化(BFO)[12]、蝙蝠算法(BA)[20]、果蝇优化算法(FOA)[21]、猴王进化算法(MKE)[22]、人工藻类算法(AAA)[23]、基于生物地理学的优化(BBO)[24]、阴阳对优化(YYPO)[25]、入侵杂草优化(IWO)[26]和动态虚拟蝙蝠算法(DVBA)[27]。

受物理启发的算法模拟宇宙中的物理定律,其中模拟退火(SA)[1]是最知名的算法之一。SA的灵感来自物理材料中使用的退火工艺,其中加热的金属以最小的能量冷却并冻结成晶体纹理。近年来, 引力搜索算法(GSA)[28]、类电磁机制算法(EM)算法[29]粒子碰撞算法(PCA)[30]、涡旋搜索算法(VSA)[31]、水蒸发优化(WEO)[32]、空间引力算法(SGA)等,提出了许多新的物理启发算法[33]、大爆炸-大紧缩算法(BB-BC)[34]、基于星系的算法(GBA)[35]、大紧缩算法(BCA)[36]、综合辐射算法(IRA)[37]、水滴算法(WDA)[38]、带电系统搜索(CSS)[39]、磁优化算法(MOA)[40]、引力场算法(GFA) [41]、离子运动算法(IMA)[42]、水波优化(WWO)[43]、引力相互作用优化(GIO)[44]、基于教学的优化(TLBO)[45]、滞后优化(HO)[46]、热交换优化(TEO)[47]、光线优化(LRO)[ 48]、传热搜索(HTS)[49]、螺旋优化算法(SOA)[50]、水循环算法(WCA )[51]和曲线空间优化(CSO)[52]。

受群体启发的算法模仿了自然或人工的自组织和形状形成的集体行为[53]。有两种最经典的受群体启发的算法。一种是粒子群优化(PSO)[2],它模仿鸟类的群落行为。在 PSO 中,每个座席都在搜索空间中移动以改进其解决方案,并保留他们的个人最佳位置和迄今为止找到的全球最佳位置,通过这些位置在本地和社交上更新他们的位置。另一种是蚁群优化(ACO)[54],它遵循蚁群的觅食过程。从本质上讲,蚂蚁通过路径形成的信息素轨迹相互交流,这有助于它们找到巢穴和食物来源之间的最短路径。有许多新开发的群体启发算法,如人工蜂群(ABC)[55]、鲑鱼群算法(SSA)[56]、磷虾群算法(KH)[57]、树种子算法(TSA)[58]、社交蜘蛛优化(SSO)[59]、鸟类交配优化器(BMO)[60]、杜鹃搜索(CS)[61]、蚱蜢优化算法(GOA)[62]、正弦余弦算法(SCA)[63]、飞蛾群算法(MSA)[64]、海豚回声定位(DE)算法[65]、狩猎搜索算法[66]、候鸟优化(MBO)[67]、萤火虫算法(FA)[ 68]、猴子搜索(MS)算法[69]和松鼠搜索算法(SSA)[70]。

与受进化论或物理启发的算法相比,受群体启发的算法具有一些鲜明的特征。一方面,需要保留有关种群的部分或全部历史信息,因为每个智能体都依赖于这些信息来确定后续迭代中搜索空间中的新位置。然而,受进化启发的算法需要更多的算子。受群体启发的算法通常通过交互规则作为标准公式来更新种群的位置。另一方面,受群体启发的算法通常有两种行为:探索和利用[71]、[72]。探索是指算法在整个搜索空间中搜索远离当前解决方案的新解决方案的能力。利用是指算法在已经找到的新解决方案附近搜索最佳解决方案的能力。在这样的算法中,搜索空间中每个智能体的范围被缩放到其邻域的共识,并且智能体随机探索整个搜索空间。如果代理或其邻居找到一个好的区域,这个区域将被密集开发。否则,它们仍然广泛探索其他区域,这表明它们在寻找全局最优时具有更好的自我适应能力。从这些角度来看,受群体启发的算法与其他算法相比具有许多优势。许多受进化启发或受物理启发的算法都具有受群体启发的特征,例如 PSO、ACO、CS、BFO、GSA 等。这些算法不仅反映了生物现象或物理规律的本质,而且具有探索和开发的共同特征。因此,它们比那些没有群体启发特征的更具竞争力。然而,在探索和开发之间提供适当的平衡将导致算法的最佳性能,因此它是任何随机优化算法开发中最重要的任务之一。

随着经济、社会和技术的发展,不同领域出现了大量复杂且具有挑战性的优化问题。举例来说,大规模按需提供交通服务的拼车公司的出现,以及相应需求数据集的日益普及,发展了有效处理路线网络的新的复杂优化问题[73]。另一个具有挑战性的优化问题是识别由事故或非法排放引起的河流污染事件的污染源[74]。尽管到目前为止已经引入了多种类型的优化算法,但仍在开发新的优化算法来解决新出现的复杂优化问题,以获得更好的方案。此外,根据优化的“没有免费的午餐定理”[75],没有一种优化算法可以对所有不同类型的问题执行最佳。该定理使该研究领域保持活跃,并鼓励相关学者开发新的算法以更好地优化。基于上述情况,该文提出一种具有群体启发特性的新型物理启发算法,用于全局优化。所提出的算法名为原子搜索优化(ASO),其灵感来自基本分子动力学,也是一种基于群体的启发式算法。据笔者所知,文献中没有发现相关研究。ASO模拟由相互作用和约束力控制的原子运动,为全局优化问题设计有效的搜索机制。在一组不同的数学优化问题上验证了所提出的ASO的效率,结果表明其优于一些经典和新兴算法。此外,ASO已成功应用于水文地质参数估计问题,从而证明了其在实际问题中的可行性和有效性。

📚2 运行结果

部分代码:

%Calculate mass 
  M=exp(-(Fitness-max(Fitness))./(max(Fitness)-min(Fitness)));
  M=M./sum(M);  
  G=exp(-20*It/Max_IT); 
  Kbest=NP-(NP-2)*(It/Max_IT)^0.5;
  Kbest=floor(Kbest)+1;
  [Des_M Index_M]=sort(M,'descend');
 
 for i=1:NP       
    E(i,:)=zeros(1,dim);   
    MK(1,:)=sum(Atom_Pop(Index_M(1:Kbest),:),1)/Kbest;
    Distance=norm(Atom_Pop(i,:)-MK(1,:));   
    
    for k=1:Kbest
        j=Index_M(k);       
        %Calculate LJ-potential
        Potential=LJPotential(Atom_Pop(i,:),Atom_Pop(j,:),It,Max_IT,Distance); 
        r=CV(ZZ);
        E(i,:)=E(i,:)+r*Potential*((Atom_Pop(j,:)-Atom_Pop(i,:))/(norm(Atom_Pop(i,:)-Atom_Pop(j,:))+eps));             
    end
        
    E(i,:)=alpha*E(i,:)+beta*(X_Best-Atom_Pop(i,:));
    
    %Calculate acceleration
    a(i,:)=E(i,:)./M(i); 
 end
end
Acc=a.*G;
end

function O=chaos(max_iter,index)
O=zeros(1,max_iter);
x(1)=0.7;
Value=1;

switch index

    case 1 % Logistic map
    a=4;
    for i=1:max_iter
        x(i+1)=a*x(i)*(1-x(i));
        G(i)=x(i)*Value;
    end
    
    case 2 % Sine map
    for i=1:max_iter
        x(i+1) = sin(pi*x(i));
        G(i)=(x(i))*Value;
    end
    
    case 3 % Tent map
    x(1)=0.6;
    for i=1:max_iter
        if x(i)<0.7
            x(i+1)=x(i)/0.7;
        end
        if x(i)>=0.7
            x(i+1)=(10/3)*(1-x(i));
        end
        G(i)=(x(i))*Value;
    end
    
end
O=G;
end

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值