700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【SVM时序预测】基于matlab鲸鱼算法优化支持向量机SVM时序数据预测【含Matlab源码 2250期】

【SVM时序预测】基于matlab鲸鱼算法优化支持向量机SVM时序数据预测【含Matlab源码 2250期】

时间:2019-03-17 10:28:34

相关推荐

【SVM时序预测】基于matlab鲸鱼算法优化支持向量机SVM时序数据预测【含Matlab源码 2250期】

⛄一、鲸鱼算法优化支持向量机SVM

1 鲸鱼优化算法

WOA是由Mirjalili和Lewis在提出的一种较为新颖的元启发式群体智能优化算法,该算法模仿座头鲸的“螺旋气泡网”捕食策略,如图1所示。

图1 座头鲸“螺旋起泡网”捕食策略

WOA算法寻优步骤如下。

步骤1圈记猎物。

座头鲸可识别猎物的位置,并将它们圈记。以当前最佳鲸鱼位置作为最佳搜索代理,其位置更新的数学表达式为

式中:t为当前迭代;A和C为系数;L*(t)为目前所得到的最佳鲸鱼位置向量,在每一次迭代中会随着适应度的大小被更新;L(t)为当前鲸鱼位置向量;D为当前鲸鱼位置向目前最佳鲸鱼位置逼近的迭代距离。A和C的更新公式为

式中:a为参数,在搜索迭代过程中从2到0线性减少;r1和r2为[0,1]中的随机数。

步骤2螺旋式捕猎。

座头鲸在1个收缩的圆圈内同时沿着螺旋形的路径游向猎物,对这种同时行为进行建模。假设有50%的概率可在收缩圆圈或螺旋模型之间选择,以更新鲸鱼的位置。此过程用数学公式模拟为

式中:p为[0,1]的随机数;q∈(-1,1);D′为每个鲸鱼与当前最佳鲸鱼位置的距离,D′=|L*(t)-L(t)|;b为常数,用于描述螺旋形状。

攻击猎物时,在数学上设定靠近猎物时a会减小。由式(3)知,随着a线性减小,A在[-a,a]范围内波动;当A为[-1,1]范围时,鲸鱼的下一个位置可以是它现在位置和猎物位置之间的任意位置,算法设定A<1时,鲸鱼向猎物发起攻击,根据式(5)靠近猎物位置。

步骤3搜索猎物。

搜索猎物时根据A的大小判断是否选取随机搜索机制。当A≥1时,采用的搜索模型为

式中,Lrand为随机选择的鲸鱼位置向量。当A≥1时,随机选择1个搜索代理,以该随机选择的鲸鱼位置向量来更新其他鲸鱼的位置,迫使鲸群偏离猎物,搜索其他更合适的猎物,借此增强算法的全局搜索能力。

最后得到的位置向量L*,即优化选择的参数。本文采用WOA算法优化SVM中学习参数惩罚系数c和核参数g的选择进行优化过程。

⛄二、部分源代码

%% 清空环境变量

tic;

close all;

clear;

clc;

format compact;

%% 数据的提取和预处理

% 载入测试数据上证指数(1990.12.19-.08.19)

% 数据是一个4579*6的double型的矩阵,每一行表示每一天的上证指数

% 6列分别表示当天上证指数的开盘指数,指数最高值,指数最低值,收盘指数,当日交易量,当日交易额.

load chapter_sh.mat;

% 提取数据

[m,n] = size(sh);

ts = sh(2:m,1);

tsx = sh(1:m-1,:);

% 画出原始上证指数的每日开盘数

figure;

plot(ts,‘LineWidth’,2);

title(‘上证指数的每日开盘数(1990.12.20-.08.19)’,‘FontSize’,12);

xlabel(‘交易日天数(1990.12.19-.08.19)’,‘FontSize’,12);

ylabel(‘开盘数’,‘FontSize’,12);

grid on;

% 数据预处理,将原始数据进行归一化

ts = ts’;

tsx = tsx’;

% mapminmax为matlab自带的映射函数

% 对ts进行归一化

[TS,TSps] = mapminmax(ts,1,2);

% 画出原始上证指数的每日开盘数归一化后的图像

figure;

plot(TS,‘LineWidth’,2);

title(‘原始上证指数的每日开盘数归一化后的图像’,‘FontSize’,12);

xlabel(‘交易日天数(1990.12.19-.08.19)’,‘FontSize’,12);

ylabel(‘归一化后的开盘数’,‘FontSize’,12);

grid on;

% 对TS进行转置,以符合libsvm工具箱的数据格式要求

TS = TS’;

% mapminmax为matlab自带的映射函数

% 对tsx进行归一化

[TSX,TSXps] = mapminmax(tsx,1,2);

% 对TSX进行转置,以符合libsvm工具箱的数据格式要求

TSX = TSX’;

%% 利用鲸鱼搜索算法选择回归预测分析最佳的SVM参数c&g

%% 鲸鱼参数设置

% 定义优化参数的个数,在该场景中,优化参数的个数dim为2 。

% 定义优化参数的上下限,如c的范围是[0.01, 1], g的范围是[2^-5, 2^5],那么参数的下限lb=[0.01, 2^-5];参数的上限ub=[1, 2^5]。

%目标函数

fobj = @(x) fun(x,TS,TSX);

% 优化参数的个数 (c、g)

dim = 2;

% 优化参数的取值下限

lb = [1,15];

ub = [1,15];

%% 参数设置

pop =10; %数量

Max_iteration=30;%最大迭代次数

%% 优化(这里主要调用函数)

[Best_pos,Best_score,curve]=WOA(pop,Max_iteration,lb,ub,dim,fobj);

c = Best_pos(1, 1);

g = Best_pos(1, 2);

figure

plot(curve,‘linewidth’,1.5);

title(‘WOA-SVM收敛曲线’)

xlabel(‘迭代次数’)

ylabel(‘适应度值’)

grid on;

⛄三、运行结果

⛄四、matlab版本及参考文献

1 matlab版本

a

2 参考文献

[1]岳晓宇,彭显刚,林俐.鲸鱼优化支持向量机的短期风电功率预测[J].电力系统及其自动化学报. ,32(02)

3 备注

简介此部分摘自互联网,仅供参考,若侵权,联系删除

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