美文网首页
geatpy 自定义停止(终止进化)条件

geatpy 自定义停止(终止进化)条件

作者: holyhigh_04b9 | 来源:发表于2020-03-19 13:40 被阅读0次

    新建一个类MySoea_DE_rand_1_L_templet 继承一模板类如ea.soea_DE_rand_1_L_templet,重写terminated 方法

    # -*- coding: utf-8 -*-
    import geatpy as ea  # 导入geatpy库
    from sys import path as paths
    from os import path
    
    paths.append(path.split(path.split(path.realpath(__file__))[0])[0])
    
    
    class MySoea_DE_rand_1_L_templet(ea.soea_DE_rand_1_L_templet):
    
        def __init__(self, problem, population):
            ea.soea_DE_rand_1_L_templet.__init__(self, problem, population)  # 先调用父类构造方法
    
        def terminated(self, population):
    
            """
            描述:
                该函数用于判断是否应该终止进化,population为传入的种群
                重写终止进化方法,得到最优目标值
            """
            self.stat(population)  # 分析记录当代种群的数据
            # 判断是否终止进化,由于代数是从0数起,因此在比较currentGen和MAXGEN时需要对currentGen加1
            if self.currentGen + 1 >= self.MAXGEN or self.forgetCount >= self.maxForgetCount or self.trappedCount >= self.maxTrappedCount:
                print("结束迭代")
                return True
            else:
                self.preObjV = self.obj_trace[self.currentGen, 1]  # 更新“前代最优目标函数值记录器”
                self.currentGen += 1  # 进化代数+1
                return False
    

    在main函数里面,将:

    myAlgorithm = ea.soea_DE_rand_1_L_templet(problem, population) # 实例化一个算法模板对象
    

    替换成:

    myAlgorithm = MySoea_DE_rand_1_L_templet(problem, population) # 实例化一个算法模板对象
    

    相关文章

      网友评论

          本文标题:geatpy 自定义停止(终止进化)条件

          本文链接:https://www.haomeiwen.com/subject/jntlyhtx.html