700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【优化预测】基于matlab差分优化灰狼算法优化支持向量机SVM预测【含Matlab源码 1576期】.zip

【优化预测】基于matlab差分优化灰狼算法优化支持向量机SVM预测【含Matlab源码 1576期】.zip

时间:2019-09-15 14:42:07

相关推荐

【优化预测】基于matlab差分优化灰狼算法优化支持向量机SVM预测【含Matlab源码 1576期】.zip

一、混沌灰狼算法简介

1 Tent混沌反向学习策略

为保持种群多样性和使初始化种群个体尽可能均匀分布。在目前文献中,采用较多的是混沌映射Logistic,但它在[0,0.1]和[0.9,1]两个范围的取值概率较高,而且寻优速度受Logistic遍历不均匀性的影响,会降低算法效率。单梁等指出Tent映射比Logistic具有更好的遍历均匀性和更快的迭代速度。且在[0,1]间产生的混沌序列分布均匀。而Tent映射表达式如下:

笔者根据Tent映射的特性,在可行域中产生Tent映混沌序列,提出了Tent混沌反向初始化方法学习初始化策略,即利用Tent混沌序列产生初始解Xi,为每个初始解产生对应的反向解OPi=K(XdminXdmax)-Xi,其中K为[0,1]间的随机数。最后对两类解排序选择,将适应度值较优的前N个解作为初始种群的解,这有助于求解效率的提高与解质量的改善。

2 位置更新调整策略

在灰狼种群接近目标过程中,其位置更新方程式(12)表现出α、β和δ位置的同等重要性,却忽略了三者的不同特征,灰狼α的领导位置与最优解的所占比例在式(12)中没有得到很好的体现。本文采用适应度值去衡量个体重要性,对位置更新方程式(12)进行改进,采用式(15)进行位置更新:

3 混沌局部搜索策略

混沌具有相空间的遍历性和内在随机性,利用混沌序列的搜索算法可以在迭代中产生局部最优解的许多邻域点,进行优化搜索能够跳出局部最优。本文采用的Tent混沌搜索是以当前搜索到的灰狼群体的最优位置Xk=(xk1,xk2,…,xk D)为基础,利用Tent混沌搜索产生的最优解作为新的灰狼位置或灰狼种群的全局极值,使其跳出局部最优。假设[Xdmin,Xdmax]是搜索空间范围,Xdmin、Xdmax分别表示所有初始解中第d维向量的最小值和最大值。混沌搜索主要步骤如下:

二、部分源代码

tic % 计时%% 清空环境导入数据clearclcclose allformat longload wndspd%% HGWO-SVR% 训练/测试数据准备x=wndspd;embed=6; % 用多少个来预测test_size=12; % 预测多少个数据[input_train,output_train,input_test,output_test]=transfer(x,embed,1,1,1,length(x)-test_size);input_train=input_train'; % 训练集输入 m行n列,m表示样本个数,n表示每次用多少个预测下1个output_train=output_train'; % 训练集输出 m行1列input_test=input_test'; % 测试集输入 p行n列,p表示预测多少个数据output_test=output_test'; % 测试集输出 p行1列para=[20,20,0.2,0.8,0.2];% 分别表示:种群规模、最大迭代次数、缩放因子下界、缩放因子上界、交叉概率[bestc,bestg,test_pre]=my_HGWO_SVR(para,input_train,output_train,input_test,output_test);%% 打印参数选择结果disp('打印选择结果');str=sprintf('Best bestc = %g,Best bestg = %g',bestc,bestg);disp(str)%% 画图err_pre=x(end-test_size+1:end)-test_pre;figure('Name','测试数据残差图')set(gcf,'unit','centimeters','position',[0.5,5,30,5])plot(err_pre,'*-');figure('Name','原始-预测图')plot(test_pre,'*r-');hold on;plot(x(end-test_size+1:end),'bo-');legend('预测','原始')set(gcf,'unit','centimeters','position',[0.5,13,30,5])%% 预测性能计算result=[x(end-test_size+1:end),test_pre];MAE=mymae(result(:,1),result(:,2));MAPE=mymape(result(:,1),result(:,2));MSE=mymse(result(:,1),result(:,2));%% 显示程序运行时间tocfunction [X_train,Y_train,X_test,Y_test]=transfer(indata,lag_day,horizon,interval,start_train,end_train)% input % indata : N * 1 vector with the input of original data% lag: 1 * 1% horizon : 1 * 1% start_train: 1 * 1% end_train : 1 * 1% length_test: 1 * 1% output% X_train : x for training % Y_train : y for training % X_test: x for testing% Y_test: y for testingtotal_lag_day=lag_day+horizon-1;input_node=ceil(lag_day/interval);index=start_train;train_size=end_train-start_train+1-total_lag_day;for i=1:train_sizeorip(:,i)= indata(index:index+lag_day -1);T(i)=indata(index+total_lag_day,1);pointer=lag_day;for j=input_node:-1:1 P(j,i)=orip(pointer,i);pointer=pointer-interval;endindex=index+1;endstart_test=end_train+1;start_test=start_test-total_lag_day;index=start_test;testsize=length(indata)-start_test+1-total_lag_day;for i=1:testsizeoritestp(:,i) = indata(index:index+lag_day -1);act(i)=indata(index + total_lag_day );pointer= lag_day;for j=input_node:-1:1testp(j,i)=oritestp(pointer,i);pointer=pointer-interval;endindex=index+1;endX_train=P;Y_train=T;X_test=testp;Y_test=act;

三、运行结果

四、matlab版本及参考文献

1 matlab版本

a

2 参考文献

[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,.

[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,.

[3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,.

[4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,.

[5]方清城.MATLAB Ra神经网络设计与应用28个案例分析[M].清华大学出版社,.

[6]徐辰华,李成县,王尤军,林小峰.基于混沌灰狼优化算法的氧化铝质量指标预测模型[J].广西大学学报(自然科学版). ,41(06)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。