2025年12月最新优化算法——LangEvin方程演化算法

注:该算法已按照智能优化算法APP标准格式进行整改,可直接集成到APP中,方便大家与自己的算法进行对比。

LangEvin方程演化算法(LangEvin Equation-based Evolutionary algorithm, LEE) 是一种受物理学中随机运动规律启发的智能优化算法。该算法模拟了微观粒子在热涨落环境下呈现的布朗运动行为。这种被称为“分子之舞”的随机运动,不仅遵循严谨的统计物理定律,更蕴含着丰富的动力学信息——它能通过朗之万方程精确描述粒子受随机力驱动的演变过程。研究人员从这种物理随机性中获得灵感,提出了LEE算法,构建了算法的三大核心机制:基于朗之万动力学的全局搜索机制、维持种群多样性的热涨落平衡策略,以及逃离局部最优的势垒跨越机制。这些机制被转化为可计算的数学模型,在求解复杂优化问题时展现出优异的全局探索能力与收敛稳定性。

该成果于2025年12月最新发表于计算机领域2区期刊Neurocomputing,为智能优化设计提供了新思路。

1 算法原理详解

(1)生成初始种群

此步骤旨在创建在指定迭代范围内发展的初始种群。对于规模为 的种群,LEE将随机生成 个位置。种群中的每个个体记为 ( ),代表D维空间中的一个优化问题解。初始位置通常基于以下原理随机生成:

其中  和  分别表示问题第  维的下限与上限,  表示区间  内的一个随机数。

(2)朗之万方程向更新规则的转化

将朗之万方程转化为更新规则需经过三个步骤,具体描述如下:步骤一:朗之万方程各项的映射。如前文所述,朗之万方程描述了粒子在三种力同时作用下的运动:惯性(加速度)、摩擦力以及由分子碰撞引起的随机涨落,如下式所示:

该表达式清晰地表明,粒子的运动轨迹是粒子加速度、摩擦力与随机驱动力相互作用的结果。为将这一物理原理封装为可优化的搜索机制,需将公式分解为各组成项,并将其按算法术语重新阐释如下:

惯性项对应于粒子的加速度。在LEE算法中,惯性调控着候选解基于历史速度与当前作用力的运动响应。需注意的是,由于质量不影响优化过程,此处假定其值为1( ):

其中  表示加速度。

摩擦(阻尼)项描述了作用在粒子上的摩擦力,其大小与粒子速度成正比。在优化意义上,它体现为一种阻尼作用,使候选解集不致过度分散并平衡其运动。该项的数学表达如下:

其中  表示粒子速度,  为摩擦系数。

随机力项反映了周围粒子不可预测的碰撞作用。在LEE中,该力为更新过程引入随机性,使候选解能够跳出局部极小值并更有效地探索搜索空间。随机力通过以下公式定义:

结合上述三项贡献,可借助以下方程对朗之万方程进行简化。

这一新的数学表述将加速度 ( )、阻尼项 ( ) 与随机扰动 ( ) 直接关联到LEE中候选解的移动过程。

步骤二:定义算法等效形式

将方程中的每个要素与优化过程中候选解的运动相关联,具体而言,第  个候选解在迭代  时的加速度定义为:

其中  表示迭代次数。公式通过将朗之万方程中的三种力转化为优化动力学,保持了物理相似性。阻尼项 ( ) 用于稳定运动,惯性项保持动量,而随机力则引入多样性。这些项共同在本文提出的算法中平衡探索与开发。实际上,它们使得算法能够模拟粒子在遍历可能解空间时的物理行为。

随机力表示作用于每个候选解的随机扰动。这相当于粒子在流体介质中受到的随机碰撞。在优化框架下,该力建模为:

其中  与  分别表示当前解和温度。此外,  代表当前迭代中两个随机解的平均值。

缩放因子  用于控制扰动的强度。同时,项  度量了当前候选解相对于两个随机解平均位置的偏离程度。如此设计可使随机力并非任意噪声,而是自适应于种群状态:当偏离均值较大时,可产生更强的随机扰动,有利于充分探索;偏离较小时则降低随机性,促进收敛。因此,随机力既能有效维持种群多样性,又能帮助算法逃离早期局部最优。在公式中,  的计算方式如下:

在公式中,系数 和 随迭代次数动态变化。基于物理学中的退火与阻尼过程,二者均随时间呈指数衰减,其模型如下:

其中  表示最大迭代次数。这种渐进衰减机制对于确保算法在早期迭代中聚焦探索(具有较强的随机性与较弱的阻尼),而在后期迭代中转向开发与收敛(具有较弱的随机性与较强的阻尼)至关重要。

步骤三:更新速度与位置 在计算出加速度后,下一步需更新每个候选解的速度与位置。速度更新由公式)给出:

其中  为惯性权重,  随迭代动态递减。正弦项提供自适应探索所需的振荡,而线性项  与指数衰减项则使其值缓慢下降。这种变化促使算法从初期的广泛探索逐步过渡到后期的精细开发。

更新速度后,每个解的新位置( )计算如下:

此更新直接将解的未来位置与其当前路径相连接。从物理角度而言,这反映了粒子在速度与加速度共同作用下的运动规律;在优化意义上,它意味着潜在解能够持续逃离次优区域并向更优区域趋近。

LEE算法的伪代码流程如下图所示:

LEE算法的完整流程图如下所示:

2 结果展示

评估:效果相当不错,可以学习一下它的原理,作为你改进算法的基石。

3、MATLAB核心代码


% LangEvin方程演化算法(LangEvin Equation-based Evolutionary algorithm, LEE)
%% Define Parameters and Objective Function
upr = 0.3;           
LB=lb;                                       % Lower Bound of Variables
UB=ub;                                       % Upper Bound of Variables
inT = 1;                                    % Initial Temperature
     
%% Initialization
X = LB+(UB-LB).*rand(nP, Dim);              % Random initial positions     Eq.(3)
Z = rand(nP, Dim);                          % Random initial positions
V = zeros(nP, Dim);                         % Initial velocities
Cost = zeros(nP, 1);                        % Fitness
CostNew = zeros(nP, 1);                     % Fitness
T = inT;

% Create Initial Population
for i=1:nP
      Cost(i) = fobj(X(i,:));
end
[Best_Cost,ind] = min(Cost);
Best_X = X(ind,:);

%% Main loop
for iter = 1:MaxIt
    Lambda = exp(-(iter/MaxIt)^(2));        % Eq.(12)
    beta = sin(((pi/2)*iter + pi*(iter/MaxIt)))*(1-iter/MaxIt) .* exp(-2*(iter/MaxIt));  % Eq.(14-2)       
    [~,ind]=sort(Cost);
      a0=1:nP;
      [a1, a2] = Gna1a2(nP,a0);           % Generate Random Indices                                    
      b = randn(nP,1).*beta;              % Eq.(14-1) 
      pr0 = upr+0.1.*rand(nP,1);
      pr1 = pr0+0.1.*sinh(randn(nP,1));   % Eq.(18-6)  
      pr2 = pr0+0.1.*sinh(randn(nP,1));   % Eq.(21) 
      F = 0.5+0.1*sinh(randn(nP,1));      % Eq.(17)
      Xpb = (X(ind(randi(4,1,nP)),:));
    for i=1:nP
        % Update particles' velocities and positions based on Langevin equation
        Xavg = (X(a1(i),:)+X(a2(i),:))/2; % Eq.(11)
        randomForce = sqrt(2 * T * Lambda) * randn.*(X(i,:)-Xavg);         % Eq.(10)
        V(i,:) = V(i,:) - Lambda * V(i,:) + randomForce;                   % Eq.(14)
        U = Xavg + F(i).*(Xpb(i,:)-X(i,:))+ b(i).*V(i,:);                  % Eq.(16)
        Stp1 = Best_X - Xavg;                                              % Eq.(18-2)                                            
        Stp2 = X(i,:) - Xavg;                                              % Eq.(18-3) 
        UL = rand*(UB-LB);
        Stp = Stp1+(Stp2-Stp1)/UL;                                         % Eq.(18-1) 
        r=rand;
        L=rand(1,Dim)<pr1(i);Sigma=(randn*(r)+(1-rand)^2);            
        Z(i,:) = L.*U + (1-L).*(X(i,:) +  Stp.*Sigma);                     % Eq.(18)            
        if rand<pr2(i)
            rdn1 = randn; rdn2 = randn;
            if rand<(1-iter/MaxIt)
                Z(i,:) = X(i,:) + F(i).*(rdn1).*(Best_X-X(a1(i),:))*Lambda;% Eq.(19) 
            else
                Z(i,:) = Best_X + (F(i).*rdn1.*(b(i).*Xpb(i,:)-X(i,:))*Lambda+F(i).*(rdn2).*(b(i).*Best_X-X(i,:))*Lambda); % Eq.(20) 
            end
        end

    %  Boundary handling 
    Flag4ub=Z(i,:)>UB;
    Flag4lb=Z(i,:)<LB;    
    Z(i,:)=(Z(i,:).*(~(Flag4ub+Flag4lb)))+UB.*Flag4ub+LB.*Flag4lb; 
        CostNew(i) = fobj(Z(i,:));
        if CostNew(i)<Cost(i)
            X(i,:) = Z(i,:);
            Cost(i) = CostNew(i);
            if Cost(i)<Best_Cost
                Best_X = X(i,:);
                Best_Cost = Cost(i);
            end
        end
    end

    T = inT * exp(-(iter/MaxIt));
    Convergence_curve(iter) = Best_Cost;
    disp(['it: ' num2str(iter) ' , BestCost: ' num2str(Best_Cost)])

end

参考文献

[1]Chen H, Ahmadianfar I, Heidari A A, et al. LEE: A Physics-Inspired Optimizer based on LangEvin Equation[J]. Neurocomputing, 2025: 132288.

完整代码获取

后台回复关键词:

TGDM870


获取更多代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淘个代码_

不想刀我的可以选择爱我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值