美文网首页
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