1 简介
1.1 鲸鱼算法
1.2 卷积神经网络
2 部分代码
%%基于鲸鱼算法改进cnn预测 clc;clear;close all load Y1_all.mat rxSymb load SINR1_all.mat sinr %% %序列的前 90% 用于训练,后 10% 用于测试 shuru=size(rxSymb,2);%输入层数 numTimeStepsTrain = floor(0.90*size(rxSymb,1));%训练样本数 numTimeStepsTest=size(rxSymb,1)-numTimeStepsTrain;%测试样本数 train_x = rxSymb(1:numTimeStepsTrain,:)';%训练集输入 train_y = sinr(1:numTimeStepsTrain,:)';%训练集输出 test_x =rxSymb(numTimeStepsTrain+1:end,:)';%测试集输入 test_y = sinr(numTimeStepsTrain+1:end,:)';%测试集输出 %输入数据是m*n形式的,m代表有多少个输入特征(数据是19个),n是有多少个样本,输出数据是1*n,输出是单输出 %数据归一化(或者标准化,看哪个效果好) [train_x,minx,maxx, train_yy,miny,maxy] =premnmx(train_x,train_y);%归一化 test_x=tramnmx(test_x,minx,maxx);%归一化 test_y=tramnmx(test_y,miny,maxy);%归一化 %数据的一个转换,转换成MATLAB的CNN的输入数据形式,是4-D形式的,最后一维就是样本数 trainD=reshape(train_x,[shuru,1,1,numTimeStepsTrain]);%训练集输入 testD=reshape(test_x,[shuru,1,1,numTimeStepsTest]);%测试集输入 targetD = train_y;%训练集输出 targetD_test = test_y;%测试集输出 data = sinr(numTimeStepsTrain+1:end,:)';%测试集输出 %% WOA lb=0.001;%学习率下限 ub=0.01;%学习率上限 dim=1;%维度,即一个优化参数 SearchAgents_no=2; % 鲸鱼数量 Max_iter=50; % 迭代次数 % initialize position vector and score for the leader Leader_pos=zeros(1,dim);%初始化领头鲸鱼的位置 Leader_score=inf; %%初始化全局最小值 % Positions=ceil(rand(SearchAgents_no,dim).*(ub-lb)+lb);%初始化种群 Convergence_curve=zeros(1,Max_iter);%记录每代最佳适应度值 t=0;% 计时器 Convergence_curve(t)=Leader_score;%保存每一代的最小值 end figure(1) subplot(2,1,1) plot(data(1,:),'-*','linewidth',3) hold on plot(YPred_best(1,:),'-s','linewidth',3) legend('实际值','预测值') grid on xlabel('时间') ylabel('数据值') title('鲸鱼算法优化cnn预测图') subplot(2,1,2) stem(YPred_best(1,:)-data(1,:)) xlabel('时间') ylabel('均方差值') title('鲸鱼算法优化cnn预测均方差图 ' ) figure(2) plot(Convergence_curve) xlabel('迭代次数') ylabel('适应度值') title(['鲸鱼算法优化cnn适应度曲线,最佳学习率=',num2str( Leader_pos)])
3 仿真结果
4 参考文献
[1]江远强. 一种基于鲸鱼算法优化LVQ神经网络的欺诈行为检测方法:.