2011年电工杯数学建模全国一等奖论文 联系客服

发布时间 : 星期日 文章2011年电工杯数学建模全国一等奖论文更新完毕开始阅读

我们首先设置了种群的规模。根据输入数据的维数,我们设定种群的规模为10,进化次数为50次,交叉概率为0.4,变异概率为0.2。

3.2.1适应度函数

我们根据个体得到了BP神经网络的初始权值和阈值,用训练数据训练BP神经网络后预测系统输出,把预测输出和期望输出之间的绝对值和E作为个体适应度值F,计算公式如下:

?n?F?k??abs?yi?oi???i?1?

(32)

式中,n为网络输出节点数;yi为BP神经网络第i个节点的期望输出;oi为第i个节点的预测输出;k为系数。

3.2.2选择操作

我们接着定义了遗传算法的选择操作。我们选择轮盘赌法,即基于适应度比例的选择策略,每个个体i的选择概率pi为

fi?kFifiN (33)

pi??j?1fj (34)

式中,Fi为个体i的适应度值;由于适应度值越小越好,所以在个体选择之前对适应度值求倒数;k为系数;N为种群个体数目。

3.2.3交叉操作

我们接着定义了交叉操作。个体我们采用实数编码,所以交叉操作方法采用实数交叉法,第k个染色体ak和第l个染色体al在j位的交叉操作方法如下:

akj?akj?1?b??aijbalj?alj?1?b??akjb (35) (36)

式中,b是[0,1]区间的随机数。 3.2.4变异操作

选取第i个个体的第j个基因aij进行变异,变异的操作方法如下:

31

?aij?(aij?amax)?f(g)r?0.5 aij??a?(a?a)?f(g)r?0.5minij?ij (37)

其中,amax为基因aij的上界;amin为基因aij的下界;f(g)?r2(1?g/Gmax);

r2为一个随机数;g为当前迭代次数;Gmax是最大进化次数;r为[0,1]间的随

机数

3.2.5主函数 程序段代码如下

%去训练数据和预测数据 input_train=input'; output_train=output'; input_test=input_test'; %数据归一化

[inputn,inputps]=mapminmax(input_train); [outputn,outputps]=mapminmax(output_train); %构建网络

net=newff(inputn,outputn,8); %BP神经网络参数

net.trainParam.epochs=30; net.trainParam.lr=0.01; net.trainParam.goal=0.0000004; %BP神经网络训练·

net=train(net,inputn,outputn); %% BP网络预测 %预测输入数据归一化

inputn_test=mapminmax('apply',input_test,inputps); %网络预测输出

an=sim(net,inputn_test); %网络输出反归一化

BPoutput=mapminmax('reverse',an,outputps); %% 结果分析 figure(1)

32

plot(BPoutput,':og') holdon

plot(output_test,'-*');

legend('预测输出','期望输出','fontsize',12) title('BP网络预测输出','fontsize',12) [xx,~]=size(BPoutput);

plot(1:xx,BPoutput,1:xx,output_test) xlabel('样本','fontsize',12) ylabel('输出','fontsize',12) print-dtiff-r6004-3 %预测误差

error=BPoutput-output_test; figure(2) plot(error,'-*') title('神经网络预测误差') figure(3)

plot((output_test-BPoutput)./BPoutput,'-*'); title('神经网络预测误差百分比') errorsum=sum(abs(error))

3.3模型检验

我们利用建立的遗传神经网络模型分别对a时间段A号风力发电机功率、a时间段58台风力发电机总功率、b时间段B号风力发电机功率进行仿真,网络的训练结果如下图所示:

33

图(44)

b时间段58台风力发电机总功率进行仿真结果如下:

图(45)a时段A发电机功率预测曲线

34