Skip to content
/ ga_bp Public

a back propagation neural network with genetic algorithm

Notifications You must be signed in to change notification settings

SureeLee/ga_bp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 

Repository files navigation

ga_bp

a back propagation neural network with genetic algorithm

利用遗传算法对bp神经网络进行权值优化 优化过后,loss收敛速度变快,收敛结果较为稳定,结果较未优化的相比小了一点,这说明遗传算法有一定的作用。 但效果不是特别显著,均方误差0.001,是现在最好的情况,也勉强还可以接受,到时候再挣扎一下...

.py说明

  1. ga_main.py

程序入口函数,定义ga一些参数,负责整体的ga_bp过程

  1. ga_encoding.py

ga编码函数,对所有的变量进行编码,这里采用的是二进制编码,实数编码准备在考虑一下

  1. ga_decoding.py

ga解码函数,对编码后的二进制码进行解码,转换成十进制形式

  1. ga_calObject.py

计算目标值,是调用神经网络的函数

  1. ga_calFitness.py

计算每一代种群中的最优个体

  1. ga_replace.py

个体替换函数,用上一代最优个体替换本代最差个体

  1. ga_selection.py

ga选择函数,以轮盘赌的方式选择一些个体组成新的种群,淘汰掉一些目标值较低的个体

  1. ga_crossover.py

ga交叉函数,以一定概率选择两个个体进行交叉

  1. ga_mutation.py

ga变异函数,以一定概率选择个体进行变异

  1. ga_getBest.py

从所有代中选择一代最优种群

  1. bp_object.py

该函数位于ga_calObject.py中,用于计算loss,并返回loss的倒数作为目标值

  1. bp_train.py

遗传算法迭代结束后选择最优权值传入此文件中进行训练,达到优化效果

  1. 10790.csv

训练数据(打乱)

这是原始的一版ga_bp优化代码。如果允许,可以用作论文中实验(代码注释、结构、功能尚未优化,可以按需增改)。这里的采用的是二进制编码,接下来会用实数编码在写一个程序,看看是否会比二进制更好一些,同时也会不断修改这一版本的代码参数,力求更好。

Update-实数编码

  1. 增加了bp_test.py函数,该函数用来测试模型的性能,同时增加测试集3597.csv
  2. 在ga_bp文件内添加了ga_bp_real包,该包内的程序为实数编码的遗传算法,与上面二进制编码相对应。 主要的改变在于去掉了ga_decoding.py,修改了ga_encoding.py,ga_crossover.py,ga_mutation.py这几个文件。 相对于二进制编码来说,实数编码没有二进制和十进制转换问题,减少了一些可能的转换误差,同时也减少了计算量,按照网上和论文中的说法,应该更为准确。 但实际实验后并没有与二进制编码有所区别...可能是实验效果真的到了极限,但算法本身肯定也存在需要优化的地方。遗传算法种群的变化需要再优化。

About

a back propagation neural network with genetic algorithm

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages