【预测模型】基于粒子群算法优化最小二乘支持向量机lssvm实现预测matlab源码

178 阅读3分钟

1 模型简介

随着电力负荷的迅猛增长和用电环境的越发复杂,对短期负荷预测的精度与可靠性提出更高要求.为解决最小二乘支持向量机(LSSVM)算法中核参数和惩戒参数依赖经验选取导致的短期负荷预测精度较低,收敛速度较慢的问题,提出一种基于粒子群算法优化最小二乘支持向量机(PSOLSSVM)的负荷预测方法.首先通过引入非线性因子和自适应权重实现鲸鱼算法的改进,进而利用其改进算法对LSSVM参数进行寻优,最后建立短期负荷预测模型.结合某地区的实测数据进行预测分析。

1.1 粒子群算法

1.2 最小二乘支持向量机

img

img

img

2 部分代码

%=====================================================================%初始化clcclose allclearformat long​​tic%==============================================================%%导入数据data=xlsread('1.xlsx');[row,col]=size(data);x=data(:,1:col-1);y=data(:,col);set=1; %设置测量样本数row1=row-set;%train_x=x(1:row1,:);train_y=y(1:row1,:);test_x=x(row1+1:row,:);%预测输入test_y=y(row1+1:row,:);%预测输出train_x=train_x';train_y=train_y';test_x=test_x';test_y=test_y';​​%%数据归一化[train_x,minx,maxx, train_yy,miny,maxy] =premnmx(train_x,train_y);test_x=tramnmx(test_x,minx,maxx);train_x=train_x';train_yy=train_yy';train_y=train_y';test_x=test_x';test_y=test_y';%% 参数初始化​​%粒子群算法中的两个参数c1 = 1.5;%; % c1 belongs to [0,2] c1:初始为1.5,pso参数局部搜索能力,表征个体极值对当前解得影响c2 = 1.7;%; % c2 belongs to [0,2] c2:初始为1.7,pso参数全局搜索能力,表征全局极值对当前解得影响​​maxgen=100; % 进化次数 300sizepop=30; % 种群规模30​​popcmax=10^(3);% popcmax:初始为1000,SVM 参数c的变化的最大值.popcmin=10^(-1);% popcmin:初始为0.1,SVM 参数c的变化的最小值.popgmax=10^(2);% popgmax:初始为100,SVM 参数g的变化的最大值popgmin=10^(-2);% popgmin:初始为0.01,SVM 参数g的变化的最小值.​​​end%% 结果分析plot(fit_gen,'LineWidth',2);title(['粒子群优化svm适应度曲线','(参数c1=',num2str(c1),',c2=',num2str(c2),',终止代数=',num2str(maxgen),')'],'FontSize',13);xlabel('进化代数');ylabel('误差适应度');​​bestc = global_x(1);bestg = global_x(2);​​gam=bestcsig2=bestgmodel=initlssvm(train_x,train_yy,type,gam,sig2,kernel,proprecess);%原来是显示model=trainlssvm(model);%原来是显示%求出训练集和测试集的预测值[train_predict_y,zt,model]=simlssvm(model,train_x);[test_predict_y,zt,model]=simlssvm(model,test_x);​​%预测数据反归一化train_predict=postmnmx(train_predict_y,miny,maxy);%预测输出test_predict=postmnmx(test_predict_y,miny,maxy);​​​​%计算均方差trainmse=sum((train_predict-train_y).^2)/length(train_y)%testmse=sum((test_predict-test_y).^2)/length(test_y)​​for i=1:set    RD(i)=(test_predict(i)-test_y(i))/test_y(i)*100;endfor i=1:set    D(i)=test_predict(i)-test_y(i);endRD=RD'D=D'​​figureplot(test_predict,':og')hold onplot(test_y,'- *')legend('预测输出','期望输出')title('网络预测输出','fontsize',12)ylabel('函数输出','fontsize',12)xlabel('样本','fontsize',12)figureplot(train_predict,':og')hold onplot(train_y,'- *')legend('预测输出','期望输出')title('粒子群网络预测输出','fontsize',12)ylabel('函数输出','fontsize',12)xlabel('样本','fontsize',12)​​toc   %计算时间

3 仿真结果

4 参考文献

[1]刘家旗. 基于改进的粒子群算法优化LSSVM股价预测研究[J]. 山东农业大学学报(自然科学版), 2015, 000(004):628-631.

5 MATLAB代码与数据下载地址

见博客主页