先用先发!24年新算法CPO-ELM结合改进自适应核密度估计实现风光电功率区间概率预测!原理讲解!尚未发表!适合新手小白

本文介绍了一种新颖的CPO优化算法应用于ELM模型,结合改进的ABKDE方法进行风电功率的区间概率预测。通过实例展示了点预测和区间预测的效果,以及自适应带宽的优势,提供了Matlab代码实现,适用于数据分析和预测场景。
摘要由CSDN通过智能技术生成

      传统的点预测已经很难吸引审稿人的注意,容易被拒稿!今天为大家带来一期24年新算法——冠豪猪优化算法CPO优化极限学习机ELM,并结合改进自适应核密度估计ABKDE实现风光电功率区间概率预测代码,独家原创!适合作为创新点!直接替换Excel数据即可用!具体代码已放在最后,需要代码的朋友可直接拉到最后~

目录

原理简介

代码平台

数据格式

效果展示

部分代码展示

完整代码获取


原理简介

冠豪猪优化器(CPO)是2024年1月由Mohamed Abdel-Basset等人提出的一种最新的基于自然启发的元启发式算法。成果发表在SCI中科院一区TOP期刊《Knowledge-Based Systems》,创新点非常足,目前尚无相关研究成果运用在预测的文献!

你先用,你就是创新!

CPO模拟了冠豪猪(CP)的四种防御策略包括视觉、声音、气味和身体攻击。该算法采用了探索和开发的机制,第一和第二防御策略(即视觉和声音)代表CPO的探索性行为,而第三和第四防御策略(即气味和身体攻击)代表CPO的开发性行为。

详细原文可参考如下文章:

Mohamed Abdel-Basset, Reda Mohamed, Mohamed Abouhawwash,Crested Porcupine Optimizer: A new nature-inspired metaheuristic, Knowledge-Based Systems, 2023, 111257, 

利用CPO算法优化ELM算法的初始权重与偏置,减少人工调参的盲目性,从而实现点预测。

再来说下如何进行区间概率预测,传统点预测已不能满足专家的偏好,区间概率预测可提供更多不确定信息。

自适应带宽核函数密度估计(adaptive bandwidth kernel density estimation)是一种用于估计概率密度函数的非参数方法,它使用核函数对数据进行平滑处理,并通过自动选择合适的带宽参数来适应数据的本地特性。

在传统的核密度估计中,带宽参数控制着核函数的宽度,从而影响了平滑程度和估计的准确性。而自适应带宽核函数密度估计则通过将带宽参数作为每个数据点的函数来进行估计,从而使得每个数据点都有自己独立的带宽参数。自适应带宽核函数密度估计的一种常见方法是基于局部加权回归(local weighted regression)的方法。在这种方法中,对于每个数据点,通过对附近的数据点进行加权回归,来估计它周围的概率密度。权重的选择通常与距离有关,较近的数据点会获得更高的权重。自适应带宽核函数密度估计的优势在于它能够在不同的数据区域自动调整带宽参数,从而更好地适应数据的局部特性和密度变化。相比于固定带宽的方法,自适应带宽核函数密度估计可以提供更准确的概率密度估计,并更好地捕捉到密度函数的细节和变化。

简单放个图片感受一下:

代码平台

Matlab

数据格式

Excel输入,非常方便,如果想要替换数据直接将最后一列放输出(即想要预测的东西,功率等等),前面放特征即可!多变量单输出,包括点预测+概率预测+核密度估计曲线,MatlabR2021a及以上版本运行,提供多种置信区间!评价指标包括R2MAE、RMSE、MAPE、区间覆盖率picp、区间平均宽度百分比pinaw等

效果展示

点预测效果图:

区间概率预测效果图:

概率密度估计图:

核密度估计曲线图:

可以看到,各置信区间下均取得了不错的结果,真实值与预测值非常贴合,效果非常不错,最后再来看看评价指标:

点预测包括四个评价指标,R2达到了0.99,区间预测的各个置信区间均有PINAW、PICP、CRPS、CWC四个指标,作为创新点非常不错~

程序主页面展示:

部分代码展示

function [y,t,optw,gs,C,confb95,yb] = ABKDE(x,tin)%参数初始化M = 80;            %带宽优化次数WinFunc = 'Gauss'; %核函数 ('Gauss','Laplace','Cauchy') 默认使用鲁棒性最好的高斯核bootsamp_num = 1*1e2;        %每批样本迭代次数(采用bootstrap抽样法)x = reshape(x,1,numel(x));if nargin == 1 %没有给定待估计点    T = max(x) - min(x);    [mbuf,nbuf,dt_samp] = find( sort(diff(sort(x))),1,'first');    tin = linspace(min(x),max(x), min(ceil(T/dt_samp),1e3)); %生成待估计样本点    t = tin;    x_ab = x( logical((x >= min(tin)) .*(x <= max(tin))) ) ;else %给定待估计点    T = max(tin) - min(tin);    x_ab = x( logical((x >= min(tin)) .*(x <= max(tin))) ) ;    [mbuf,nbuf,dt_samp] = find( sort(diff(sort(x_ab))),1,'first');    if dt_samp > min(diff(tin))        t = linspace(min(tin),max(tin), min(ceil(T/dt_samp),1e3));    else        t = tin;    endendclear mbuf nbuf;dt = min(diff(t));y_hist = histc(x_ab,t-dt/2)/dt; %#ok<*HISTC>L = length(y_hist);N = sum(y_hist*dt);% 计算局部优化带宽%窗口大小WIN = logexp(linspace(ilogexp(max(5*dt)),ilogexp(1*T),M));W = WIN;        %带宽c = zeros(M,L);for j = 1:M    w = W(j);    yh = fftkernel(y_hist,w/dt);    %计算局部损失函数    c(j,:) = yh.^2 - 2*yh.*y_hist + 2/sqrt(2*pi)/w*y_hist;endoptws = zeros(M,L);for i = 1:M    Win = WIN(i);        C_local = zeros(M,L);    for j = 1:M        C_local(j,:) = fftkernelWin(c(j,:),Win/dt,WinFunc);       end        [mbuf,n] = min(C_local,[],1);     optws(i,:) = W(n);end

完整代码获取

点击下方小卡片,后台回复关键字,不区分大小写。关键字:

CPOELM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值