【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),:);endcurve=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;endBest_pos =GBestX;Best_score = curve(end);end

3 仿真结果

4 参考文献

[1]高伟. 基于最小二乘支持向量机的风电功率短期预测研究. Diss. 华中科技大学, 2014.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
豪猪算法优化最小二乘支持向量机COA-LSSVM是一种用于电需求预测算法。它结合了最小二乘支持向量机LSSVM)和豪猪算法进行模型的优化最小二乘支持向量机LSSVM)是一种机器学习算法,用于回归和分类问题。它通过构建一个非线性映射函数将输入数据映射到高维空间,然后在高维空间中找到一个最优超平面,使得样本点到该超平面的距离最小化。 豪猪算法是一种基于自然界中豪猪觅食行为的优化算法。它模拟了豪猪在觅食过程中的个体行为和群体协作,通过迭代搜索来寻找最优解。 COA-LSSVM算法将豪猪算法应用于LSSVM模型的优化过程中。它通过豪猪算法来调整LSSVM模型中的参数,以提高电需求预测的准确性和泛化能力。 具体而言,COA-LSSVM算法的原理如下: 1. 初始化豪猪种群,并计算每个豪猪的适应度值。 2. 根据适应度值选择豪猪个体,进行觅食行为模拟。觅食行为包括搜索和追踪两个阶段。 3. 在搜索阶段,豪猪个体通过随机选择搜索方向和距离来寻找新的解。 4. 在追踪阶段,豪猪个体通过观察周围豪猪的位置和适应度值来调整自己的位置。 5. 更新豪猪种群,并计算每个豪猪的适应度值。 6. 重复步骤2-5,直到满足停止条件(如达到最大迭代次数或适应度值收敛)。 7. 根据最优解得到的参数,构建LSSVM模型,并用于电需求预测。 通过COA-LSSVM算法优化,可以提高电需求预测模型的准确性和泛化能力,从而更好地满足实际需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值