【ELM回归预测】基于matlab粒子群算法优化ELM回归预测【含Matlab源码 1722期】

举报
海神之光 发表于 2022/05/29 01:18:29 2022/05/29
【摘要】 一、粒子群算法优化极限学习机ELM简介 PSO-ELM优化算法预测模型 ELM模型在训练之前可以随机产生ω和b, 只需要确定隐含层神经元个数及隐含层神经元激活函数, 即可实现ELM预测模型的构建。在EL...

一、粒子群算法优化极限学习机ELM简介

PSO-ELM优化算法预测模型
ELM模型在训练之前可以随机产生ω和b, 只需要确定隐含层神经元个数及隐含层神经元激活函数, 即可实现ELM预测模型的构建。在ELM模型的构建中, 只需确定初始ω和b, 而无需复杂的参数设置, 具有学习速度快、泛化性能好等优点。然而在发动机参数预测过程中, 不同的参数设置, 对预测模型的准确度起着一定程度的影响。此时, 如果通过简单的随机选取初始化参数方法来构建极限学习机模型, 在一定程度上存在着模型构建中隐含层节点冗余等缺点, 这在一定程度上阻碍了ELM模型的精确性。因此, 在构建EGTM数据预测模型的过程中, 可通过PSO算法寻优确定模型的最佳参数, 以保证ELM模型的准确性。

PSO优化算法于1995年由美国学者Eberhart和Kennedy提出。在优化过程中, 通过跟踪个体最优粒子pmbest与群体最优粒子gmbest, 从而更新粒子的速度与位置:
在这里插入图片描述
式中:d表示粒子搜索的空间维数, i为搜索过程中种群规模大小, m为当前种群代数。r∈(0,1), 表示随机数, c∈(0,2), 表示学习因子, 取值由经验设定。ω为惯性权重系数, 用x与v分别表示粒子的当前位置与当前速度, pmbest表示当前个体最优粒子位置, gmbest表示当前群体最优粒子位置。

利用PSO算法的收敛性强、鲁棒性好等优点, 可以在较短的运行时间内, 在保证精确度的情况下有效地寻找全局最优解。PSO-ELM算法的流程如图1所示。
在这里插入图片描述
图1 PSO-ELM算法流程图
如图1所示, 在构建ELM预测模型的过程中, 利用PSO算法的参数优化能力, 通过建立适应值函数计算适应值, 以验证PSO算法中粒子的优劣。通过不断更新粒子, 以确保粒子不断趋向于全局最优。在预测过程中, 以预测结果与真实值之间的误差作为适应值函数, 通过寻找使得适应值函数最小的全局最优解, 从而确定更加精确的ELM预测模型, 为构建合理的ELM预测模型提供了理论基础。

二、部分源代码

clc
clear all
%% 遍历和分组
raw = xlsread('gaopin.xlsx');
data = zeros(876,6);
label = zeros(876,1);
for i=1:876
    for j=0:5
        data(i,j+1) = raw(i+j);
    end;
    label(i,1) = raw(i+6);
end;

data_train = data(1:793,1:6);
label_train = label(1:793,1);

data_test = data(794:876,1:6);
label_test= label(794:876,1);

%% 载入数据
AllSamIn = data_train';
AllSamOut =label_train';
AllTestIn=data_test';
AllTestOut=label_test';

%% 训练样本归一化
global minAllSamOut;  
global maxAllSamOut; 
[AllSamInn,minAllSamIn,maxAllSamIn,AllSamOutn,minAllSamOut,maxAllSamOut] = premnmx(AllSamIn,AllSamOut);
TrainSamIn=AllSamInn; 
TrainSamOut=AllSamOutn;
global Ptrain;
Ptrain = TrainSamIn;   
global Ttrain;
Ttrain = TrainSamOut;  

%% 测试样本归一化
global minAllTestOut;  
global maxAllTestOut; 
[AllTestInn,minAllTestIn,maxAllTestIn,AllTestOutn,minAllTestOut,maxAllTestOut] = premnmx(AllTestIn,AllTestOut);
TestIn=AllTestInn; 
TestOut=AllTestOutn;
global Ptest;
Ptest = TestIn; 
global Ttest;
Ttest = TestOut; 

%% 加载网络的初始变量
global indim; 
indim=6;
global hiddennum;
hiddennum=50;
global outdim;
outdim=1;


%% 加载PSO模型的相关参数
vmax=1; 
minerr=0.001; 
wmax=0.80; 
wmin=0.40; 
global itmax; 
itmax=100;
c1=2.4; 
c2=1.6; 
for iter=1:itmax
    W(iter)=wmax-((wmax-wmin)/itmax)*iter; 
end
a=-1;
b=1;
m=-1;
n=1;
global N; 
N=100;
global D; 
D=(indim+1)*hiddennum+(hiddennum+1)*outdim; 
rand('state',sum(100*clock));
X=a+(b-a)*rand(N,D,1);
V=m+(n-m)*rand(N,D,1);
global fvrec;
MinFit=[];
BestFit=[];

%% PSO优化ELM模型 过程 1
fitness=fitcal(X,indim,hiddennum,outdim,D,Ptrain,Ttrain,minAllSamOut,maxAllSamOut); 
fvrec(:,1,1)=fitness(:,1,1);
[C,I]=min(fitness(:,1,1)); 
MinFit=[MinFit C];  
BestFit=[BestFit C]; 
L(:,1,1)=fitness(:,1,1); 
B(1,1,1)=C; 
gbest(1,:,1)=X(I,:,1); 

for p=1:N
    G(p,:,1)=gbest(1,:,1); 
end

for i=1:N;
    pbest(i,:,1)=X(i,:,1); 
end
V(:,:,2)=W(1)*V(:,:,1)+c1*rand*(pbest(:,:,1)-X(:,:,1))+c2*rand*(G(:,:,1)-X(:,:,1));

for ni=1:N
    for di=1:D
        if V(ni,di,2) > vmax
            V(ni,di,2) = vmax;
        elseif V(ni,di,2) < -vmax
            V(ni,di,2) = -vmax;
        else
            V(ni,di,2) = V(ni,di,2);
        end
    end
end


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114

三、运行结果

在这里插入图片描述
在这里插入图片描述

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,2013.
[4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,2013.
[5]方清城.MATLAB R2016a神经网络设计与应用28个案例分析[M].清华大学出版社,2018.
[6]戴邵武,陈强强,刘志豪,戴洪德.基于粒子群极限学习机的排气温度裕度预测[J].仪表技术. 2019,(06)

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/123041225

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。