⛄ 内容介绍
1) 构建数据集( 即训练集与测试集) ,并对数据预处理,
得到路段的历史交通流量数据的时间序列.
2) 利用改进灰狼优化算法对 LSSVM 参数优化( 即惩罚
因子 γ 和核函数参数 σ) ,主要步骤如下:
Step 1. 参数初始化.
Step 2. 初始化种群并计算函数目标值,选择最优个体 α、β 和 η.
Step 3. 计算 a、A 和 C 的值,根据式( 7) 计算种群个体与最优个体的距离并根据式( 8) 、式( 9) 更新个体位置.
Step 4. 由式( 12) -式( 14) 对当前种群执行变异、交叉和选择操作,计算个体的目标函数值.
Step 5. 更新最优个体位置.
Step 6. 判断是否达到要求. 如果达到设定值,则运行结束,否则转至 Step 3 继续迭代.
3) 根据最优参数得到最优模型后进行交通流量预测.
⛄ 部分代码
%灰狼算法优化LSSVM代码
addpath('LSSVMlabv1_8_R2009b_R2011a')%添加工具箱
clear
clc
tic
%% 导入训练数据
data = xlsread('data.xlsx')';
[data_m,data_n] = size(data);%获取数据维度
P = 80; %百分之P的数据用于训练,其余测试
Ind = floor(P * data_m / 100);
train_data = data(1:Ind,1:end-1); %训练样本输入集
train_result = data(1:Ind,end); %训练样本输出集
test_data = data(Ind+1:end,1:end-1);% 测试样本输入集
test_result = data(Ind+1:end,end); %测试样本输出集
%% 数据归一化
[train_x,PS_i] =mapminmax(train_data',0,1);
test_x=mapminmax('apply',test_data',PS_i);
[train_y,PS_o] = mapminmax(train_result',0,1);
train_x=train_x';
test_x=test_x';
train_y=train_y';
%% 参数初始化
type='f';
kernel= 'RBF_kernel';
%计算均方差
trainmse=sum((train_predict-train_result).^2)/length(train_result);
%testmse=sum((test_predict-test_y).^2)/length(test_y)
disp(['best gam = ',num2str(gam),' best sig2 = ',num2str(sig2)])
figure
subplot(1,2,1);
plot(train_predict,':og')
hold on
plot(train_result,'- *')
legend('实际值','拟合值')
title('拟合图')
ylabel('函数输出')
xlabel('样本')
subplot(1,2,2);
plot(test_predict,'r-o')
hold on
plot(test_result,'g:s')
legend('实际值','预测值')
title('预测图')
ylabel('函数输出')
xlabel('样本')
hold off
toc %计算时间
⛄ 运行结果
⛄ 参考文献
[1]顾凯冬. 基于灰狼算法优化最小二乘支持向量机的调制信号识别研究[D]. 南京邮电大学.
[2]伍轶鸣, 孙博文, 成荣红,等. 基于灰狼算法的LSSVM模型预测凝析气藏露点压力研究[J]. 西安石油大学学报:自然科学版, 2020, 35(2):7.
⛄ Matlab代码关注
❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料