【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码

?

 一、灰狼算法

1.1 背景介绍

灰狼优化算法(Grey Wolf Optimizer,GWO)由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优化算法。该算法受到了灰狼捕食猎物活动的启发而开发的一种优化搜索方法,它具有较强的收敛性能、参数少、易实现等特点。近年来受到了学者的广泛关注,它己被成功地应用到了车间调度、参数优化、图像分类等领域中。

1.2 算法原理

狼群中有α、β、γ三只狼做头狼,其中α是狼王,β、γ分别排第二、第三,β、γ都要听α的,γ要听β的。这三匹狼指导者其他的狼寻找猎物。狼群寻找猎物的过程就是我们寻找最优解的过程。
GWO具体优化过程包含了社会等级分层、跟踪、包围和攻击猎物和寻找猎物。
但其核心行为只有捕猎。
为了模拟灰狼的搜索行为,假设α、β、γ具有较强识别潜在猎物的能力,因此,在每次迭代过程中,保留当前种群中最好的三只狼(α、β、γ),然后根据他们的位置信息来更新其他搜索代理的位置。
【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?

1.3 构建算法数学模型

1)社会等级分层
GWO的优化过程主要有每代种群中的最好三匹狼(具体构建时表示为三个最好的解)来指导完成。
2)包围猎物
灰狼捜索猎物时会逐渐地接近猎物并包围它,该行为的数学模型如下:
【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?
【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?
3)狩猎行为的数学模型【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?

【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?
【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?
4)攻击猎物
5)寻找猎物

 

二、svr算法

  1. SVR的背景
    SVR做为SVM的分支从而被提出,一张图介绍SVR与SVM的关系
    【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?
    这里两虚线之间的几何间隔r=d ∣ ∣ W ∣ ∣ \frac{d}{||W||}∣∣W∣∣d?,这里的d就为两虚线之间的函数间隔。
    (一图读懂函数间隔与几何间隔)
    【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?
    这里的r就是根据两平行线之间的距离公式求解出来的
    【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?

  2. SVR的原理

SVR与一般线性回归的区别

SVR 一般线性回归
1.数据在间隔带内则不计算损失,当且仅当f(x)与y之间的差距的绝对值大于? \epsilon?才计算损失 1.只要f(x)与y不相等时,就计算损失
2.通过最大化间隔带的宽度与最小化总损失来优化模型 2.通过梯度下降之后求均值来优化模型

【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?

原理:SVR在线性函数两侧制造了一个“间隔带”,间距为? \epsilon?(也叫容忍偏差,是一个由人工设定的经验值),对所有落入到间隔带内的样本不计算损失,也就是只有支持向量才会对其函数模型产生影响,最后通过最小化总损失和最大化间隔来得出优化后的模型。

注:这里介绍一下支持向量的含义:直观解释,支持向量就是对最终w,b的计算起到作用的样本(a>0)

如下图所示, "管道"内样本对应a=0,为非支持向量;
位于“管壁”上的为边界支持向量,0<a<? \epsilon?
位于"管道"之外的为非边界支持向量,a>? \epsilon?(异常检测时,常从非边界支持向量中挑选异常点)
【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?

  1. SVR的数学模型

3.1线性硬间隔SVR

【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?
【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?

3.2线性软间隔SVR
原因:在现实任务中,往往很难直接确定合适的 ? \epsilon? ,确保大部分数据都能在间隔带内,而SVR希望所有训练数据都在间隔带内,所以加入松弛变量ξ \xiξ ,从而使函数的间隔要求变的放松,也就是允许一些样本可以不在间隔带内。
【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?

引入松弛变量后,这个时候,所有的样本数据都满足条件:

【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?

这就是映入松弛变量后的限制条件,所以也叫-------软间隔SVR

注:对于任意样本xi,如果它在隔离带里面或者边缘上,ξ \xiξ 都为0;在隔离带上方则为ξ > 0 , ξ ? = 0 \xi>0,\xi^*=0ξ>0,ξ?=0
在隔离带下方则为ξ ? > 0 , ξ = 0 \xi^*>0,\xi=0ξ?>0,ξ=0

【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?

【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?

三、部分代码

clear
clc
close all
load wndspd % 示例数据为风速(时间序列)数据,共144个样本addpath(‘./libsvm-3.1/‘)
%% HGWO-SVR
% 训练/测试数据准备(用前3天预测后一天),用前100天做训练数据
input_train(1,:)=wndspd(1:97);
input_train(2,:)=wndspd(2:98);
input_train(3,:)=wndspd(3:99);
output_train=[wndspd(4:100)]‘;
input_test(1,:)=wndspd(101:end-3);
input_test(2,:)=wndspd(102:end-2);
input_test(3,:)=wndspd(103:end-1);
output_test=(wndspd(104:end))‘;
para=[30,500,0.2,0.8,0.2];
[bestc,bestg,test_pre]=my_HGWO_SVR(para,input_train‘,output_train‘,input_test‘,output_test‘);
%% 预测结果图
err_pre=output_test‘-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(output_test,‘bo-‘);
legend(‘预测‘,‘原始‘)
set(gcf,‘unit‘,‘centimeters‘,‘position‘,[0.5,13,30,5])
toc
【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码

四、仿真结果

【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?

【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?

【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?

 

 

【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码?

?

【SVR预测】基于差分进化改进灰狼算法优化SVR预测matlab源码

上一篇:Pulumi如何管理azure资产之注意事项


下一篇:Java标识符