-
大小: 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
评论
共有 条评论