当前位置:文档之家› 组合预测模型

组合预测模型

组合预测模型1灰色神经网络(GNN)预测模型灰色神经网络预测方法是灰色预测方法和人工神经网络方法相结合的算法,即保留灰色预测方法中“累加生成” 和“累减还原” 运算,不再求参数,而是由BP神经网络来建立预测模型和求解模型参数。

利用这种灰色神经网络进行负荷预测的算法如下。

1)对电力负荷的原始数据序列进行“累加生成”运算,得到累加序列。

2)利用BP神经网络能够拟合任意函数的优势解决累加序列并非指数规律的问题。

训练BP神经网络,逼近累加数据序列Y。

3)利用现有已经训练好的BP神经网络进行预测,输出累加序列的预测值。

4)将累加数据的预测值进行“累减还原”运算,得到电力负荷的原始数据序列预测值。

2果蝇优化算法(FOA)果蝇优化算法(fruit fly optimization algorithm,FOA)是由潘文超教授于2011年提出的一种基于果蝇觅食行为推演出寻求全局优化的新方法。

这是一种交互式进化计算方法,通过模仿果蝇群体发现食物的行为,FOA能够达到全局最优。

在实际中FOA已经被应用于许多领域,包括交通事件,外贸出口预测,模拟滤波器的设计等。

依照果蝇搜寻食物的特性,将其归纳为以下几个重要步骤。

1)参数初始化:FOA的主要参数为最大迭代次数maxgen,种群规模sizepop,初始果蝇群的位置(X_axis,Y_axis)和随机飞行距离FR。

2)种群初始化:赋予果蝇个体利用嗅觉搜寻食物之随机方向与距离。

3)种群评价:首先,由于无法得知食物的位置,需要计算果蝇到原点的距离(Dist)。

再计算气味浓度判定值(S)此值为距离的倒数。

通过将气味浓度判断值(S)代入气味浓度判断函数(或称为适应度函数),求出果蝇个体位置的气味浓度(Smell)。

并找出群体中气味浓度值最大的果蝇个体。

4)选择操作:保留最大气味浓度值和x、y坐标,此时,果蝇通过视觉飞往的最大浓度值的位置。

进入迭代寻优,重复实施步骤2)~3),并判断味道浓度是否优于前一迭代味道浓度,若是则执行步骤4)。

若味道浓度不再优于先前迭代的味道浓度值,或迭代次数达到最大,循环结束。

3GNN-FOA预测模型GNN-FOA预测模型的程序结构框图如图1所示。

采用果蝇优化算法(FOA)为灰色神经网络(GNN)模型参数a,b1和b2 进行迭代动态微调,使模型侦测能力提高,并获得最佳的GNN模型参数以进行预测。

详情如下。

1)参数初始化。

在果蝇优化算法的参数设定上,随机初始化果蝇群体位置区间X_axis,Y_axis∈[-50,50],迭代的果蝇寻食的随机飞行距离区间FR ∈[-10,10] ,种群规模sizepop = 20 ,而迭代次数max gen = 100 。

2)初始进化。

设置初始迭代次数为0,设定果蝇个体i 寻食随机飞行方向rand()和飞行距离。

其中rand()表示任意值产生函数。

在GNN-FOA程序中,使用两个变量[X(i,:),Y(i,:)] 来描述果蝇个体i 的飞行距离。

分别设3)初步计算和数据预处理。

计算果蝇个体i距离原点的距离Disti 和气味浓度判断值Si。

其中在GNN-FOA程序中,使用D(i,1),D(i,2),D(i,3) 来表示,用(S(i,1),S(i,2),S(i,3)) 表示Si 。

将Si 输入到GNN 预测模型进行年电力负荷预测。

在GNN-FOA 程序中,参数a,b1和b2由(S(i,1),S(i,2),S(i,3)) 表示,分别设通过年负荷预测结果,气味浓度值Smelli(或称为适应度函数)便可计算出来。

该气味浓度Smelli 通过均方差(RMSE)来表征网络输出预测值与实际值之间的误差。

4)产生种群后代。

种群后代通过果蝇算法步骤2)~3)生成,然后输入到GNN模型中,重新计算气味浓度值,迭代加一,置gen = gen + 1。

5)循环结束。

当达到最大迭代次数时,停止条件满足,并获得GNN模型的最佳参数。

若否,则返回执行步骤2)。

4组合程序close allclearclc% 16084IN=1:42;sr=zeros(1,42);sr(1)=1080.94;sr(2)=1083.03;……sr(41)=1728.79;sr(42)=1871.16;OUT=sr;[X,minx,maxx,T,mint,maxt]=premnmx(IN,OUT);q=50;q1=0;while(q1<q)q=q0;[M,N]=size(X);[L,N]=size(T);net=newff(minmax(X),[q,L],{'tansig','purelin'},'trainlm');net.trainParam.lr=0.05;net.trainParam.epochs=10000;net.trainParam.goal=1e-6;[net,tr]=train(net,X,T);Y=sim(net,X);Y=postmnmx(Y,mint,maxt);%灰色关联分析,调整网络隐层节点p=0.5;e=0.5;%此两个系数的设定是根据一些论文,已经实验的尝试得出的an=repmat(net.b{1},1,N);op=tansig(net.iw{1,1}*X+an);op1=op';T0=T';T1=repmat(T0,1,q);DIF=abs(T1-op1);MIN=min(min(DIF));MAX=max(max(DIF));Si=(MIN+p*MAX)./(DIF+p*MAX);ri=sum(Si)/N;D=find(ri>=e);[q0,q1]=size(D);q0=q1;endq0;ri;D;q=q1;%进行测试PRD=1:42;PRD=PRD';P=tramnmx(PRD,minx,maxx);TNEW=sim(net,P');TNEW=postmnmx(TNEW,mint,maxt);YY=OUT;YC=TNEW;figureplot(t,YY,'r*',t,YC,'b--+')RES0=YC-YY;res0=RES0./YY;figurebar(t,res0)%***随机初始果蝇群体位置。

X_axis=10*rand();Y_axis=10*rand();%***设置参数。

maxgen=100; %迭代次数sizepop=20; %种群规模%***果蝇寻优开始,利用嗅觉寻找食物。

for i=1:sizepop%***附与果蝇个体利用嗅觉搜寻食物之随机方向与距离。

X(i)=X_axis+2*rand()-1;Y(i)=Y_axis+2*rand()-1;%***由于无法得知食物位置,因此先估计与原点之距离(Dist),再计算味道浓度判定值(S),此值为距离之倒数。

D(i)=(X(i)^2+Y(i)^2)^0.5;S(i)=1/D(i);%***味道浓度判定值(S)代入味道浓度判定函数(或称为Fitness function)以求出该果蝇个体位置的味道浓度(Smelli)。

Smell(i)=-5+S(i)^2;end%***找出此果蝇群体的中味道浓度最低的果蝇(求极小值)。

[bestSmell bestindex]=min(Smell);%***保留最佳味道浓度值与x、y 坐标,此时果蝇群体利用视觉往该位置飞去。

X_axis=X(bestindex);Y_axis=Y(bestindex);Smellbest=bestSmell;%***果蝇迭代寻优开始for g=1:maxgen%***附与果蝇个体利用嗅觉搜寻食物之随机方向与距离。

for i=1:sizepopX(i)=X_axis+2*rand()-1;Y(i)=Y_axis+2*rand()-1;%***由于无法得知食物位置,因此先估计与原点之距离(Dist),再计算味道浓度判定值(S),此值为距离之倒数。

D(i)=(X(i)^2+Y(i)^2)^0.5;S(i)=1/D(i);%***判定值(S)代入判定函数以求出该果蝇位置的味道浓度(Smelli)。

Smell(i)= -5+S(i)^2;end%***找出此果蝇群体的中味道浓度最低的果蝇(求极小值)。

[bestSmell bestindex]=min(Smell);%***判断味道浓度是否优于前一迭代味道浓度,若是则保留最佳味道浓度值与x、y 坐标,此时果蝇群体利用视觉往该位置飞去。

if bestSmell<SmellbestX_axis=X(bestindex);Y_axis=Y(bestindex);Smellbest=bestSmell;end%***每代最优Smell 值纪录到yy 数组中,并记录最优迭代坐标yy(g)=Smellbest;Xbest(g)=X_axis;Ybest(g)=Y_axis;end%***绘制迭代味到浓度与果蝇飞行路径趋势图figure(1)plot(yy)title('Optimization process','fontsize',12)xlabel('Iteration Number','fontsize',12);ylabel('Smell','fontsize',12);figure(2)plot(Xbest,Ybest,'b.');title('Fruit fly flying route','fontsize',14) xlabel('X-axis','fontsize',12);ylabel('Y-axis','fontsize',12);。

相关主题