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

新建一个类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) # 实例化一个算法模板对象
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,368评论 0 3
  • 重新系统学习下C++;但是还是少了好多知识点;socket;unix;stl;boost等; C++ 教程 | 菜...
    kakukeme阅读 20,071评论 0 50
  • 《圆运动》p2。 植物个体的降沉升浮,即是说明宇宙大气的热的降沉升浮,即是人体热的降沉升浮。 宇宙中位在地面之际,...
    然_d5fe阅读 193评论 0 1
  • 清晨我遇见一枝枫叶 她躲过了我仓促的脚步 用她静止的血液 碧绿的灵魂与我对恃 回顾几千个日日夜夜 我丢失了与她接...
    炎炎冬日阅读 322评论 0 3
  • 文/罗恺 一笑而过 虽然把青春 都献给了执著 成功却依旧躲到 我们不能企及的角落 云说,不必在乎那么多 只要点亮这...
    罗恺阅读 1,486评论 28 58