目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

1).使用 LPF-VMD 对风速时间序列进行分解, 得到一个低频的趋势分量以及 n 个由 VMD 分解得 到的 BIMF。

2).对 LPF-VMD 分解得到的各分量分别建立 KELM 预测模型,采用 BSA 对模型中 4 个待定参 数进行联合优化。

3).以得到的最优参数组合建立 KELM 模型进 行预测。

4).各分量的预测结果叠加得到预测风速。

5).误差分析。

VMD(Variational mode decomposition)是一种自适应、完全非递归的模态变分和信号处理的方法。该技术具有可以确定模态分解个数的优点,其自适应性表现在根据实际情况确定所给序列的模态分解个数,随后的搜索和求解过程中可以自适应地匹配每种模态的最佳中心频率和有限带宽,并且可以实现固有模态分量(IMF)的有效分离、信号的频域划分、进而得到给定信号的有效分解成分,最终获得变分问题的最优解。它克服了EMD方法存在端点效应和模态分量混叠的问题,并且具有更坚实的数学理论基础,可以降低复杂度高和非线性强的时间序列非平稳性,分解获得包含多个不同频率尺度且相对平稳的子序列,适用于非平稳性的序列,VMD的核心思想是构建和求解变分问题。
      核极限学习机(Kernel Based Extreme Learning Machine,KELM)是基于极限学习机(Extreme Learning Machine,ELM)并结合核函数所提出的改进算法,KELM 能够在保留 ELM 优点的基础上提高模型的预测性能。

鸟群算法模仿的生物行为可简化为如下规则:

(1) 每一只鸟自由选择觅食或保持警觉行为。
(2) 若选择觅食,每一只鸟即时记录并更新其所经过的最佳觅食位置,同时将此信息分享至整个种群,并记录种群最佳觅食位置。
(3) 若保持警觉,每只鸟均试图飞往种群的中心,此行为受种群间的竞争影响,食物储备多的鸟比储备少的有更大的概率飞往中心。
(4) 鸟群会周期性地飞往另一区域。鸟群之间会分享所寻觅的食物信息,这一习性使得种群更有利地生存下去。种群中食物储备最多的称为食物生产者,储备最少的称为乞食者,其它鸟随机作为 2 者之一。当鸟群从一个区域飞往另一区域,各只鸟的身份将发生改变。

(5) 生产者积极寻找食物,乞食者随机跟随一位生产者寻找食物。

2.仿真效果预览

matlab2022a仿真结果如下:

3.MATLAB核心程序

% set the parameters
lb= [1,1,1,1];   % Lower bounds
ub= [5,5,5,100];    % Upper bounds
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Initializationfor i = 1 : popx( i, : ) = lb + (ub - lb) .* rand( 1, dim ); fit( i )  = FitFunc( x( i, : ) );
end
pFit = fit; % The individual's best fitness value
pX   = x;     % The individual's best position corresponding to the pFit[ fMin, bestIndex ] = min( fit );  % fMin denotes the global optimum
% bestX denotes the position corresponding to fMin
bestX = x( bestIndex, : );   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Start the iteration.for iteration = 1 : Miteration prob = rand( pop, 1 ) .* 0.2 + 0.8;%The probability of foraging for foodif( mod( iteration, FQ ) ~= 0 )         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Birds forage for food or keep vigilancesumPfit = sum( pFit );meanP = mean( pX );for i = 1 : popif rand < prob(i)x( i, : ) = x( i, : ) + c1 * rand.*(bestX - x( i, : ))+ ...c2 * rand.*( pX(i,:) - x( i, : ) );elseperson = randiTabu( 1, pop, i, 1 );x( i, : ) = x( i, : ) + rand.*(meanP - x( i, : )) * a1 * ...exp( -pFit(i)/( sumPfit + realmin) * pop ) + a2 * ...( rand*2 - 1) .* ( pX(person,:) - x( i, : ) ) * exp( ...-(pFit(person) - pFit(i))/(abs( pFit(person)-pFit(i) )...+ realmin) * pFit(person)/(sumPfit + realmin) * pop ); endx( i, : ) = Bounds( x( i, : ), lb, ub );  fit( i ) = FitFunc( x( i, : ) );end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%elseFL = rand( pop, 1 ) .* 0.4 + 0.5;    %The followed coefficient%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Divide the bird swarm into two parts: producers and scroungers.[ans, minIndex ] = min( pFit );[ans, maxIndex ] = max( pFit );choose = 0;if ( minIndex < 0.5*pop && maxIndex < 0.5*pop )choose = 1;endif ( minIndex > 0.5*pop && maxIndex < 0.5*pop )choose = 2;endif ( minIndex < 0.5*pop && maxIndex > 0.5*pop )choose = 3;endif ( minIndex > 0.5*pop && maxIndex > 0.5*pop )choose = 4;end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if choose < 3for i = (pop/2+1) : popx( i, : ) = x( i, : ) * ( 1 + randn );x( i, : ) = Bounds( x( i, : ), lb, ub );fit( i ) = FitFunc( x( i, : ) );endif choose == 1 x( minIndex,: ) = x( minIndex,: ) * ( 1 + randn );x( minIndex, : ) = Bounds( x( minIndex, : ), lb, ub );fit( minIndex ) = FitFunc( x( minIndex, : ) );endfor i = 1 : 0.5*popif choose == 2 || minIndex ~= iperson = randi( [(0.5*pop+1), pop ], 1 );x( i, : ) = x( i, : ) + (pX(person, :) - x( i, : )) * FL( i );x( i, : ) = Bounds( x( i, : ), lb, ub );fit( i ) = FitFunc( x( i, : ) );endendelsefor i = 1 : 0.5*popx( i, : ) = x( i, : ) * ( 1 + randn );x( i, : ) = Bounds( x( i, : ), lb, ub );fit( i ) = FitFunc( x( i, : ) );endif choose == 4 x( minIndex,: ) = x( minIndex,: ) * ( 1 + randn );x( minIndex, : ) = Bounds( x( minIndex, : ), lb, ub );fit( minIndex ) = FitFunc( x( minIndex, : ) );endfor i = (0.5*pop+1) : popif choose == 3 || minIndex ~= iperson = randi( [1, 0.5*pop], 1 );x( i, : ) = x( i, : ) + (pX(person, :) - x( i, : )) * FL( i );x( i, : ) = Bounds( x( i, : ), lb, ub );fit( i ) = FitFunc( x( i, : ) );endend   endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Update the individual's best fitness vlaue and the global best onefor i = 1 : pop if ( fit( i ) < pFit( i ) )pFit( i ) = fit( i );pX( i, : ) = x( i, : );endif( pFit( i ) < fMin )fMin = pFit( i );bestX = pX( i, : );endendff(iteration) = fMin;endfigure;
plot(ff);m   = floor(bestX(1))+1;
if isnan(m)==1m=5;
end
% 延迟时间
tau = floor(bestX(2))+1;
if isnan(tau)==1tau=1;
end
% 惩罚系数 C
C   = bestX(3);
if isnan(C)==1C=1;
end
% 核参数?
Ker = bestX(4);
if isnan(Ker)==1Ker=100;
end
%采用 BSA 对模型中 4 个待定参数进行联合优化。 save best.mat m tau C Ker
load S122.mat%%
% 训练集――50个样本
train = S122(1:120,:);
% 测试集――1
test = S122(121:end,:);
02_101m

4.完整MATLAB

V

m基于LPF-VMD和KELM的鸟群优化算法的风速预测算法matlab仿真相关推荐

  1. 基于IMAGE法的房间回响模型创建、C++代码实现、matlab仿真

    基于IMAGE法的房间回响模型创建.C++代码实现.matlab仿真 1.模型简介 \qquad在处理声音信号时,我们要对信号先进行采集.那么我们就必须要有,一个发出声音的声源,一个进行声音采集的传感 ...

  2. rls算法matlab实现,第5章基于RLS算法的数据预测与MATLAB实现MATLAB实现.PDF

    第5章基于RLS算法的数据预测与MATLAB实现MATLAB实现 第 5章 基于 RLS算法的数据预测与 第5章 基于RLS算法的数据预测与MATLAB实现 MATLAB实现 RLS 1795 递归最 ...

  3. 基于有源钳位三电平的有源电力滤波器(ANPC-APF)MATLAB仿真,包括自建的DSOGI锁相模块和PQ谐波检测模块。 可简单解释。

    基于有源钳位三电平的有源电力滤波器(ANPC-APF)MATLAB仿真,包括自建的DSOGI锁相模块和PQ谐波检测模块. 可简单解释. YID:1560659846370667tbNick_0m0gm

  4. 基于有源钳位三电平的有源电力滤波器(ANPC-APF)MATLAB仿真,包括自建的DSOGI锁相模块和PQ谐波检测模块

    基于有源钳位三电平的有源电力滤波器(ANPC-APF)MATLAB仿真,包括自建的DSOGI锁相模块和PQ谐波检测模块. YID:1560659846370667tbNick_0m0gm

  5. 基于有源钳位三电平的有源电力滤波器(ANPC-APF)MATLAB仿真

    基于有源钳位三电平的有源电力滤波器(ANPC-APF)MATLAB仿真,包括自建的DSOGI锁相模块和PQ谐波检测模块. YYYID:1560659846370667tbNick_0m0gm

  6. 基于蒙特卡洛的含分布式电源(风光)的概率潮流计算Matlab仿真

    基于蒙特卡洛的含分布式电源(风光)的概率潮流计算Matlab仿真,IEEE33节点,采用牛拉法潮流计算 风速光照的概率密度图和网损图以及电压幅值前后对比图. 包括普通版本和matpower可参考. I ...

  7. 【MATLAB教程案例11】基于PSO粒子群优化算法的函数极值计算matlab仿真及其他应用

    FPGA教程目录 MATLAB教程目录 -------------------------------------------------------------------------------- ...

  8. m基于改进PSO粒子群优化的RBF神经网络解耦控制算法matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 智能控制的思想最早来自傅京孙教授[,他通过人机控制器和机器人方面的研究,首先把人工智能的自觉推理方法 ...

  9. 基于Luca-Kanade光流算法的图像运动场提取matlab仿真

    目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 光流是一种运动模式,这种运动模式指的是一个物体.表面.边缘在一个视角下由一个观察者(比如眼睛.摄像头等)和背景之间形成的明显移 ...

最新文章

  1. javascript tab切换类LixTabs最新版
  2. flannel 的连通与隔离 - 每天5分钟玩转 Docker 容器技术(61)
  3. scrapy中使用代理cookies user-agent
  4. 单端测序(Single end)和双端测序(Pair end和Mate pair)
  5. 团队作业8----第二次项目冲刺(Beta阶段) 第六天
  6. 深入cocos2d-x中的touch事件
  7. ubuntu系统下IDEA中新建class时报错Unable to parse template “Class“的解决方法
  8. 如何利用【百度地图API】,制作房产酒店地图?(上)——制作自定义标注和自定义信息窗口...
  9. python treeview控件使用详解_python绘图工具turtle库的使用详解
  10. CCS12.0 安装并设置中文
  11. Ubuntu安装Hbase数据库
  12. python自动化办公——PIL根据模板生成结业证书
  13. CI/CD工具链的部署
  14. BeagleBone Black– 智能家居控制系统 LAS - ESP8266 UDP 服务
  15. 蓝桥杯比赛准备总结(大学编程学习历程)
  16. 腿姐22考研政治马原选择题技巧精讲
  17. 【5G架构】5G 核心网——基于服务的网络架构
  18. 简述xhr -xhr的基本使用
  19. 某资产配置平台系统方案建设规划
  20. 移动通信期末复习笔记

热门文章

  1. 基于UDS的汽车通信故障诊断机制与处理策略
  2. 程序员工作2年月薪12K,架构师必备!
  3. 我的栈笔记。压栈的快乐,消栈的伤心。
  4. 《4D移花接木——镜中花》设计方案
  5. 怎样在excel的一个单元格里画多条斜线再输入汉字
  6. 微信公众号java开发
  7. Vue基础知识总结(二):进阶篇
  8. 使用搜狐接口获取客户端IP地址
  9. 【洛谷】P1164 小A点菜
  10. 山西小镇喜现豪华“动物车队”可骑驴遛马坐牛赶驼