%_________________________________________________________________________%
% 麻雀优化算法 %
%_________________________________________________________________________%
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
没有合适的资源?快使用搜索试试~ 我知道了~
收起资源包目录
1 SSA-DBN分类 - 2.zip (21个子文件)
getObjValue.m 1KB
Toolbox
tanh_opt.m 87B
initialization.m 456B
nnapplygrads.m 763B
dbntrain.m 286B
softmax.m 151B
rbmtrain.m 1KB
nnsetup.m 2KB
nnff.m 2KB
nnpredict.m 172B
rbmdown.m 119B
sigm.m 63B
nnbp.m 2KB
sigmrnd.m 98B
dbnunfoldtonn.m 653B
rbmup.m 123B
dbnsetup.m 600B
nntrain.m 2KB
SSA.m 3KB
main.m 2KB
数据集.xlsx 73KB
共 21 条
- 1
资源推荐
资源预览
资源评论
5星 · 资源好评率100%
123 浏览量
5星 · 资源好评率100%
2023-09-25 上传
5星 · 资源好评率100%
125 浏览量
143 浏览量
181 浏览量
104 浏览量
2023-09-25 上传
188 浏览量
2023-09-10 上传
2023-09-10 上传
124 浏览量
102 浏览量
2023-12-25 上传
2023-09-18 上传
123 浏览量
137 浏览量
2023-09-10 上传
2023-09-05 上传
168 浏览量
187 浏览量
182 浏览量
136 浏览量
2023-09-10 上传
2023-12-25 上传
2023-12-25 上传
2023-09-10 上传
5星 · 资源好评率100%
148 浏览量
资源评论
智能算法及其模型预测
- 粉丝: 2536
- 资源: 871
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Python中的图像处理.zip
- Python中的一个简单区块链.zip
- Python中的网络分析.zip
- Python中的一个小词云生成器.zip
- springboot189基于SpringBoot电商平台的设计与实现.zip
- springboot189基于SpringBoot电商平台的设计与实现.zip
- Python中的在线机器学习.zip
- springboot190基于springboot框架的工作流程管理系统的设计与实现.zip
- springboot190基于springboot框架的工作流程管理系统的设计与实现.zip
- Python中的张量和动态神经网络,具有强大的GPU加速.zip
- Python中的音频指纹和识别.zip
- Python中数据结构和算法的最小示例.zip
- Python中近似近邻库的基准测试.zip
- Python中一个强大的SpiderWeb爬虫系统.zip
- RE2是一个快速、安全、线程友好的正则表达式引擎替代方案,可以回溯PCRE、Perl和Python中使用的正则表达式引.zip
- Python资源大全中文版包括Web框架网络爬虫模板引擎数据库数据可视化图片处理等由开源前哨和Python开发者微信公.zip
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功