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%