function [bestX,Convergence_curve]=ssa_cnn(P_train,T_train,P_test,T_test)
%% 参数设置
pop=20; % 种群数
M=20; % 最大迭代次数
dim=9;%一共有9个参数需要优化,分别是学习率、迭代次数、batchsize、第一层卷积层的核大小、和数量、第2层卷积层的核大小、和数量,以及两个全连接层的神经元数量
lb= [0.001 10 16 1 1 1 1 1 1]; % 下边界
ub= [0.01 50 256 3 20 3 20 50 50]; % 上边界
% 学习率的范围是0.001-0.01 迭代次数的范围是10-50 batchsize的范围是16-256 核大小的范围是1-3 核数量的范围是1-20 全连接层的范围是1-50
P_percent = 0.2; %producers 在全部种群的占比
pNum = round( pop * P_percent ); % producers的数量
%初始化种群
for i = 1 : pop
for j=1:dim
if j==1%除了学习率 其他的都是整数
x( i, j ) = (ub(j)-lb(j))*rand+lb(j);
else
x( i, j ) = round((ub(j)-lb(j))*rand+lb(j));
end
end
fit( i )=fitness(x(i,:),P_train,T_train,P_test,T_test);
end
pFit = fit;
pX = x;
fMin=fit(1);
bestX = x( i, : );
for t = 1 : M
[ ~, sortIndex ] = sort( pFit );% Sort.从小到大
[fmax,B]=max( pFit );
worse= x(B,:);
r2=rand(1);
%%%%%%%%%%%%%5%%%%%%这一部位为发现者(探索者)的位置更新%%%%%%%%%%%%%%%%%%%%%%%%%
if(r2<0.8)%预警值较小,说明没有捕食者出现
for i = 1 : pNum %r2小于0.8的发现者的改变(1-20) % Equation (3)
r1=rand(1);
x( sortIndex( i ), : ) = pX( sortIndex( i ), : )*exp(-(i)/(r1*M));%对自变量做一个随机变换
x( sortIndex( i ), : ) = Bounds( x( sortIndex( i ), : ), lb, ub );%对超过边界的变量进行去除
fit( sortIndex( i ) )=fitness(x(sortIndex( i ),:),P_train,T_train,P_test,T_test);
end
else %预警值较大,说明有捕食者出现威胁到了种群的安全,需要去其它地方觅食
for i = 1 : pNum %r2大于0.8的发现者的改变
x( sortIndex( i ), : ) = pX( sortIndex( i ), : )+randn(1)*ones(1,dim);
x( sortIndex( i ), : ) = Bounds( x( sortIndex( i ), : ), lb, ub );
fit( sortIndex( i ) )=fitness(x(sortIndex( i ),:),P_train,T_train,P_test,T_test);
end
end
[ ~, bestII ] = min( fit );
bestXX = x( bestII, : );
%%%%%%%%%%%%%5%%%%%%这一部位为加入者(追随者)的位置更新%%%%%%%%%%%%%%%%%%%%%%%%%
for i = ( pNum + 1 ) : pop %剩下20-100的个体的变换 % Equation (4)
% i
% sortIndex( i )
A=floor(rand(1,dim)*2)*2-1;
if( i>(pop/2))%这个代表这部分麻雀处于十分饥饿的状态(因为它们的能量很低,也是是适应度值很差),需要到其它地方觅食
x( sortIndex(i ), : )=randn(1,dim).*exp((worse-pX( sortIndex( i ), : ))/(i)^2);
else%这一部分追随者是围绕最好的发现者周围进行觅食,其间也有可能发生食物的争夺,使其自己变成生产者
x( sortIndex( i ), : )=bestXX+(abs(( pX( sortIndex( i ), : )-bestXX)))*(A'*(A*A')^(-1))*ones(1,dim);
end
x( sortIndex( i ), : ) = Bounds( x( sortIndex( i ), : ), lb, ub );%判断边界是否超出
fit( sortIndex( i ) )=fitness(x(sortIndex( i ),:),P_train,T_train,P_test,T_test);
end
%%%%%%%%%%%%%5%%%%%%这一部位为意识到危险(注意这里只是意识到了危险,不代表出现了真正的捕食者)的麻雀的位置更新%%%%%%%%%%%%%%%%%%%%%%%%%
c=randperm(numel(sortIndex));%%%%%%%%%这个的作用是在种群中随机产生其位置(也就是这部分的麻雀位置一开始是随机的,意识到危险了要进行位置移动,
%处于种群外围的麻雀向安全区域靠拢,处在种群中心的麻雀则随机行走以靠近别的麻雀)
b=sortIndex(c(1:pop));
for j = 1 : length(b) % Equation (5)
if( pFit( sortIndex( b(j) ) )>(fMin) ) %处于种群外围的麻雀的位置改变
x( sortIndex( b(j) ), : )=bestX+(randn(1,dim)).*(abs(( pX( sortIndex( b(j) ), : ) -bestX)));
else
%处于种群中心的麻雀的位置改变
x( sortIndex( b(j) ), : ) =pX( sortIndex( b(j) ), : )+(2*rand(1)-1)*(abs(pX( sortIndex( b(j) ), : )-worse))/ ( pFit( sortIndex( b(j) ) )-fmax+1e-50);
end
x( sortIndex(b(j) ), : ) = Bounds( x( sortIndex(b(j) ), : ), lb, ub );
fit( sortIndex( b(j) ) )=fitness(x(sortIndex( b(j) ),:),P_train,T_train,P_test,T_test);
end
for i = 1 : pop
if ( fit( i ) < pFit( i ) )
pFit( i ) = fit( i );
pX( i, : ) = x( i, : );
end
if( pFit( i ) < fMin )
fMin= pFit( i );
bestX = pX( i, : );
end
end
t,fMin
Convergence_curve(t)=fMin;
end
没有合适的资源?快使用搜索试试~ 我知道了~
【CNN回归预测】基于matlab麻雀算法优化卷积神经网络CNN回归预测【含Matlab源码 282期】
共19个文件
m:9个
mat:5个
jpg:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 147 浏览量
2023-09-10
14:45:52
上传
评论 1
收藏 187KB ZIP 举报
温馨提示
CSDN海神之光上传的全部代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:Main .m; 数据; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开除Main.m的其他m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博主博客文章底部QQ名片; 4.1 CSDN博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 智能优化算法优化CNN卷积神经网络分类预测系列程序定制或科研合作方向: 4.4.1 遗传算法GA/蚁群算法ACO优化CNN 4.4.2 粒子群算法PSO/蛙跳算法SFLA优化CNN 4.4.3 灰狼算法GWO/狼群算法WPA优化CNN 4.4.4 鲸鱼算法WOA/麻雀算法SSA优化CNN 4.4.5 萤火虫算法FA/差分算法DE优化CNN
资源推荐
资源详情
资源评论
收起资源包目录
【CNN回归预测】基于matlab麻雀算法优化CNN回归预测【含Matlab源码 282期】.zip (19个子文件)
【CNN回归预测】基于matlab麻雀算法优化CNN回归预测【含Matlab源码 282期】
R2.m 180B
运行结果1.jpg 42KB
Bounds.m 491B
file2_ssa_cnn.m 3KB
result.m 537B
ssa_cnn.m 4KB
kernel_matrix.m 969B
运行结果2.jpg 41KB
file3_compare.m 888B
file1_cnn.m 2KB
运行结果4.jpg 55KB
data.xlsx 12KB
fitness.m 1KB
运行结果3.jpg 36KB
result
ssa_cnn_result.mat 720B
ssa_result.mat 281B
cnn_result.mat 723B
ssacnn_net.mat 13KB
cnn_net.mat 10KB
共 19 条
- 1
资源评论
- qq_230703552023-10-19感谢资源主的分享,这个资源对我来说很有用,内容描述详尽,值得借鉴。
- 吉吉A5-2082024-04-10这个资源对我启发很大,受益匪浅,学到了很多,谢谢分享~
海神之光
- 粉丝: 5w+
- 资源: 7128
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java项目_ssm高校信息资源共享平台_java毕业设计.zip
- java项目_ssm高校校园点餐系统_计算机毕业设计.zip
- java精品项目-基于ssm的儿童成长博客记录系统-【毕业设计】-.zip
- java精品源码-基于ssm的大学生校园兼职平台管理系统【毕业设计】.zip
- java精品项目-基于ssm的springboot的校园二手交易平台【毕业设计】.zip
- java精品项目-基于SpringBoot+Thymeleaf的党员信息管理系统毕业设计-带.zip
- java精品项目-基于ssm出租车管理系统【毕业设计】.zip
- java精品项目-基于SSM+Shiro+LayUI+EasyUI的权限管理系统【毕业设计】.zip
- java毕业设计-ssm二手交易平台网站-计算机毕业设计.zip
- java毕业设计ssm二手手机回收平台系统-计算机毕业设计.zip
- java毕业设计-多用户博客个人网站-计算机毕业设计.zip
- java毕业设计_ssm高校二手交易平台_计算机毕设.zip
- java毕业设计_ssm房屋租赁系统_计算机毕业设计.zip
- java毕业设计_ssm高校毕业生就业满意度调查统计系统_计算机毕业设计.zip
- java【毕业设计】精品项目-基于ssm的学生在线选课系统.zip
- java【毕业设计】精品项目-基于ssm的在线考试系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功