【lssvm预测】基于麻雀算法优化最小二乘支持向量机实现风电功率预测(多输入单输出)含Matlab源码
1 简介
本文提出一种麻雀算法优化基于最小二乘支持向量机的数据预测方法。LSSVM 是一种新型机器学习算法,其在传统支持向量机 SVM 基础上,将二次规划问题中的不等式约束改为等式约束,极大地方便了求解过程,克服了数据集粗糙、数据集波动性大等问题造成的异常回归,能有效避免 BP 神经网络等方法中出现的局部最优等问题。
麻雀搜索算法( sparrow search algorithm,SSA) 是新群智能优化算法,具有良好的全局搜索能力和 快速收敛性。与其他群智能算法一样来源于对生物体觅食情况的观察,麻雀种群在觅食过程中分为 两个部分: 发现者和加入者。发现者负责搜索食物 并为种群中的其他个体提供觅食区域和方向,通常 是具有高能源储备的个体,其所对应的适应度函数 值更优。加入者对应为适应度函数值较差的个体, 它们通过发现者留下的信息获得食物。适应度值 最差的部分麻雀找不到食物,为了寻找到食物它们 可能跳出当前的搜索区域,到其他的地方觅食。种 群中的每只麻雀都会监视其他同伴的行为,并且部 分麻雀会攻击摄取量较高的同伴争夺资源。当种 群中个别麻雀发现捕食者后发出报警信号,一旦报 警值大于安全值时发现者会把加入者带到其他安 全的区域觅食。 种群中发现者和加入者的总数和比例不变,但 是两者的身份是动态变化的。寻找到更好的食物 来源的任何一只麻雀都可能变成发现者,此时其所 对应的适应度值变优,与此同时必然会有一只麻雀变成加入者,其适应度值变差。加入者的能量值越 低,在搜索范围内的位置对自己越不利越不容易找 到食物,这些极其渴望得到食物的麻雀可能飞到别的领域觅食,从而使自己获得能量。在整个觅食的过程中,加入者能搜索到能量更高的发现者,从而 获得食物或者伺机夺取食物。 当意识到可能有危险时,为了获得更安全的位 置,种群边缘的麻雀快速向安全范围内移动,而在 种群中间的麻雀随机走动靠近其他的同伴。
算法流程如下:
步骤1,采集时间序列的样本数据;
步骤2,建立基于麻雀搜索算法优化参数的LSSVM数据预测模型;
步骤3,应用预测模型对训练样本进行预测,得到训练样本的相对误差和预测值;步骤4,预测模型对训练样本的相对误差进行预测,从而得到相对误差的预测值;步骤5,对相对误差的预测值进行校正,从而得到预测速率;解决了由于最小二乘支持向量机核函数参数和惩罚参数的经验性赋值而导致的预测精度不足的问题.
2 部分代码
%_________________________________________________________________________%
% 麻雀优化算法 %
%_________________________________________________________________________%
function [Best_pos,Best_score,curve]=SSA(pop,Max_iter,lb,ub,dim,fobj)
ST = 0.6;%预警值
PD = 0.7;%发现者的比列,剩下的是加入者
SD = 0.2;%意识到有危险麻雀的比重
PDNumber = round(pop*PD); %发现者数量
SDNumber = round(pop*SD);%意识到有危险麻雀数量
if(max(size(ub)) == 1)
ub = ub.*ones(1,dim);
lb = lb.*ones(1,dim);
end
%种群初始化
X0=initialization(pop,dim,ub,lb);
X = X0;
%计算初始适应度值
fitness = zeros(1,pop);
for i = 1:pop
fitness(i) = fobj(X(i,:));
end
[fitness, index]= sort(fitness);%排序
BestF = fitness(1);
WorstF = fitness(end);
GBestF = fitness(1);%全局最优适应度值
for i = 1:pop
X(i,:) = X0(index(i),:);
end
curve=zeros(1,Max_iter);
GBestX = X(1,:);%全局最优位置
X_new = X;
for i = 1: Max_iter
BestF = fitness(1);
WorstF = fitness(end);
R2 = rand(1);
for j = 1:PDNumber
if(R2<ST)
X_new(j,:) = X(j,:).*exp(-j/(rand(1)*Max_iter));
else
X_new(j,:) = X(j,:) + randn()*ones(1,dim);
end
end
for j = PDNumber+1:pop
% if(j>(pop/2))
if(j>(pop - PDNumber)/2 + PDNumber)
X_new(j,:)= randn().*exp((X(end,:) - X(j,:))/j^2);
else
%产生-1,1的随机数
A = ones(1,dim);
for a = 1:dim
if(rand()>0.5)
A(a) = -1;
end
end
AA = A'*inv(A*A');
X_new(j,:)= X(1,:) + abs(X(j,:) - X(1,:)).*AA';
end
end
Temp = randperm(pop);
SDchooseIndex = Temp(1:SDNumber);
for j = 1:SDNumber
if(fitness(SDchooseIndex(j))>BestF)
X_new(SDchooseIndex(j),:) = X(1,:) + randn().*abs(X(SDchooseIndex(j),:) - X(1,:));
elseif(fitness(SDchooseIndex(j))== BestF)
K = 2*rand() -1;
X_new(SDchooseIndex(j),:) = X(SDchooseIndex(j),:) + K.*(abs( X(SDchooseIndex(j),:) - X(end,:))./(fitness(SDchooseIndex(j)) - fitness(end) + 10^-8));
end
end
%边界控制
for j = 1:pop
for a = 1: dim
if(X_new(j,a)>ub(a))
X_new(j,a) =ub(a);
end
if(X_new(j,a)<lb(a))
X_new(j,a) =lb(a);
end
end
end
%更新位置
for j=1:pop
fitness_new(j) = fobj(X_new(j,:));
end
for j = 1:pop
if(fitness_new(j) < GBestF)
GBestF = fitness_new(j);
GBestX = X_new(j,:);
end
end
X = X_new;
fitness = fitness_new;
%排序更新
[fitness, index]= sort(fitness);%排序
BestF = fitness(1);
WorstF = fitness(end);
for j = 1:pop
X(j,:) = X(index(j),:);
end
curve(i) = GBestF;
end
Best_pos =GBestX;
Best_score = curve(end);
end
3 仿真结果
4 参考文献
[1]高伟. 基于最小二乘支持向量机的风电功率短期预测研究. Diss. 华中科技大学, 2014.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
【lssvm预测】基于麻雀算法优化最小二乘支持向量机实现风电功率预测(多输入单输出)含Matlab源码相关推荐
- 粒子群算法(PSO)优化最小二乘支持向量机回归预测,PSO-LSSVM回归预测,多输入单输出模型。
%% 清空环境变量 warning off % 关闭报警信息 close all % 关闭开启的图窗 clear ...
- 【预测模型】基于卷积神经网络CNN实现预测单输入单输出预测模型matlab源码
1 模型 2 部分代码 clc;clear;close all load('.\世界遗产假山数据\环秀山庄\2020.10数据\环秀山庄2020.10沉降1-5号点.mat') data = tabl ...
- 【lssvm预测】基于天鹰算法优化最小二乘支持向量机lssvm实现数据回归预测附matlab代码
1 简介 短时交通流预测是实现智能交通控制与管理,交通流状态辨识和实时交通流诱导的前提及关键,也是智能化交通管理的客观需要.到目前为止,它的研究结果都不尽如人意.现有的以精确数学模型为基础的传统预测方 ...
- matlab svm 语音识别,【情感识别】基于matlab支持向量机(SVM)的语音情感识别【含Matlab源码 543期】...
一.简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数 ...
- 【TWVRP】基于matlab模拟退火算法求解带时间窗的多车型路径规划问题【含Matlab源码 913期】
⛄一.模拟退火算法简介 1 引言 模拟退火算法(Simulated Annealing,SA)的思想最早由Metropolis等人于1953年提出:Kirkpatrick于1983年第一次使用模拟退火 ...
- 【路径规划】基于matlab GUI粒子群算法机器人避障路径规划(手动设障)【含Matlab源码 924期】
⛄一.简介 1 粒子群算法的概念 粒子群优化算法(PSO:Particle swarm optimization) 是一种进化计算技术(evolutionary computation).源于对鸟群捕 ...
- 【lssvm回归预测】基于鸽群算法优化最小二乘支持向量机PIO-lssvm实现数据回归预测附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
- 【预测模型】基于鲸鱼算法优化最小二乘支持向量机实现数据分类matlab代码
1 简介 Mirjalili和Lewis在2016年从座头鲸的猎食行为中得到启示,提出一种新的元启发式优化算法--鲸鱼优化算法.该算法仿照座头鲸的泡泡网觅食方法,通过收缩包围.螺旋位置更新以及随机捕食 ...
- 【TWVRP】模拟退火算法求解带时间窗的多车型路径规划问题【含Matlab源码 913期】
⛄一.模拟退火算法简介 1 引言 模拟退火算法(Simulated Annealing,SA)的思想最早由Metropolis等人于1953年提出:Kirkpatrick于1983年第一次使用模拟退火 ...
- 【路径规划】基于遗传算法求解三维装载下的汽车零部件循环取货路径规划问题含Matlab源码
1 简介 在考虑汽车零部件包装箱长.宽.高等三维尺寸的约束下,以配送中心为原点,分派多辆同一规格的货车到n个供应商处取货,最后回到配送中心.本章所构建的三维装载约束下的汽车零部件循环取货路径优化模型要 ...
最新文章
- 通过Windows的远程桌面连接树莓派
- 关于如何防范Ⅱ、Ⅲ类银行结算账户风险
- 内温的整体优先效应实验_实验室通风与系统控制
- 剑指offer_04
- 智慧社区防控(测温)
- python可以处理哪些文件_4招小技巧,带你迅速提升Python文件处理的逼格
- SQL SERVER事务处理
- java学习 hibernate 持久态和瞬时态
- redis底层数据结构
- spring cloud config-server 高可用配置中心
- 吉客云与金蝶云星空集成方案(吉客云主管库存)
- 移动互联网之路——Axure RP 8.0网站与APP原型设计从入门到精通
- 移动鼠标计算鼠标偏移量
- 精算未来会被计算机代替吗,年薪过百万还不用加班?揭开精算专业的真面目(下篇)...
- 钉钉导航栏分享按钮的显示/隐藏
- 如何制作电话号码二维码?
- 线上慎用Java断言
- 读取EXCEL表格数据到MATLAB成为矩阵
- 设备设施管理内容有哪些?
- 从经典的MVC模式到Web三层结构