资源简介
GA遗传算法和ELM极限学习机相结合的Matlab仿真代码,是一个matlab工程,希望可以帮助到你,助你一臂之力
代码片段和文件信息
clc
%% 不使用遗传算法
% 训练集
[PtraininFP] = mapminmax(P);
Ptest = mapminmax(‘apply‘P_testinFP);
% 测试集
[TtrainoutFP] = mapminmax(T);
Ttest = mapminmax(‘apply‘T_testoutFP);
%% ELM 训练
% 创建ELM网络
[IWBLWTFTYPE] = elmtrain2(PtrainTtrain30‘sig‘0);
%% 测试网络
disp([‘1、使用随机权值和阈值 ‘])
disp(‘测试样本预测结果:‘)
% ELM仿真测试
T_test_sim1 = elmpredict(PtestIWBLWTFTYPE);
T_train_sim1 = elmpredict(PIWBLWTFTYPE);
% 反归一化
Y11 = mapminmax(‘reverse‘T_test_sim1outFP);
% Y12 = mapminmax(‘reverse‘T_train_sim1outFP);
err1=norm(Y11-T_test); %测试样本的仿真误差
% err11=norm(Y12-T); %训练样本的仿真误差
disp([‘测试样本的仿真误差:‘num2str(err1)])
% disp([‘训练样本的仿真误差:‘num2str(err11)])
%% 使用遗传算法
%% 使用优化后的权值和阈值
nputnum=size(P1); % 输入层神经元个数
outputnum=size(T1); % 输出层神经元个数
% 训练集归一化
[PtraininFP] = mapminmax(P);
Ptest = mapminmax(‘apply‘P_testinFP);
% 测试集归一化
[TtrainoutFP] = mapminmax(T);
Ttest = mapminmax(‘apply‘T_testoutFP);
%% elm初始权值和阈值
w1num=inputnum*hiddennum; % 输入层到隐层的权值个数
w1=bestX(1:w1num); %初始输入层到隐层的权值
B1=bestX(w1num+1:w1num+hiddennum); %初始隐层阈值
IW1=reshape(w1hiddennuminputnum);
IB1=reshape(B1hiddennum1);
%% 创建ELM网络
[LWTFTYPE] = elmtrain(PtrainTtrainhiddennum‘sig‘0IW1IB1);
%% 测试网络
disp([‘2、使用优化后的权值和阈值‘])
disp(‘测试样本预测结果:‘)
% ELM仿真测试
T_test_sim2 = elmpredict(PtestIW1IB1LWTFTYPE);
T_train_sim2 = elmpredict(PIW1IB1LWTFTYPE);
% 反归一化
Y21 = mapminmax(‘reverse‘T_test_sim2outFP); % 输出测试样本
% Y22 = mapminmax(‘reverse‘T_train_sim2outFP); % 输出训练样本
err2=norm(Y21-T_test);
% err21=norm(Y22-T);
disp([‘测试样本的仿真误差:‘num2str(err2)])
% disp([‘训练样本的仿真误差:‘num2str(err21)])
%% 结果对比 分三个指标进行结果对比
result = [T_test‘ Y21‘];
N = length(T_test);
% 三大评价因子 : 有效抛掷率
% 有效抛掷率
rate0 = T_test(1:);
rate1 = Y11(1:);
rate2 = Y21(1:);
% 松散系数
loose0 = T_test(2:);
loose1 = Y11(2:);
loose2 = Y21(2:);
% 安全距离
distance0 = T_test(3:);
distance1 = Y11(3:);
distance2 = Y21(3:);
% 均方误差 abs(参数1-参数2).^2/样本数
Er1 = mse(rate1-rate0);
Er2 = mse(rate2-rate0);
El1 = mse(loose1-loose0);
El2 = mse(loose2-loose0);
Ed1 = mse(distance1-distance0);
Ed2 = mse(distance2-distance0);
% 各评价因子 决定系数
Rr1=(N*sum(rate1.*rate0)-sum(rate1)*sum(rate0))^2/((N*sum((rate1).^2)-(sum(rate1))^2)*(N*sum((rate0).^2)-(sum(rate0))^2));
Rr2=(N*sum(rate2.*rate0)-sum(rate2)*sum(rate0))^2/((N*sum((rate2).^2)-(sum(rate2))^2)*(N*sum((rate0).^2)-(sum(rate0))^2));
Rl1=(N*sum(loose1.*loose0)-sum(loose1)*sum(loose0))^2/((N*sum((loose1).^2)-(sum(loose1))^2)*(N*sum((loose0).^2)-(sum(loose0))^2));
Rl2=(N*sum(loose2.*loose0)-sum(loose2)*sum(loose0))^2/((N*sum((loose2).^2)-(sum(loose2))^2)*(N*sum((loose0).^2)-(sum(loose0))^2));
Rd1=(N*sum(distance1.*distance0)-sum(distance1)*sum(distance0))^2/((N*sum((distance1).^2)-(sum(distance1))^2)*(N*sum((distance0).^2)-(sum(distance0))^2));
Rd2=(N*sum(distance2.*distance0)-sum(distance2)*sum(distance0))^2/((N*sum((distance2).^2)-(sum(distance2))^2)*(N*sum((distance0).^2)-(sum(distance0)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6400 2016-04-25 00:27 GA-ELM\GA-ELM_2 v2.0\callELMfun.m
文件 806 2016-04-25 00:00 GA-ELM\GA-ELM_2 v2.0\data.mat
文件 1421 2016-04-24 19:13 GA-ELM\GA-ELM_2 v2.0\ELMfun.m
文件 1640 2016-04-09 17:56 GA-ELM\GA-ELM_2 v2.0\elmpredict.m
文件 2506 2016-04-24 10:10 GA-ELM\GA-ELM_2 v2.0\elmtrain.m
文件 2395 2016-04-09 17:48 GA-ELM\GA-ELM_2 v2.0\elmtrain2.m
文件 1094 2016-04-24 18:36 GA-ELM\GA-ELM_2 v2.0\GAELMdata.mat
文件 2566 2016-04-26 16:51 GA-ELM\GA-ELM_2 v2.0\GAELMMain.m
文件 447 2016-04-24 10:30 GA-ELM\GA-ELM_2 v2.0\Objfun.m
目录 0 2020-06-19 15:45 GA-ELM\GA-ELM_2 v2.0
目录 0 2020-06-19 15:45 GA-ELM
----------- --------- ---------- ----- ----
19275 11
- 上一篇:GA+SVM的MATLAB程序
- 下一篇:电机pwm仿真模型
评论
共有 条评论