%_________________________________________________________________________%
% 麻雀优化算法 %
%_________________________________________________________________________%
function [Best_score,Best_pos,curve]=SSA(pop,Max_iter,lb,ub,dim,fobj)
ST = 0.7;%预警值
PD = 0.4;%发现者的比列,剩下的是加入者0.7
SD = 0.2;%意识到有危险麻雀的比重
PDNumber = round(pop*PD); %发现者数量
SDNumber = round(SD*PD);%意识到有危险麻雀数量
%种群初始化
X0=initialization(pop,dim,ub,lb);
X = X0;
%计算初始适应度值
fitness = zeros(1,pop);
for i = 1:pop
fitness(i) = fobj(X(i,:));
end
[fitness, index]= sort(fitness);%升排序
BestF = fitness(1);
WorstF = fitness(end);
GBestF = fitness(1);%全局最优适应度值
for i = 1:pop
X(i,:) = X0(index(i),:);
end
curve=zeros(1,Max_iter);
GBestX = X(1,:);%全局最优位置
X_new = X;
for i = 1: Max_iter
disp(['第',num2str(i),'次迭代'])
BestF = fitness(1);
WorstF = fitness(end);
R2 = rand(1);
for j = 1:PDNumber
if(R2<ST)
X_new(j,:) = X(j,:).*exp(-j/(rand(1)*Max_iter));
else
X_new(j,:) = X(j,:) + randn()*ones(1,dim);
end
end
for j = PDNumber+1:pop
% if(j>(pop/2))
if(j>(pop - PDNumber)/2 + PDNumber)
X_new(j,:)= randn().*exp((X(end,:) - X(j,:))/j^2);
else
%产生-1,1的随机数
A = ones(1,dim);
for a = 1:dim
if(rand()>0.5)
A(a) = -1;
end
end
AA = A'*inv(A*A');
X_new(j,:)= X(1,:) + abs(X(j,:) - X(1,:)).*AA';
end
end
Temp = randperm(pop);
SDchooseIndex = Temp(1:SDNumber);
for j = 1:SDNumber
if(fitness(SDchooseIndex(j))>BestF)
X_new(SDchooseIndex(j),:) = X(1,:) + randn().*abs(X(SDchooseIndex(j),:) - X(1,:));
elseif(fitness(SDchooseIndex(j))== BestF)
K = 2*rand() -1;
X_new(SDchooseIndex(j),:) = X(SDchooseIndex(j),:) + K.*(abs( X(SDchooseIndex(j),:) - X(end,:))./(fitness(SDchooseIndex(j)) - fitness(end) + 10^-8));
end
end
%边界控制
for j = 1:pop
for a = 1: dim
if length(ub)>1
if(X_new(j,a)>ub(a))
X_new(j,a) =ub(a);
end
if(X_new(j,a)<lb(a))
X_new(j,a) =lb(a);
end
else
if(X_new(j,a)>ub)
X_new(j,a) =ub;
end
if(X_new(j,a)<lb)
X_new(j,a) =lb;
end
end
end
end
%更新位置
for j=1:pop
fitness_new(j) = fobj(X_new(j,:));
end
for j = 1:pop
if(fitness_new(j) < GBestF)
GBestF = fitness_new(j);
GBestX = X_new(j,:);
end
end
X = X_new;
fitness = fitness_new;
%排序更新
[fitness, index]= sort(fitness);%排序
BestF = fitness(1);
WorstF = fitness(end);
for j = 1:pop
X(j,:) = X(index(j),:);
end
curve(i) = GBestF;
disp(['current iteration is: ',num2str(i), ', best fitness is: ', num2str(GBestF)]);
end
Best_pos =GBestX; %全局最优位置 K Alpha值组合
Best_score = curve(end);%全局最优适应度值 熵值最小
end
没有合适的资源?快使用搜索试试~ 我知道了~
麻雀算法(SSA)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,SSA-HKELM分类预测 多特征输入单输出的

共8个文件
m:7个
xlsx:1个

需积分: 0 3 下载量 152 浏览量
2023-09-25
11:12:13
上传
评论 1
收藏 75KB ZIP 举报
温馨提示
麻雀算法(SSA)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,SSA-HKELM分类预测。 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。 程序语言为matlab,程序可出分类效果图,迭代优化图,混淆矩阵图。
资源推荐
资源详情
资源评论


























收起资源包目录









共 8 条
- 1
资源评论


机器学习-深度学习
- 粉丝: 692
- 资源: 446
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 【NetTopologySuite】最大内切圆
- stm32 pdo 发送和接收,实现同步接收,主机实现节点是否在线功能
- 基于Qt与MYSQL的图书管理系统.zip
- 数据结构课程设计,地铁公交换乘系统(demo),使用Qt QML.zip
- HCIA笔记1111111111
- stm32 canopen sdo主从机读写大于8字节传输 说明:移植CanFestival协议
- 数据库系统大作业:手机零售系统,技术栈:C++,Qt,SQL Server存储过程、触发器.zip
- 生日快乐祝福网页 HTML
- 最后一个版本,经测试可用 md5: 26569c63bf1ab7165655a58a8b964426
- 用python实现神经网络算法.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
