clc
clear all
%% 加载数据
load matlab3.mat
AllSamIn = data_train';
AllSamOut =lab_train';
AllTestIn=data_test';
AllTestOut=lab_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=8;
global outdim;
outdim=1;
%% 加载PSO模型的相关参数
vmax=1;
minerr=0.001;
wmax=0.80;
wmin=0.40;
global itmax;
itmax=100;
c1=2.8;
c2=1.3;
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
X(:,:,2)=X(:,:,1)+V(:,:,2);
for ni=1:N
for di=1:D
if X(ni,di,2) > 1
X(ni,di,2) = 1;
elseif V(ni,di,2) < -1
X(ni,di,2) = -1;
else
X(ni,di,2) = X(ni,di,2);
end
end
end
%% PSO优化ELM模型 过程 2
for j=2:itmax
disp('Iteration and Current Best Fitness')
disp(j-1)
disp(B(1,1,j-1))
fitness=fitcal(X,indim,hiddennum,outdim,D,Ptrain,Ttrain,minAllSamOut,maxAllSamOut);
fvrec(:,1,j)=fitness(:,1,j);
[C,I]=min(fitness(:,1,j));
MinFit=[MinFit C];
BestFit=[BestFit min(MinFit)];
L(:,1,j)=fitness(:,1,j);
B(1,1,j)=C;
gbest(1,:,j)=X(I,:,j);
[C,I]=min(B(1,1,:));
if B(1,1,j)<=C
gbest(1,:,j)=gbest(1,:,j);
else
gbest(1,:,j)=gbest(1,:,I);
end
if C<=minerr, break, end
if j>=itmax, break, end
for p=1:N
G(p,:,j)=gbest(1,:,j);
end
for i=1:N;
[C,I]=min(L(i,1,:));
if L(i,1,j)<=C
pbest(i,:,j)=X(i,:,j);
else
pbest(i,:,j)=X(i,:,I);
end
end
V(:,:,j+1)=W(j)*V(:,:,j)+c1*rand*(pbest(:,:,j)-X(:,:,j))+c2*rand*(G(:,:,j)-X(:,:,j));
for ni=1:N
for di=1:D
if V(ni,di,j+1)>vmax
V(ni,di,j+1)=vmax;
elseif V(ni,di,j+1)<-vmax
V(ni,di,j+1)=-vmax;
else
V(ni,di,j+1)=V(ni,di,j+1);
end
end
end
X(:,:,j+1)=X(:,:,j)+V(:,:,j+1);
for ni=1:N
for di=1:D
if X(ni,di,j+1) > 1
X(ni,di,j+1) = 1;
elseif V(ni,di,j+1) < -1
X(ni,di,j+1) = -1;
else
X(ni,di,j+1) = X(ni,di,j+1);
end
end
end
end
disp('Iteration and Current Best Fitness')
disp(j)
disp(B(1,1,j))
disp('Global Best Fitness and Occurred Iteration')
[C,I] = min(B(1,1,:))
for t=1:hiddennum
x2iw(t,:)=gbest(1,((t-1)*indim+1):t*indim,j);
end
for r=1:outdim
x2lw(r,:)=gbest(1,(indim*hiddennum+1):(indim*hiddennum+hiddennum),j);
end
x2b=gbest(1,((indim+1)*hiddennum+1):D,j);
x2b1=x2b(1:hiddennum).';
x2b2=x2b(hiddennum+1:hiddennum+outdim).';
IWbest1=x2iw;
IWbest2=x2lw;
IBbest1=x2b1;
IBbest2=x2b2;
%% Adaboost
%训练样本
%input_train=Ptrain;
%output_train=Ttrain;
%测试样本
%input_test=Ptest;
%output_test=Ttest;
%样本权重
[mm,nn]=size(Ptrain);
DD(1,:)=ones(1,nn)/nn;
%训练样本归一化
%[inputn,inputps]=mapminmax(input_train);
%[outputn,outputps]=mapminmax(output_train);
K=10;
for i=1:K
%弱预测器训练
%net=newff(inputn,outputn,5);
%net.trainParam.epochs=20;
%net.trainParam.lr=0.1;
%net=train(net,inputn,outputn);
%弱预测器预测
%an1=sim(net,inputn);
%BPoutput=mapminmax('reverse',an1,outputps);
T_ELM1 = ELMfun2(IWbest1,IBbest1,Ptrain,Ttrain,hiddennum,IWbest2,IBbest2);
ELMout1 = postmnmx(T_ELM1,minAllSamOut,maxAllSamOut);
%ELMout1 = postmnmx(T_ELM1,minAllTestOut,maxAllTestOut);
%预测误差
erroryc(i,:)=AllSamOut-ELMout1 ;
%测试数据预测
T_sim2= ELMfun2(IWbest1,IBbest1,Ptest,Ttest,hiddennum,IWbest2,IBbest2);
test_simu(i,:) = postmnmx(T_sim2,minAllTestOut,maxAllTestOut);
%test_simu(i,:)=mapminmax('reverse',an2,outputps);
%调整D值
Error(i)=0;
for j=1:nn
if abs(erroryc(i,j))>0.2 %较大误差
Error(i)=Error(i)+DD(i,j);
DD(i+1,j)=DD(i,j)*1.1;
else
DD(i+1,j)=DD(i,j);
end
end
%计算弱预测器权重
at(i)=0.5/exp(abs(Error(i)));
%D值归一化
DD(i+1,:)=DD(i+1,:)/sum(DD(i+1,:));
end
%% 强预测器预测
at=at/sum(at);
%% 结果统计
%强分离器效果
output=at*test_simu;
T_sim_test = ELMfun2(IWbest1,IBbest1,Ptest,Ttest,hiddennum,IWbest2,IBbest2);
testsamout = postmnmx(T_sim_test,minAllTestOut,maxAllTestOut);
realtesterr=mse(testsamout-AllTestOut);
err1=norm(testsamout-AllTestOut);
disp(['优化模型测试样本的仿真误差:',num2str(err1)])
N = length(Ttest);
R1 = (N*sum(T_sim_test.*Ttest)-sum(T_sim_test)*sum(Ttest))^2/((N*sum((T_sim_test).^2)-(sum(T_sim_test))^2)*(N*sum((Ttest).^2)-(sum(Ttest))^2));
%% 不使用PSO优化ELM算法
[IW,B,LW,TF,TYPE] = elmtrain2(Ptrain,Ttrain,5,'sig',0);
T_sim_test1 = elmpredict(Ptest,IW,B,LW,TF,TYPE);
testsamout2 = postmnmx(T_sim_test1,minAllTestOut,maxAllTestOut);
realtesterr2=mse(testsamout2-AllTestOut);
err2=norm(testsamout2-AllTestOut);
R2 = (N*sum(T_sim_test1.*Ttest)-sum(T_sim_test1)*sum(Ttest))^2/((N*sum((T_sim_test1).^2)-(sum(T_sim_test1))^2)*(N*sum((Ttest).^2)-(sum(Ttest))^2));
disp(['原始模型测试样本的仿真误差:',num2str(err2)])
%% 输出参数图
% PSO 优化迭代图
figure(1);
P0 = plot(1:itmax,BestFit);
grid on
xlabel('PSO items');
ylabel('MSE rate');
string = {'PSO-ELM模型100次迭代误差变化';['决定系数:R^2=' num2str(R1) ' ' ];['模型仿真均方误差:mse=' num2str(realtesterr) ' ']};
title(string)
bestErr=min(BestFit);
fprintf(['PSO-ELM模型:\n决定系数R^2=',num2str(R1),'\n模型仿真均方误差:mse=',num2str(realtesterr),'\n'])
set(P0,'LineWidth',1.5);
% PSO与ELM结果比较图
figure(2)
P1=plot(1:76,AllTestOut,'r-square',1:76,testsamout,'b-o',1:76,testsamout2,'g-diamond',1:76,output,'m-.')
grid on
legend('真实值','PSO-ELM预测值','单纯ELM预测值','Adaboost+PSO-ELM预测值')
xlabel('样本编号')
ylabel('样本数据分类号')
string = {'测试集-预测分类-结果对比(真实值 & PSO-ELM & ELM)';['ELM:(mse = ' num2str(err2) ' R^2 = ' num2str(R2) ')'];['PSO-ELM:(mse = ' num2str(err1) ' R^2 = ' num2str(R1) ')']};
title(string)
set(P1,'LineWidth',1.0);
没有合适的资源?快使用搜索试试~ 我知道了~
【ELM回归预测】粒子群算法优化极限学习机PSO-ELM回归预测【含Matlab源码 1722期】.zip
共13个文件
m:9个
jpg:2个
xlsx:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 196 浏览量
2024-06-23
09:30:10
上传
评论
收藏 119KB ZIP 举报
温馨提示
Matlab领域上传的全部代码均可运行,亲测可用,尽我所能,为你服务; 1、代码压缩包内容 主函数:ga_2d_box_packing_test_task.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,可私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开除ga_2d_box_packing_test_task.m的其他m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博主博客文章底部QQ名片; 4.1 CSDN博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 **5 机器学习和深度学习方面** 卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
资源推荐
资源详情
资源评论
收起资源包目录
【ELM回归预测】粒子群算法优化极限学习机PSO-ELM回归预测【含Matlab源码 1722期】.zip (13个子文件)
【ELM回归预测】基于matlab粒子群算法优化极限学习机PSO-ELM回归预测【含Matlab源码 1722期】
elmtrain2.m 2KB
elmtrain.m 2KB
运行结果1.jpg 35KB
fitcal.m 600B
elmpredict.m 1KB
ELMfun.m 179B
PSO_ELM.m 6KB
Adaboost_PSO_ELM.m 8KB
运行结果2.jpg 61KB
ELMfun3.m 232B
gaopin.xlsx 26KB
PSO_ELM.asv 6KB
ELMfun2.m 223B
共 13 条
- 1
资源评论
Matlab领域
- 粉丝: 3w+
- 资源: 3510
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功