• 大小: 4KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: Matlab
  • 标签: Cohort  Intelligence  

资源简介

CoHort Intelligence的MATLAB 代码,全网唯一,自编自写

资源截图

代码片段和文件信息

%% 清空环境
clc;clear;
%% CI算法参数(以函数值最大为目标)
maxgen=200;                         %进化代数
popsize=10;                       %种群规模
varNum=10;                         %采样数目
r=0.5;                             %属性约减因子
e=0.0001;                          %convergence parameter 
cmax=10;                           %饱和次数
inibound=[-5 5;-5 5];                 %采样区间
%define cohort parameter
X=zeros(popsize2);%candidates
fitness=zeros(popsize1);%
% interval=zeros(popsize22);%qualities interval
%% 个体初始化

% 初始化种群
[Xinterval]=CreatIndividual(iniboundpopsize);
%计算个体适应度
for tmp=1:popsize
    fitness(tmp)=fun(X(tmp:));
end
% 记录每一代进化中最好的适应度和平均适应度
trace=[];
Fn=[00];
Fn_1=[00];
saturationNum=0;
%% 进化开始
for i=1:maxgen
    fitness=1./fitness;
    sumfitness=sum(fitness);
    sumf=fitness./sumfitness;
    maxIndex=find(sumf==max(sumf));
    %
    Y=zeros(size(X));
    Yinterval=zeros(size(interval));
    Yfitness=zeros(size(fitness));
%     varNum=floor(varNum*r+1);
    for s=1:popsize
        % 选择一个个体去follow        
%         if s==maxIndex
%             %the best one follow himself
%             selectedIndex=maxIndex;
%              bound=UpdateBou(rX(selectedIndex:)interval(selectedIndex::));
%         else
%             selectedIndex=Select(sumfpopsize);     
%             %更新被选择个体的特征采样间隔
%             bound=UpdateBou(rX(selectedIndex:)interval(selectedIndex::));
%         end 
        selectedIndex=Select(sumfpopsize);     
%             更新被选择个体的特征采样间隔
        bound=UpdateBou(rX(selectedIndex:)interval(selectedIndex::));
        % Sampling from the updated interval
        
        [samCansamIt]=CreatIndividual(boundvarNum);
        %Calculate fitness
        samfitness=zeros(varNum1);
        for tmp=1:varNum
            samfitness(tmp)=fun(samCan(tmp:));
        end
        %update current candidate
        maxIndex=find(samfitness==min(samfitness));
        Y(s:)=samCan(maxIndex(1):);
        Yinterval(s::)=samIt(maxIndex(1)::);
        Yfitness(s)=samfitness(maxIndex(1));
    end   
    X=Y;
%     scatter(X(:1)X(:2));
%     axis([-55-55]);
%     hold on
    interval=Yinterval;
    fitness=Yfitness;
    
    %找到最大适应度的个体及它们在种群中的位置
    [bestfitnessbestindex]=min(fitness);
    avgfitness=sum(fitness)/popsize;
    trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度
    %% judge the stop criterion
    Fn_1=Fn;
    Fn=[max(fitness)min(fitness)];
    if (Fn(1)-Fn_1(1))<=e
        if (Fn(2)-Fn_1(2))<=e
            if (Fn(1)-Fn(2))<=e
                saturationNum=saturationNum+1;
            end
        end
    end
    if saturationNum>=cmax
        break;
    end
end
%进化结束

%% 结果显示
[r c]=size(trace);
figure
plot([1:r]‘trace(:1)‘r-‘[1:r]‘trace(:2)‘b--‘);
title([‘函数值曲线  ‘ ‘终止代数=‘ num2str(i)]‘fontsize‘12);
xlabel(‘进化代数‘‘fontsize‘12);ylabel(‘函数值‘‘fontsize‘12);
legend(‘各代平均值‘‘各代最佳值‘‘fontsize‘12);
% ylim([1.5 8])
di

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

     文件       3101  2017-11-08 09:38  Cohort Intelligence\CI.asv

     文件       3310  2017-11-10 09:14  Cohort Intelligence\CI.m

     文件        231  2017-11-07 11:32  Cohort Intelligence\Code.m

     文件        286  2017-11-07 19:32  Cohort Intelligence\CreatIndividual.m

     文件        182  2017-11-08 09:53  Cohort Intelligence\fun.m

     文件        530  2017-11-07 22:16  Cohort Intelligence\Select.m

     文件        595  2017-11-07 20:21  Cohort Intelligence\UpdateBou.m

     目录          0  2017-11-07 21:29  Cohort Intelligence

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

                 8235                    8


评论

共有 条评论

相关资源