Skip to content

yangzigy/ga_optimization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ga_optimization

GA(Genetic Algorithm)通过遗传算法进行参数优化的框架

##文件组织

ga.py	遗传算法框架
test.py	一个1维测试案例
test3d.py	一个2维测试案例

test.py测试需要依赖matplotlib
##程序结构 算法流程由GA类组织,构造时输入维数和评价函数和种群数组,种群只需要构造好正确数量的数组即可,算法初始化时会初始化每个dna内的参数个数
种群为DNAbase,DNA结构为16位定点数数组,范围01,使用时需要将01的值域范围变换到需要用的范围内。
初始化算法完成后,由用户程序构造循环,调用run函数,算法会进行迭代,并调用评价函数。在循环过程中,可以进行结果输出,判断终止条件。
##算法流程

  • 构造:由客户输入种群数组(DNAbase对象数组),构造GA对象,传入参数个数、评价函数。
  • 初始化:客户直接访问GA类的配置成员,修改交叉位置,交叉位置变化,变异概率等。并调用ini函数初始化种群,评价第一批个体
  • 运行:
    • 所有得分累加,选取4分之1的DNA,进行交配
    • 交叉:按配置的交叉位置交叉,并按概率变化交叉位置
    • 变异:每个dna的每个参数单独进行变异,每个参数只变异一位,随机位置取反
    • 评价:调用评价函数,将分数存储到dna,分数越高越好,由于交配概率是根据分数进行轮盘赌,所以可以通过分数计算方法来修改交配概率
    • 学习:为了增加随机性,交配完成后所有个体统一进行贪婪学习,在自己邻域上进行小的跳变,只接受更好的解
    • 排序:按降序排序,覆盖后50%

About

python的遗传优化框架

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages