版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、神经网络遗传算法函数极值寻优 Beijing Jiaotong University 智能控制技术报告神经网络遗传算法函数极值寻优学 院:电子信息工程学院学 号:姓 名:指导教师:时 间:2014.11.29目录一、课题背景3二、模型建立32.1 算法流程42.2 BP算法实现42.2.1 数据选择和归一化42.2.2 BP神经网络训练52.2.3 BP神经网络预测52.3 遗传算法实现62.3.1 种群初始化62.3.2 适应度函数62.3.3 选择操作62.3.4 交叉操作62.3.5 变异操作6三、编程实现63.1 数据准备63.2 BP神经网络主函数73.3 编码函数83.4 适应度函
2、数93.5 选择操作93.6 交叉操作103.7 变异操作113.8 遗传算法主函数12四、结果分析144.1 BP神经网络拟合结果分析144.2遗传算法寻优结果分析16一、 课题背景在研究中经常会遇到一些非常复杂的非线性系统,这些系统方程复杂,难以用数学方法准确建模。在这种情况下,可以建立BP神经网络表达这些非线性系统。该方法把系统看成是一个黑箱,首先用系统输入输出数据训练BP神经网络,使网络能够表达该未知函数,然后就可以用训练好的BP神经网络预测系统输出。对于未知的非线性函数,仅通过函数的输入输出数据难以准确寻找函数极值。遗传算法通过模拟自然界遗传机制和生物进化论能够进行并行随机搜索最优化
3、,所以对非线性函数极值寻优可以通过神经网络结合遗传算法求解。利用神经网络的非线性拟合能力和遗传算法的非线性寻优能力寻找函数极值。本文拟合的非线性函数为:fx=-xx2-3.2x+2.89x-32 x0,3该函数的图形如图所示:图1-1待拟合函数图形从函数方程和图形可以看出,该函数仅有一个全局最大值为0.9655,对应的坐标是(0.537,0.9655)。虽然从函数方程和图形中很容易找出函数及极值对应的坐标,但是在方程未知的条件下函数极值及极值对应的坐标就很难求到。二、 模型建立2.1 算法流程神经网络遗传算法函数极值寻优主要分为BP神经网络训练拟合和遗传算法极值寻优两步,算法流程如图所示:图2
4、-1算法流程图神经网络训练拟合根据寻优函数的特点构建适合的BP神经网络,用非线性函数的输入输出数据训练BP神经网络,训练后的神经网络就可以预测函数输出。遗传算法极值寻优把训练后的BP神经网络预测结果作为个体适应度值,通过选择、交叉和变异操作寻找函数的全局最优值及对应的值。2.2 BP算法实现2.2.1 数据选择和归一化数据归一化是神经网络训练和预测前对数据常做的一种处理方法。数据归一化处理把所有的数据都归一化为0,1之间的数,其目的是取消各维数据间数量级差别,避免因为输入输出数据数量级差别较大而造成训练失败或者预测误差较大。数据归一化可以使用MATLAB自带函数mapminmax,该函数有多种
5、形式,常用的方法如下:%样本输入输出数据归一化inputn,inputps=mapminmax(input_train);outputn,outputps=mapminmax(output_train);input_train、output_train是训练输入、输出原始数据,inputn、outputn是归一化后的数据,inputps、outputps为数据归一化后得到的结构体,里面包含了数据的最大值、最小值和平均值等信息,可以用于测试数据归一化和反归一化。测试数据归一化和反归一化程序一般如下:%数据归一化inputn_test=mapminmax('apply',input
6、_test,inputps); %网络输出反归一化BPoutput=mapminmax('reverse',an,outputps);input_test是预测输入数据,input_test是归一化后的预测数据,'apply'表示根据inputps进行归一化;an是网络预测结果,outputs是训练输出数据归一化得到的结构体,BPoutput是反归一化后的网络预测输出,'reverse'表示对数据进行反归一化。2.2.2 BP神经网络训练用训练数据训练神经网络,使网络对非线性函数具有预测能力。MATLAB神经网络工具箱中自带BP神经网络函数,使用
7、时只需要调用相关的子程序即可。BP神经网络训练主要用到newff、sim两个函数。1. newff:BP神经网络参数设置函数函数功能:构建一个BP网络。函数形式:net=newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)2. train:BP神经网络训练函数函数功能:用训练数据训练BP神经网络。函数形式:net,tr=train(NET,X,T,Pi,Ai)2.2.3 BP神经网络预测用训练好的BP神经网络预测非线性函数输出,并通过BP神经网络预测输出和期望输出分析BP网络的分析能力。MATLAB神经网络工具箱提供的BP神经网络预测函数是sim。1. sim:BP神经
8、网络预测函数函数功能:用训练好的BP神经网络预测函数输出函数形式:y=sim(net,y)以上三个函数的具体用法可以参考其自带的帮助,本文不作详述。根据需要拟合的函数有1个输入参数、1个输出参数,确定BP神经网络为1-5-1。取函数的4000组输入输出数据,从中随机选取3900组训练网络,100组数据测试网络性能,网络训练好后用于非线性函数输出。2.3 遗传算法实现2.3.1 种群初始化个体编码方法为实数编码,每个个体均为一个实数串,由输入层与隐含层连接权值、隐含层阈值、隐含层与输出层连接权值以及输出层阈值4部分组成。个体包含了神经网络全部权值和阈值,在网络结构已知的情况下,就可以构成一个结构
9、、权值、阈值确定的神经网络。2.3.2 适应度函数根据个体得到的BP神经网络的初始权值和阈值,用训练数据训练BP神经网络后预测系统输出,把训练好的BP神经网络预测输出作为个体适应度的值。2.3.3 选择操作遗传算法选择操作有轮盘赌法、锦标赛法等多种方法,本文采用采用轮盘赌法,即基于适应度比例的选择策略,每个个体i的选择pi为:pi=fij=0nfi其中,fi为个体i的适应度值,N为种群的个体数目。2.3.4 交叉操作由于个体采用实数编码,所以交叉操作方法采用实数交叉法,d第k个染色体ak和第l个染色体al在j位的交叉操作方法如下:akj=akj1-b+aijbaij=aij1-b+akjb其中
10、,b是0,1间的随机数。2.3.5 变异操作选取第i个个体的第j个基因aij进行变异,变异操作方法如下:aij=aij+(aij-amax)*f(g) r0.5aij+(amin-aij)*f(g) r<0.5式中,amax为基因aij的上界;amin为基因aij的下界;fg=r2(1-g/Gmax);r2为一个随机数;g为当前迭代次数;amax是最大进化次数;r为0,1之间的随机数三、 编程实现3.1 数据准备根据拟合函数得到4000组输入input和输出数据output,存入data中。for i=1:4000 input(i,:)=3*rand; output(i)=-input(
11、i)*(input(i)2-3.2*input(i)+2.89)*(input(i)-3)/2;endoutput=output'save data input output3.2 BP神经网络主函数对于4000组数据,采用其中3900组用来训练神经网络,最后100组用来测试网络拟合性能。%清空环境变量clccleardata;tic% 训练数据预测数据提取及归一化%下载输入输出数据load data output input %从1到4000间随机排序k=rand(1,4000);m,n=sort(k); %找出训练数据和预测数据input_train=input(n(1:3900)
12、,:)'output_train=output(n(1:3900),:)'input_test=input(n(3901:4000),:)'output_test=output(n(3901:4000),:)' %选连样本输入输出数据归一化inputn,inputps=mapminmax(input_train);outputn,outputps=mapminmax(output_train); %BP网络训练%初始化网络结构net=newff(inputn,outputn,5); net.trainParam.epochs=100;net.trainParam
13、.lr=0.1;net.trainParam.goal=0.0000004; %网络训练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)plot(BPoutput,':og')hold onplot(outp
14、ut_test,'-*');legend('预测输出','期望输出','fontsize',12)title('BP网络预测输出','fontsize',12)xlabel('样本','fontsize',12)ylabel('输出','fontsize',12)print -dtiff -r600 4-3%预测误差error=BPoutput-output_test; figure(2)plot(error,'-*')
15、title('神经网络预测误差') figure(3)plot(output_test-BPoutput)./BPoutput,'-*');title('神经网络预测误差百分比') errorsum=sum(abs(error) toc save data net inputps outputps3.3 编码函数function ret=Code(lenchrom,bound)% lenchrom input : 染色体长度% bound input : 变量的取值范围% ret output: 染色体的编码值flag=0;while flag=
16、0pick=rand(1,length(lenchrom); %线性插值,编码结果以实数向量存入ret中ret=bound(:,1)'+(bound(:,2)-bound(:,1)'.*pick; flag=test(lenchrom,bound,ret); %检验染色体的可行性end3.4 适应度函数function fitness = fun(x)% x input 个体% fitness output 个体适应度值load data net inputps outputps %数据归一化x=x'inputn_test=mapminmax('apply
17、9;,x,inputps); %网络预测输出an=sim(net,inputn_test); %网络输出反归一化fitness=mapminmax('reverse',an,outputps);3.5 选择操作function ret=select(individuals,sizepop)% individuals input : 种群信息% sizepop input : 种群规模% ret output : 经过选择后的种群 fitness1=individuals.fitness;sumfitness=sum(fitness1);sumf=fitness1./sumfit
18、ness;index=; for i=1:sizepop %转sizepop次轮盘 pick=rand; while pick=0 pick=rand; end for i=1:sizepop pick=pick-sumf(i); if pick<0 index=index i; break; end endendindividuals.chrom=individuals.chrom(index,:);individuals.fitness=individuals.fitness(index);ret=individuals;3.6 交叉操作function ret=Cross(pcro
19、ss,lenchrom,chrom,sizepop,bound)% pcorss input : 交叉概率% lenchrom input : 染色体的长度% chrom input : 染色体群% sizepop input : 种群规模% ret output : 交叉后的染色体 for i=1:sizepop %随机选择两个染色体进行交叉 pick=rand(1,2); while prod(pick)=0 pick=rand(1,2); end index=ceil(pick.*sizepop); %交叉概率决定是否进行交叉 pick=rand; while pick=0 pick=r
20、and; end if pick>pcross continue; end flag=0; while flag=0 %随机选择交叉位 pick=rand; while pick=0 pick=rand; end pos=ceil(pick.*sum(lenchrom); pick=rand; %交叉开始 v1=chrom(index(1),pos); v2=chrom(index(2),pos); chrom(index(1),pos)=pick*v2+(1-pick)*v1; chrom(index(2),pos)=pick*v1+(1-pick)*v2; %交叉结束 flag1=t
21、est(lenchrom,bound,chrom(index(1),:);%检验染色体1可行性 flag2=test(lenchrom,bound,chrom(index(2),:);%检验染色体2可行性 if flag1*flag2=0 flag=0; else flag=1; end %如果两个染色体不是都可行,则重新交叉 end endret=chrom;3.7 变异操作function ret=Mutation(pmutation,lenchrom,chrom,sizepop,pop,bound)% pcorss input : 变异概率% lenchrom input : 染色体长度
22、% chrom input : 染色体群% sizepop input : 种群规模% opts input : 变异方法的选择% pop input : 当前种群的进化代数和最大的进化代数信息% ret output : 变异后的染色体for i=1:sizepop % 随机选择一个染色体进行变异 pick=rand; while pick=0 pick=rand; end index=ceil(pick*sizepop); % 变异概率决定该轮循环是否进行变异 pick=rand; if pick>pmutation continue; end flag=0; while flag=
23、0 % 变异位置 pick=rand; while pick=0 pick=rand; end pos=ceil(pick*sum(lenchrom); v=chrom(i,pos); v1=v-bound(pos,1); v2=bound(pos,2)-v; pick=rand; %变异开始 if pick>0.5 delta=v2*(1-pick(1-pop(1)/pop(2)2); chrom(i,pos)=v+delta; else delta=v1*(1-pick(1-pop(1)/pop(2)2); chrom(i,pos)=v-delta; end %变异结束 flag=t
24、est(lenchrom,bound,chrom(i,:); %检验染色体的可行性 endendret=chrom;3.8 遗传算法主函数%清空环境变量clcclear %初始化遗传算法参数%初始化参数maxgen=50; %进化代数,即迭代次数sizepop=30; %种群规模pcross=0.4; %交叉概率选择,0和1之间pmutation=0.2; %变异概率选择,0和1之间 lenchrom=1; %每个变量的字串长度,如果是浮点变量,则长度都为1bound=0 3; %数据范围 individuals=struct('fitness',zeros(1,sizepop
25、), 'chrom',);%将种群信息定义为一个结构体avgfitness=; %每一代种群的平均适应度bestfitness=; %每一代种群的最佳适应度bestchrom=; %适应度最好的染色体 %初始化种群计算适应度值%初始化种群for i=1:sizepop %随机产生一个种群 individuals.chrom(i,:)=Code(lenchrom,bound); x=individuals.chrom(i,:); %计算适应度 individuals.fitness(i)=fun(x); %染色体的适应度end%找最好的染色体bestfitness bestind
26、ex=max(individuals.fitness);bestchrom=individuals.chrom(bestindex,:); %最好的染色体avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度%记录每一代进化中最好的适应度和平均适应度trace=avgfitness bestfitness; %迭代寻优%进化开始for i=1:maxgen i %选择 individuals=Select(individuals,sizepop); avgfitness=sum(individuals.fitness)/sizepop;
27、%交叉 individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound); %变异 individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,i maxgen,bound); %计算适应度 for j=1:sizepop x=individuals.chrom(j,:); %解码 individuals.fitness(j)=fun(x); end %找到最小和最大适应度的染色体及它们在种群中的位置 newbestfitness,newbestindex=max(individuals.fitness); worestfitness,worestindex=min(individuals.fitness); %代替上一次进化中最好的染色体 if bestfitness<newbestfitness bestfitness=newbestfitness; bestchrom=individuals.chrom(newbestindex,:); end individuals.chrom(worestindex,:)=bestchrom; individuals.fitne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机关卫生检查奖惩制度
- 通信工程资料员奖惩制度
- 私立学校老师奖惩制度
- 护士科室奖惩制度实施细则
- 化工安全隐患奖惩制度
- 绿化苗木管护及奖惩制度
- 工程项目奖惩制度方案模板
- 监理内部项目奖惩制度
- 五常安全管理奖惩制度
- 惠州市惠来商会奖惩制度
- 关于组织2026年春季新员工入职培训的通知函9篇范本
- 2025年江西旅游商贸职业学院单招职业适应性测试题库及答案解析
- 播种绿色希望共建美丽校园2026植树节主题教育课件
- 2026年海南软件职业技术学院单招综合素质考试题库及答案解析
- 2025年安庆市生态环境保护综合行政执法支队内勤辅助岗招聘笔试参考题库附带答案详解
- 公司文明卫生考核制度
- 2025中国南水北调集团新能源投资有限公司所属单位公开招聘34人笔试参考题库附带答案详解
- 《生成式人工智能应用实战》 课件全套 第1-10章:AI 与 AIGC 概述-AIGC应用综合实训
- 组合数学课件
- 生态环境材料 第2章 材料产业与生态环境
- 新教材教科版五年级上册科学 3-3《我们的水钟》课件
评论
0/150
提交评论