遗传算法| Python Geatpy库

  • Post author:
  • Post category:python




1 Geatpy库的由来

由华南农业大学、暨南大学、华南理工大学等一批大佬们研发的超高性能、通用性强、能够轻松应用到实际工程项目之中的、能让用户快速上手进化算法的工具箱(遗传算法工具箱),详情见官网




2 Geatpy库的用途

Geatpy 是一个高性能实用型进化算法工具箱,提供了许多已实现的进化算法各项操作的函数,如初始化种群、选择、交叉、变异、多目标优化参考点生成、非支配排序、多目标优化 GD、IGD、HV 等指标的计算等等。



3 Geatpy库的案例



3.1 带约束的单目标优化问题

带约束的单目标优化问题



3.1.1 Python程序



问题描述程序
import numpy as np
import geatpy as ea

class MyProblem(ea.Problem):                # 继承Problem父类
    def __init__(self):
        name = 'MyProblem'                  # 初始化name(函数名称,可以随意设置)
        M = 1                               # 初始化M(目标维数)
        maxormins = [-1]                    # 初始化目标最小最大化标记列表,1:min;-1:max
        Dim = 3                             # 初始化Dim(决策变量维数)
        varTypes = [0] * Dim                # 初始化决策变量类型,0:连续;1:离散
        lb = [0,0,0]                        # 决策变量下界
        ub = [1,1,2]                        # 决策变量上界
        lbin = [1,1,0]                      # 决策变量下边界
        ubin = [1,1,0]                      # 决策变量上边界 # 调用父类构造方法完成实例化
        ea.Problem.__init__(self, name, M, maxormins, Dim, varTypes, lb, ub, lbin, ubin)

    def aimFunc(self, pop):                 # 目标函数,pop为传入的种群对象
        Vars = pop.Phen                     # 得到决策变量矩阵
        x1 = Vars[:, [0]]                   # 取出第一列得到所有个体的x1组成的列向量
        x2 = Vars[:, [1]]                   # 取出第二列得到所有个体的x2组成的列向量
        x3 = Vars[:, [2]]                   # 取出第三列得到所有个体的x3组成的列向量
        # 计算目标函数值,赋值给pop种群对象的ObjV属性
        pop.ObjV = 4*x1 + 2*x2 + x3
        # 采用可行性法则处理约束,生成种群个体违反约束程度矩阵
       



版权声明:本文为qq_36658406原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。