ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

基于遗传算法的BP神经网络

2022-09-13 22:31:39  阅读:210  来源: 互联网

标签:编码 货运量 函数 -- 神经网络 适应度 BP 遗传算法 参数


原文链接
介绍:利用遗传算法并行地优化BP网络的权值和阈值,从而避免了BP网络在优化权值和阈值时陷入局部最优的缺点。

背景:此项目的背景为客运量和货运量的预测。
文件介绍

  1. freightFlow.xlsx : 货运量数据集,前7列为影响货运量的因素,第8列为货运量;
  2. passengerFlow.xlsx: 客运量数据集,前7列为影响货运量的因素,第8列为客运量;
  3. Data.mat:这是一个结构体,成员P为从客运量数据集,成员F为货运量数据集;
  4. 其他为源文件。

函数概述

  1. mainFun():主函数,完成训练和预测;
  2. normInit():数据获取,存入结构体Data.mat;
  3. gadecod():对输入的染色体编码,编码方式一般有两种,实数编码和二进制编码(此项目中对应的为实数编码,所以编码后的值即为解码后的值);
  4. getBPinfo():获取BP网络的基本信息;
  5. gabpEval():计算适应度。

GAOT使用说明

因为项目中用到了GAOT工具包中的函数,所以需要将GAOT工具包加入路径。操作步骤为:

  1. 点击高特文件;
  2. 添加到路径;
  3. 选定文件夹和子文件夹。
    这样,工程中就可以调用GAOT工具包中的函数了。

初始种群的生成

[pop]=initializega(num,bounds,eevalFN,eevalOps,options)
  • 【输出参数】

pop:生成的初始种群

  • 【输入参数】

num:种群中的个体数目
bounds:代表变量的上下界的矩阵
eevalFN:适应度函数
eevalOps:传递给适应度函数的参数
options:选择编码形式(浮点编码或是二进制编码)[precision F_or_B]
precision:变量进行二进制编码时指定的精度
F_or_B:为1时选择浮点编码,否则为二进制编码,由precision指定精度)

遗传算法函数

[x,endPop,bPop,traceInfo]=ga(bounds,evalFN,evalOps,startPop,opts,termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)
【输出参数】
x--求得的最优解
endPop--最终得到的种群
bPop--最优种群的一个搜索轨迹
traceInfo--每一代的最好的适应度和平均适应度
【输入参数】
bounds--代表变量上下界的矩阵
evalFN--适应度函数
evalOps--传递给适应度函数的参数
startPop--初始种群
opts[epsilonprob_opsdisplay]--opts(1:2)等同于initializega的options参数,第三个参数控制是否输出,一般为0。如[1e-610]
termFN--终止函数的名称,如['maxGenTerm']
termOps--传递个终止函数的参数,如[100]
selectFN--选择函数的名称,如['normGeomSelect']
selectOps--传递个选择函数的参数,如[0.08]
xOverFNs--交叉函数名称表,以空格分开,如['arithXoverheuristicXoversimpleXover']
xOverOps--传递给交叉函数的参数表,如[20;23;20]
mutFNs--变异函数表,如['boundaryMutationmultiNonUnifMutationnonUnifMutationunifMutation']
mutOps--传递给交叉函数的参数表,如[400;61003;41003;400]

标签:编码,货运量,函数,--,神经网络,适应度,BP,遗传算法,参数
来源: https://www.cnblogs.com/java-six/p/16691159.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有