function [Destination_fitness,bestPositions,Convergence_curve]=ismaforkelm(N,Max_iter,lb,ub,dim,fobj)
% 种群初始化
bestPositions=zeros(1,dim);
Destination_fitness=inf;%设置初始全最优适应度
AllFitness = inf*ones(N,1);%初始所有种群的适应度
weight = ones(N,dim);%每一个黏菌的权重
%种群初始化
lb = [1,1];%下边界
ub = [10,10];%上边界
Ub=ub(1);Lb=lb(1);
X=Goodnode_initialization(N,dim,Ub,Lb);
it=1; %初始迭代次数
lb=ones(1,dim).*lb; % 下界
ub=ones(1,dim).*ub; % 上界
z=0.03; % 初始参数z
% 主循环
while it <= Max_iter
it
for i=1:N
% 检查是否在范围内
Flag4ub=X(i,:)>ub;
Flag4lb=X(i,:)<lb;
X(i,:)=(X(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;
AllFitness(i) = fobj(X(i,:));
end
[X,AllFitness]=ODE(X,AllFitness,ub,lb,fobj);
if AllFitness(1) < Destination_fitness
bestPositions=X(1,:);
Destination_fitness = AllFitness(1);
end
[SmellOrder,SmellIndex] = sort(AllFitness); %%筛选出最优和最差的种群
worstFitness = SmellOrder(N);
bestFitness = SmellOrder(1);
% bestPositions=X(SmellIndex(1),:);
% Destination_fitness = AllFitness(SmellIndex(1));
S=bestFitness-worstFitness+eps; %避免分母为0的操作
%计算每一个黏菌的权重
for i=1:N
for j=1:dim
if i<=(N/2) %参考源码,式2.5
weight(SmellIndex(i),j) = 1+rand()*log10((bestFitness-SmellOrder(i))/(S)+1);
else
weight(SmellIndex(i),j) = 1-rand()*log10((bestFitness-SmellOrder(i))/(S)+1);
end
end
end
%更新当前最优的种群和适应度
if bestFitness < Destination_fitness
bestPositions=X(SmellIndex(1),:);
Destination_fitness = bestFitness;
end
a = atanh(-(it/Max_iter)+1); %参考原式2.4
b = 1-it/Max_iter;
% 更新每一代种群的位置
for i=1:N
if rand<z %Eq.(2.7)
X(i,:) = (ub-lb)*rand+lb;
else
p =tanh(abs(AllFitness(i)-Destination_fitness)); %Eq.(2.2)
vb = unifrnd(-a,a,1,dim); %Eq.(2.3)
vc = unifrnd(-b,b,1,dim);
for j=1:dim
r = rand();
A = randi([1,N]); % two positions randomly selected from population
B = randi([1,N]);
if r<p %Eq.(2.1)
X(i,j) = bestPositions(j)+ vb(j)*(weight(i,j)*X(A,j)-X(B,j));
else
X(i,j) = vc(j)*X(i,j);
end
end
end
end
f_ave=mean(AllFitness);
for g=1:N
if fobj(X(i,:))<f_ave
X(i,:)=X(i,:).*trnd(it);
X(i,:) = Bounds(X(i,:), lb, ub);
else
rand_num=randperm(0.5*N,1);
X(i,:)=(X(i,:)+X(rand_num,:))/2;
X(i,:) = Bounds(X(i,:), lb, ub);
end
end
Convergence_curve1(it)=Destination_fitness;
it=it+1;
end
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
2 PSO-KELM分类-2.zip (14个子文件)
path_kelm
kelmPredict.m 307B
kelm.m 1KB
kelmTrain.m 451B
Bounds.m 235B
initialization.m 567B
ismaforkelm.m 3KB
fun_kelm.m 521B
kernel_matrix.m 2KB
fun.m 615B
data_process.m 309B
initialization.m 460B
main.m 1KB
数据集.xlsx 73KB
PSO.m 2KB
共 14 条
- 1
资源评论
智能算法及其模型预测
- 粉丝: 2397
- 资源: 871
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功