• 大小: 2.96MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-02
  • 语言: Matlab
  • 标签: 优化算法  

资源简介

差分进化算法结合人工蜂群形成差分蜂群算法(DE-ABC),并与粒子群、遗传、差分进化、人工蜂群进行对比,内涵5种标准测试函数

资源截图

代码片段和文件信息


function [GlobalParamsGlobalMinBestGlobalMins]=abc(objfundmax_itersizepopublb)

%% 参数初始化
NP=sizepop; % 蜂群规模
FoodNumber=NP/2; % 蜜源(解)数量
limit=100; % 当有蜜源连续没被更新的次数超过limit时,该蜜源将被重新初始化
maxCycle=max_iter; % 最大迭代次数
% 待优化参数信息
D=d; % 待优化参数个数,次数为c和g两个
ub=ones(1D)*ub; % 参数取值上界
lb=ones(1D)*lb; % 参数取值下界
runtime=1; % 可用于设置多次运行(让ABC算法运行runtime次)以考察程序的稳健性

BestGlobalMins=[]; %用于存放全局最优解与平均适应度值
BestGlobalParams=zeros(runtimeD); % 用于存放ABC算法优化得到的最优参数
GlobalMin=inf;
GlobalParams=[inf inf];
%% 初始化蜜源
Range = repmat((ub-lb)[FoodNumber 1]);
Lower = repmat(lb [FoodNumber 1]);
Foods = rand(FoodNumberD) .* Range + Lower;

% 计算每个蜜源(解)得目标函数值,objfun为计算SVM预测的平均平方误差(MSE)的函数,根据自己的实际问题变异目标函数即可
ObjVal=ones(1FoodNumber);
for k = 1:FoodNumber
    ObjVal(k) = objfun(Foods(k:));
end
Fitness=calculateFitness(ObjVal); % 计算适应度函数值

% 标记初始最优蜜源(解)
BestInd=find(ObjVal==min(ObjVal));
BestInd=BestInd(end);
if (ObjVal(BestInd)    GlobalMin=ObjVal(BestInd);
    GlobalParams=Foods(BestInd:);
end
%%
for r=1:runtime % 运行ABC算法runtime次
    trial=zeros(1FoodNumber); % 用于记录第i个蜜源有连续trail(i)次没被更新过
    iter=1; % 迭代开始
    while ((iter <= maxCycle)) % 循环条件
        
        %%%%%%%%%%%%%%%%%%%%%引领蜂搜索解的过程%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        for i=1:(FoodNumber) % 遍历每个蜜源(解)
            Param2Change=fix(rand*D)+1; % 随机选择需要变异的参数
            neighbour=fix(rand*(FoodNumber))+1; % 随机选择相邻蜜源(解)以准备变异
            % 需要保证选择的相邻蜜源不是当前蜜源(i)
            while(neighbour==i)
                neighbour=fix(rand*(FoodNumber))+1;
            end
            
            sol=Foods(i:); % 提取当前蜜源(解)对应的的参数
            % 参数变异得到新的蜜源:v_{ij}=x_{ij}+\phi_{ij}*(x_{kj}-x_{ij})
            sol(Param2Change)=Foods(iParam2Change)+(Foods(iParam2Change)-Foods(neighbourParam2Change))*(rand-0.5)*2;
            % 确保参数取值范围不越界
            ind=find(sol            sol(ind)=lb(ind);
            ind=find(sol>ub);
            sol(ind)=ub(ind);
            % 计算变异后蜜源的目标函数值和适应度函数值
            ObjValSol=objfun(sol);
            FitnessSol=calculateFitness(ObjValSol);
            % 更新当前蜜源的相关信息
            if (FitnessSol>Fitness(i))
                Foods(i:)=sol;
                Fitness(i)=FitnessSol;
                ObjVal(i)=ObjValSol;
                trial(i)=0; % 如果当前蜜源被更新了,则对应的trial归零
            else
                trial(i)=trial(i)+1; % 如果当前蜜源没有被更新,则trial(i)加1
            end
        end
        
        %%%%%%%%%%%%%%%%%%%%%%%% 跟随蜂搜索解的过程 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        % 计算解(蜜源)的概率
        prob=(0.9.*Fitness./max(Fitness))+0.1;
        % 循环初始化
        i=1;
        t=0;
        while(t            if(rand                t=t+1; % 循环计数器加1
                
                Param2Change=fix(rand*D)+1; % 随机确定需要变异的参数
                neighbour=fix(rand*(FoodNumber))+1; % 随机选择相邻蜜源(解)
                % 需要保证选择的相邻蜜源不是当前蜜源(i)
                while(neighbour==i)
               

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    .CA....      5844  2019-05-05 20:37  差分蜂群优化算法MATLAB实现\abc.m

    .CA....      5714  2019-05-05 20:37  差分蜂群优化算法MATLAB实现\ABC1.m

    .CA....       182  2008-06-09 19:54  差分蜂群优化算法MATLAB实现\calculateFitness.m

    .CA....       322  2019-03-30 13:23  差分蜂群优化算法MATLAB实现\Code.m

    .CA....      1613  2019-03-30 13:32  差分蜂群优化算法MATLAB实现\Cross.m

    .CA....      2590  2019-05-05 19:44  差分蜂群优化算法MATLAB实现\DE.m

    .CA....      2496  2020-05-19 13:29  差分蜂群优化算法MATLAB实现\de1.m

    .CA....      1547  2019-05-05 20:29  差分蜂群优化算法MATLAB实现\DEABC.m

    .CA....        76  2019-04-29 10:54  差分蜂群优化算法MATLAB实现\f1.m

    .CA....       186  2019-04-29 10:54  差分蜂群优化算法MATLAB实现\f2.m

    .CA....       174  2019-04-29 10:51  差分蜂群优化算法MATLAB实现\f3.m

    .CA....       137  2019-04-29 10:54  差分蜂群优化算法MATLAB实现\f4.m

    .CA....      2462  2019-05-03 13:14  差分蜂群优化算法MATLAB实现\ga.m

    .CA....      1239  2020-05-19 13:24  差分蜂群优化算法MATLAB实现\MAIN.m

    .CA....      1455  2019-03-30 13:54  差分蜂群优化算法MATLAB实现\Mutation.m

    .CA....      2657  2020-05-19 13:31  差分蜂群优化算法MATLAB实现\pso.m

    .CA....       806  2019-03-30 13:25  差分蜂群优化算法MATLAB实现\select.m

    .CA....   3456266  2019-03-30 16:28  差分蜂群优化算法MATLAB实现\一种新的混合智能极限学习机_林梅金.caj

    .CA....        55  2020-05-19 13:32  差分蜂群优化算法MATLAB实现\程序说明.txt

    .C.D...         0  2020-05-19 13:32  差分蜂群优化算法MATLAB实现

----------- ---------  ---------- -----  ----

              3485821                    20


评论

共有 条评论