当前位置 : 主页 > 编程语言 > python >

【DELM预测】基于遗传算法改进深度学习极限学习机实现数据预测附matlab代码

来源:互联网 收集:自由互联 发布时间:2022-06-15
1 简介 人工神经网络的最大缺点是训练时间太长从而限制其实时应用范围,近年来,极限学习机(Extreme Learning Machine, ELM)的提出使得前馈神经网络的训练时间大大缩短,然而当原始数据混杂入

1 简介

人工神经网络的最大缺点是训练时间太长从而限制其实时应用范围,近年来,极限学习机(Extreme Learning Machine, ELM)的提出使得前馈神经网络的训练时间大大缩短,然而当原始数据混杂入大量噪声变量时,或者当输入数据维度非常高时,极限学习机算法的综合性能会受到很大的影响.深度学习算法的核心是特征映射,它能够摒除原始数据中的噪声,并且当向低维度空间进行映射时,能够很好的起到对数据降维的作用,因此我们思考利用深度学习的优势特性来弥补极限学习机的弱势特性从而改善极限学习机的性能.为了进一步提升DELM预测精度,本文采用麻雀搜索算法进一步优化DELM超参数,仿真结果表明,改进算法的预测精度更高。

【DELM预测】基于遗传算法改进深度学习极限学习机实现数据预测附matlab代码_原始数据

【DELM预测】基于遗传算法改进深度学习极限学习机实现数据预测附matlab代码_原始数据_02

【DELM预测】基于遗传算法改进深度学习极限学习机实现数据预测附matlab代码_原始数据_03

【DELM预测】基于遗传算法改进深度学习极限学习机实现数据预测附matlab代码_原始数据_04

【DELM预测】基于遗传算法改进深度学习极限学习机实现数据预测附matlab代码_交叉概率_05

2 部分代码

%% GA
clc % 清屏
clear all; % 删除workplace变量
close all; % 关掉显示图形窗口
warning off
%% 参数初始化
popsize=50; %种群规模
lenchrom=17; %变量字串长度
pc=0.7; %设置交叉概率,本例中交叉概率是定值,若想设置变化的交叉概率可用表达式表示,或从写一个交叉概率函数,例如用神经网络训练得到的值作为交叉概率
pm=0.3; %设置变异概率,同理也可设置为变化的
load('Ereal.mat')
load('Freal.mat')
maxgen=500; % 进化次数
%定义弧的权矩阵和几点换乘权矩阵
%种群
popmax=9;
popmin=1;
popmax2=0
popmin2=-4
bound=[popmin popmax;popmin2 popmax2;popmin popmax;popmin2 popmax2;popmin popmax;popmin2 popmax2;popmin popmax;popmin2 popmax2;popmin popmax;popmin2 popmax2;popmin popmax;popmin2 popmax2;popmin popmax;popmin2 popmax2;popmin popmax;popmin2 popmax2;popmin popmax]; %变量范围
%% 产生初始粒子和速度
for i=1:popsize
%随机产生一个种群
GApop(i,:)=Code(lenchrom,popmax,bound,E); %随机产生个体,GApop是lenchrom和bound的一个函数,是100*7的矩阵,GApop(i,:)是1*7的一行数字,等于是对每个i去执行一次Code函数和test函数
%或者说Code函数指编码过程,以lenchrom和bound为依据进行编码
%Code经过检验后,GApop第i行赋值为每一个Code列向量
%计算适应度
p=[]
for u=1:2:(lenchrom-2)
p=[p E(GApop(i,u),GApop(i,u+2),-GApop(i,u+1))]
end
q=[]
for j=3:2:(lenchrom-2)
q=[q F(-GApop(i,j-1),-GApop(i,j+1),GApop(i,j))]
end
fitness(i)=sum(p)+sum(q); %染色体的适应度
end
%找最好的染色体
[bestfitness bestindex]=min(fitness); %min函数左侧是适应度矩阵(1*100)中最佳值和对应位置,bestindex为什么不是最优的位置(是生成的第一批的最优和位置)
zbest=GApop(bestindex,:); %全局最佳,最佳位置对应的染色体向量
gbest=GApop; %个体最佳,100*7矩阵
fitnessgbest=fitness; %个体最佳适应度值,指同样的函数式
fitnesszbest=bestfitness; %全局最佳适应度值,同上
%% 迭代寻优
for i=1:maxgen
i
%种群更新 GA选择更新
GApop=Select2(GApop,fitness,popsize); %产生了轮盘赌选出的100个染色体
% 交叉操作 GA
GApop=Cross(pc,lenchrom,GApop,popsize,bound,E);
%这里删掉了两个操作
% 变异操作 GA变异
GApop=Mutation(pm,lenchrom,GApop,popsize,[i maxgen],bound,popmax,E);
% 元素删除 GA变异
GApop=Mutation2(pm,lenchrom,GApop,popsize,[i maxgen],bound,E);
pop=GApop;
for j=1:popsize
%适应度值
p=[]
for u=1:2:(lenchrom-2)
p=[p E(GApop(j,u),GApop(j,u+2),-GApop(j,u+1))]
end
q=[]
for v=3:2:(lenchrom-2)
q=[q F(-pop(j,v-1),-pop(j,v+1),pop(j,v))]
end
fitness(j)=sum(p)+sum(q); %染色体的适应度
%对每个满足约束的个体计算适应度(不符合就不更新)
%个体最优更新
if fitness(j) < fitnessgbest(j)
gbest(j,:) = pop(j,:);
fitnessgbest(j) = fitness(j); %每一代如果适应度变小就更新,否则不更新;输出的fitness 是最后一代的适应度
end
%群体最优更新
if fitness(j) < fitnesszbest
zbest = pop(j,:);
fitnesszbest = fitness(j); %两次更新都循环100次,每一个fitness(j)都和两个数比一遍
end
end
yy(i)=fitnesszbest;
end
%% 结果
disp '*************best particle number****************'
zbest
%%
plot(yy,'linewidth',2);
title(['适应度曲线 ' '终止代数=' num2str(maxgen)]);
xlabel('进化代数');ylabel('适应度');
grid on

3 仿真结果

【DELM预测】基于遗传算法改进深度学习极限学习机实现数据预测附matlab代码_交叉概率_06

【DELM预测】基于遗传算法改进深度学习极限学习机实现数据预测附matlab代码_交叉概率_07

4 参考文献

[1]律方成, 刘怡, 亓彦珣,等. 基于改进遗传算法优化极限学习机的短期电力负荷预测[J]. 华北电力大学学报:自然科学版, 2018, 45(6):7.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。


【DELM预测】基于遗传算法改进深度学习极限学习机实现数据预测附matlab代码_原始数据_08



上一篇:输入函数和运算符
下一篇:没有了
网友评论