其中$x_1, x_2, x_3, x_4, x_5$为决策变量。$-1 \leq x_1\leq 1 \ ; \ 0 \leq x_2\leq 4 \ ; \ 1 \leq x_3\leq 5 \ ; \ 1 \leq x_4\leq 2 \ ; \ 1 \leq x_5\leq 1$ 为每个决策变量的范围。下面来看该问题如何用Geatpy求解:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import geatpy as ea
import numpy as np
# 构建问题
r = 1 # 目标函数需要用到的额外数据
@ea.Problem.single
def evalVars(Vars): # 定义目标函数(含约束)
f = np.sum((Vars - r) ** 2) # 计算目标函数值
x1 = Vars[0]
x2 = Vars[1]
CV = np.array([(x1 - 0.5)**2 - 0.25,
(x2 - 1)**2 - 1]) # 计算违反约束程度
return f, CV
problem = ea.Problem(name='soea quick start demo',
M=1, # 目标维数
maxormins=[1], # 目标最小最大化标记列表,1:最小化该目标;-1:最大化该目标
Dim=5, # 决策变量维数
varTypes=[0, 0, 1, 1, 1], # 决策变量的类型列表,0:实数;1:整数
lb=[-1, 1, 2, 1, 0], # 决策变量下界
ub=[1, 4, 5, 2, 1], # 决策变量上界
evalVars=evalVars)
# 构建算法
algorithm = ea.soea_SEGA_templet(problem,
ea.Population(Encoding='RI', NIND=20),
MAXGEN=50, # 最大进化代数。
logTras=1, # 表示每隔多少代记录一次日志信息,0表示不记录。
trappedValue=1e-6, # 单目标优化陷入停滞的判断阈值。
maxTrappedCount=10) # 进化停滞计数器最大上限值。
# 求解
res = ea.optimize(algorithm, seed=1, verbose=True, drawing=1, outputMsg=True, drawLog=False, saveFlag=True, dirName='result')
|
================================================================================== gen| eval | f_opt | f_max | f_avg | f_min | f_std ---------------------------------------------------------------------------------- 0 | 20 | 9.18566E+00 | 9.18566E+00 | 9.18566E+00 | 9.18566E+00 | 0.00000E+00 1 | 40 | 5.78235E+00 | 9.18566E+00 | 8.33483E+00 | 5.78235E+00 | 1.47368E+00 2 | 60 | 5.78235E+00 | 1.01857E+01 | 8.44530E+00 | 5.78235E+00 | 1.56014E+00 3 | 80 | 5.18566E+00 | 9.18566E+00 | 7.10178E+00 | 5.18566E+00 | 1.70646E+00 4 | 100 | 2.18566E+00 | 5.78235E+00 | 5.31974E+00 | 2.18566E+00 | 1.00074E+00 5 | 120 | 2.18566E+00 | 5.71252E+00 | 4.47875E+00 | 2.18566E+00 | 1.38039E+00 6 | 140 | 2.18566E+00 | 5.18566E+00 | 2.88560E+00 | 2.18566E+00 | 1.09847E+00 7 | 160 | 2.02037E+00 | 2.18566E+00 | 2.15260E+00 | 2.02037E+00 | 6.61145E-02 8 | 180 | 2.00000E+00 | 2.18565E+00 | 2.02762E+00 | 2.00000E+00 | 3.65244E-02 9 | 200 | 2.00000E+00 | 2.02037E+00 | 2.01625E+00 | 2.00000E+00 | 8.12936E-03 10| 220 | 2.00000E+00 | 2.02037E+00 | 2.00908E+00 | 2.00000E+00 | 9.96122E-03 11| 240 | 1.00000E+00 | 2.00000E+00 | 1.95000E+00 | 1.00000E+00 | 2.17945E-01 12| 260 | 1.00000E+00 | 2.00000E+00 | 1.80000E+00 | 1.00000E+00 | 4.00000E-01 13| 280 | 1.00000E+00 | 2.00000E+00 | 1.45000E+00 | 1.00000E+00 | 4.97494E-01 14| 300 | 1.00000E+00 | 1.00000E+00 | 1.00000E+00 | 1.00000E+00 | 0.00000E+00 15| 320 | 1.00000E+00 | 1.00000E+00 | 1.00000E+00 | 1.00000E+00 | 0.00000E+00 16| 340 | 1.00000E+00 | 1.00000E+00 | 1.00000E+00 | 1.00000E+00 | 0.00000E+00
Execution time: 0.024933338165283203 s Evaluation number: 340 The best objective value is: 1.0 The best variables are: 1.0 1.0 2.0 1.0 1.0
同样是求解案例1的问题,这里我们在定义目标函数时不加ea.Problem.single标记。这意味着evalVars()传入的是一个Numpy ndarray二维数组。下面直接看代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # 构建问题
r = 1 # 模拟该案例问题计算目标函数时需要用到的额外数据
def evalVars(Vars): # 定义目标函数(含约束)
ObjV = np.sum((Vars - r) ** 2, 1, keepdims=True) # 计算目标函数值
x1 = Vars[:, [0]] # 把Vars的第0列取出来
x2 = Vars[:, [1]] # 把Vars的第1列取出来
CV = np.hstack([(x1 - 0.5) ** 2 - 0.25,
(x2 - 1) ** 2 - 1]) # 计算违反约束程度
return ObjV, CV # 返回目标函数值矩阵和违反约束程度矩阵
problem = ea.Problem(name='soea quick start demo',
M=1, # 目标维数
maxormins=[1], # 目标最小最大化标记列表,1:最小化该目标;-1:最大化该目标
Dim=5, # 决策变量维数
varTypes=[0, 0, 1, 1, 1], # 决策变量的类型列表,0:实数;1:整数
lb=[-1, 1, 2, 1, 0], # 决策变量下界
ub=[1, 4, 5, 2, 1], # 决策变量上界
evalVars=evalVars)
# 构建算法
algorithm = ea.soea_SEGA_templet(problem,
ea.Population(Encoding='RI', NIND=20),
MAXGEN=50, # 最大进化代数。
logTras=1, # 表示每隔多少代记录一次日志信息,0表示不记录。
trappedValue=1e-6, # 单目标优化陷入停滞的判断阈值。
maxTrappedCount=10) # 进化停滞计数器最大上限值。
# 求解
res = ea.optimize(algorithm, seed=1, verbose=True, drawing=1, outputMsg=True, drawLog=False, saveFlag=True, dirName='result')
|
================================================================================== gen| eval | f_opt | f_max | f_avg | f_min | f_std ---------------------------------------------------------------------------------- 0 | 20 | 9.18566E+00 | 9.18566E+00 | 9.18566E+00 | 9.18566E+00 | 0.00000E+00 1 | 40 | 5.78235E+00 | 9.18566E+00 | 8.33483E+00 | 5.78235E+00 | 1.47368E+00 2 | 60 | 5.78235E+00 | 1.01857E+01 | 8.44530E+00 | 5.78235E+00 | 1.56014E+00 3 | 80 | 5.18566E+00 | 9.18566E+00 | 7.10178E+00 | 5.18566E+00 | 1.70646E+00 4 | 100 | 2.18566E+00 | 5.78235E+00 | 5.31974E+00 | 2.18566E+00 | 1.00074E+00 5 | 120 | 2.18566E+00 | 5.71252E+00 | 4.47875E+00 | 2.18566E+00 | 1.38039E+00 6 | 140 | 2.18566E+00 | 5.18566E+00 | 2.88560E+00 | 2.18566E+00 | 1.09847E+00 7 | 160 | 2.02037E+00 | 2.18566E+00 | 2.15260E+00 | 2.02037E+00 | 6.61145E-02 8 | 180 | 2.00000E+00 | 2.18565E+00 | 2.02762E+00 | 2.00000E+00 | 3.65244E-02 9 | 200 | 2.00000E+00 | 2.02037E+00 | 2.01625E+00 | 2.00000E+00 | 8.12936E-03 10| 220 | 2.00000E+00 | 2.02037E+00 | 2.00908E+00 | 2.00000E+00 | 9.96122E-03 11| 240 | 1.00000E+00 | 2.00000E+00 | 1.95000E+00 | 1.00000E+00 | 2.17945E-01 12| 260 | 1.00000E+00 | 2.00000E+00 | 1.80000E+00 | 1.00000E+00 | 4.00000E-01 13| 280 | 1.00000E+00 | 2.00000E+00 | 1.45000E+00 | 1.00000E+00 | 4.97494E-01 14| 300 | 1.00000E+00 | 1.00000E+00 | 1.00000E+00 | 1.00000E+00 | 0.00000E+00 15| 320 | 1.00000E+00 | 1.00000E+00 | 1.00000E+00 | 1.00000E+00 | 0.00000E+00 16| 340 | 1.00000E+00 | 1.00000E+00 | 1.00000E+00 | 1.00000E+00 | 0.00000E+00
Execution time: 0.017951250076293945 s Evaluation number: 340 The best objective value is: 1.0 The best variables are: 1.0 1.0 2.0 1.0 1.0
可以发现,发生最大变化的是目标函数的定义上。不加ea.Problem.single标记后,传入目标函数evalVars()的参数Vars是一个Numpy ndarray二维数组。它是NIND行Dim列。NIND即种群的个体数,即种群规模;Dim即自定义的问题的决策变量个数。
因此我们可以用Numpy向量化的方法同时算出所有个体对应的目标函数值和违反约束程度值。结果分别保存为ObjV和CV。其中ObjV是一个NIND行1列的Numpy ndarray二维数组。CV是一个NIND行2列的Numpy ndarray二维数组。
用NSGA2算法求解下面的双目标优化问题:
$$min\ f(x_1) = x_1^2$$$$min\ f(x_1) = (x_1-2)^2$$$$s.t.\ \ x_1^2 - 2.5x_1^2+1.5\geq0$$下面展示第二种风格——“面向对象”风格的写法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | class MyProblem(ea.Problem): # 继承Problem父类
def __init__(self):
name = 'MyProblem' # 初始化name(函数名称,可以随意设置)
M = 2 # 优化目标个数
maxormins = [1] * M # 初始化maxormins(目标最小最大化标记列表,1:最小化该目标;-1:最大化该目标)
Dim = 1 # 初始化Dim(决策变量维数)
varTypes = [0] # 初始化varTypes(决策变量的类型,0:实数;1:整数)
lb = [-10] # 决策变量下界
ub = [10] # 决策变量上界
lbin = [1] # 决策变量下边界(0表示不包含该变量的下边界,1表示包含)
ubin = [1] # 决策变量上边界(0表示不包含该变量的上边界,1表示包含)
# 调用父类构造方法完成实例化
ea.Problem.__init__(self, name, M, maxormins, Dim, varTypes, lb, ub, lbin, ubin)
def evalVars(self, Vars): # 目标函数
f1 = Vars ** 2
f2 = (Vars - 2) ** 2
ObjV = np.hstack([f1, f2]) # 计算目标函数值矩阵
CV = -Vars ** 2 + 2.5 * Vars - 1.5 # 构建违反约束程度矩阵
return ObjV, CV
# 实例化问题对象
problem = MyProblem()
# 构建算法
algorithm = ea.moea_NSGA2_templet(problem,
ea.Population(Encoding='RI', NIND=50),
MAXGEN=200, # 最大进化代数
logTras=0) # 表示每隔多少代记录一次日志信息,0表示不记录。
# 求解
res = ea.optimize(algorithm, seed=1, verbose=False, drawing=1, outputMsg=True, drawLog=False, saveFlag=False, dirName='result')
|
Execution time: 0.18354249000549316 s Evaluation number: 10000 The number of non-dominated solutions is: 50 hv: 0.83020 spacing: 0.03503
这里通过构建geatpy问题类Problem的子类来定义问题。第14行定义了目标函数evalVars,它重写了Problem类中的evalVars()。注意这个名字不能随便更改。Geatpy的Problem问题类提供两种目标函数的定义,分别是evalVars和aimFunc。前者(evalVars)是Geatpy2.7.0之后新增的写法,它传入决策变量矩阵Vars且需要返回对应的目标函数值矩阵ObjV和违反约束程度矩阵CV(若待求解的问题没有约束条件,则可以只返回目标函数矩阵)。后者(aimFunc)是传统的写法,它传入一个种群对象,且不需要返回值。
采用aimFunc()的传统写法如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | class MyProblem(ea.Problem): # 继承Problem父类
def __init__(self):
name = 'MyProblem' # 初始化name(函数名称,可以随意设置)
M = 2 # 优化目标个数
maxormins = [1] * M # 初始化maxormins(目标最小最大化标记列表,1:最小化该目标;-1:最大化该目标)
Dim = 1 # 初始化Dim(决策变量维数)
varTypes = [0] # 初始化varTypes(决策变量的类型,0:实数;1:整数)
lb = [-10] # 决策变量下界
ub = [10] # 决策变量上界
lbin = [1] # 决策变量下边界(0表示不包含该变量的下边界,1表示包含)
ubin = [1] # 决策变量上边界(0表示不包含该变量的上边界,1表示包含)
# 调用父类构造方法完成实例化
ea.Problem.__init__(self, name, M, maxormins, Dim, varTypes, lb, ub, lbin, ubin)
def aimFunc(self, pop): # 目标函数
Vars = pop.Phen # 获取决策变量矩阵,它等于种群的表现型矩阵Phen
f1 = Vars ** 2
f2 = (Vars - 2) ** 2
pop.ObjV = np.hstack([f1, f2]) # 计算目标函数值矩阵,赋值给种群对象的ObjV属性
pop.CV = -Vars ** 2 + 2.5 * Vars - 1.5 # 构建违反约束程度矩阵,赋值给种群对象的CV属性
# 实例化问题对象
problem = MyProblem()
# 构建算法
algorithm = ea.moea_NSGA2_templet(problem,
ea.Population(Encoding='RI', NIND=50),
MAXGEN=200, # 最大进化代数
logTras=0) # 表示每隔多少代记录一次日志信息,0表示不记录。
# 求解
res = ea.optimize(algorithm, seed=1, verbose=False, drawing=1, outputMsg=True, drawLog=False, saveFlag=False, dirName='result')
|
Execution time: 0.18051934242248535 s Evaluation number: 10000 The number of non-dominated solutions is: 50 hv: 0.83020 spacing: 0.03503
Geatpy的种群信息保存在种群对象中。Geatpy中有Population单染色体种群类(每个个体只有一条染色体)和PsyPopulation多染色体种群类(每个个体有多条染色体)。Population种群对象主要拥有以下属性:Encoding(染色体编码方式)、sizes(种群规模)、ChromNum(染色体条数(Population类的对象这里ChromNum固定为1))、Field(译码矩阵)、Chrom(染色体矩阵)、Lind(染色体长度)、ObjV(目标函数值矩阵)、FitnV(适应度列向量)、CV(违反约束程度值矩阵)、Phen(种群表现型矩阵(等价于决策变量组成的矩阵))。【详见《Geatpy数据结构》文档】
调用内置的benchmark测试问题。
Geatpy2.7.0把已实现的测试问题归档进了benchmarks文件夹中。比如ZDT1、DTLZ1、WFG1,等等。以DTLZ1为例,可以通过ea.benchmarks.DTLZ1()直接实例化DTLZ1问题对象。用NSGA3算法求解DTLZ1的代码如下:
1 2 3 4 5 6 7 8 | problem = ea.benchmarks.DTLZ1() # 生成问题对象
# 构建算法
algorithm = ea.moea_NSGA3_templet(problem,
ea.Population(Encoding='RI', NIND=100),
MAXGEN=500, # 最大进化代数。
logTras=1) # 表示每隔多少代记录一次日志信息,0表示不记录。
# 求解
res = ea.optimize(algorithm, verbose=True, drawing=1, outputMsg=True, drawLog=True, saveFlag=True, dirName='result')
|
==================================================================== gen| eval | gd | igd | hv | spacing -------------------------------------------------------------------- 0 | 91 | 3.96479E+01 | 2.42502E+01 | 9.38679E-01 | 4.27818E+01 1 | 182 | 2.81397E+01 | 2.42502E+01 | 9.56152E-01 | 3.15477E+01 2 | 273 | 3.13202E+01 | 2.42502E+01 | 9.70283E-01 | 2.70820E+01 3 | 364 | 2.55742E+01 | 2.22385E+01 | 9.76947E-01 | 2.26611E+01 4 | 455 | 2.35778E+01 | 2.22385E+01 | 9.86577E-01 | 2.19661E+01 5 | 546 | 2.28820E+01 | 2.22385E+01 | 9.83719E-01 | 2.34762E+01 6 | 637 | 2.02778E+01 | 2.22385E+01 | 9.84801E-01 | 1.61897E+01 7 | 728 | 1.72585E+01 | 1.68711E+01 | 9.91299E-01 | 2.20261E+01 8 | 819 | 1.33042E+01 | 1.68711E+01 | 9.94441E-01 | 2.35146E+01 9 | 910 | 1.30743E+01 | 1.68711E+01 | 9.96596E-01 | 2.77635E+01 10| 1001 | 1.15303E+01 | 1.52343E+01 | 9.96534E-01 | 2.64180E+01 11| 1092 | 9.43586E+00 | 1.48756E+01 | 9.95757E-01 | 1.55842E+01 12| 1183 | 8.54084E+00 | 1.48756E+01 | 9.87280E-01 | 1.74455E+01 13| 1274 | 8.80717E+00 | 1.22954E+01 | 9.91666E-01 | 6.75354E+00 14| 1365 | 5.28915E+00 | 9.15144E+00 | 9.63927E-01 | 3.78856E+00 15| 1456 | 4.29518E+00 | 9.15144E+00 | 9.48027E-01 | 3.07791E+00 16| 1547 | 3.79969E+00 | 9.15144E+00 | 9.38346E-01 | 2.80154E+00 17| 1638 | 3.33606E+00 | 8.30321E+00 | 9.30427E-01 | 3.16711E+00 18| 1729 | 2.99804E+00 | 8.30321E+00 | 9.37197E-01 | 2.08625E+00 19| 1820 | 2.89614E+00 | 4.22453E+00 | 9.58036E-01 | 2.42142E+00 20| 1911 | 2.73688E+00 | 4.22453E+00 | 9.65410E-01 | 2.31642E+00 21| 2002 | 3.00568E+00 | 4.22453E+00 | 9.76832E-01 | 2.19111E+00 22| 2093 | 3.10742E+00 | 4.22453E+00 | 9.83311E-01 | 2.49353E+00 23| 2184 | 2.94826E+00 | 4.22453E+00 | 9.76362E-01 | 2.66646E+00 24| 2275 | 2.66212E+00 | 4.22453E+00 | 9.78122E-01 | 1.70634E+00 25| 2366 | 2.23245E+00 | 4.22453E+00 | 9.32329E-01 | 1.67545E+00 26| 2457 | 2.08818E+00 | 4.22453E+00 | 9.38285E-01 | 1.14859E+00 27| 2548 | 1.75883E+00 | 1.98547E+00 | 9.63812E-01 | 1.74940E+00 28| 2639 | 1.75489E+00 | 1.98547E+00 | 9.46858E-01 | 1.99731E+00 29| 2730 | 1.28158E+00 | 1.98547E+00 | 9.53973E-01 | 2.25296E+00 30| 2821 | 1.62061E+00 | 1.98547E+00 | 8.45843E-01 | 1.42049E+00 31| 2912 | 1.35267E+00 | 1.15977E+00 | 8.98583E-01 | 1.03436E+00 32| 3003 | 1.21341E+00 | 1.15977E+00 | 9.23075E-01 | 9.18965E-01 33| 3094 | 1.19111E+00 | 1.15977E+00 | 9.30503E-01 | 9.15756E-01 34| 3185 | 1.00938E+00 | 6.21955E-01 | 9.52549E-01 | 8.04634E-01 35| 3276 | 9.35117E-01 | 6.21955E-01 | 9.55561E-01 | 6.34835E-01 36| 3367 | 7.79547E-01 | 6.21955E-01 | 9.29648E-01 | 6.83053E-01 37| 3458 | 6.98846E-01 | 6.21955E-01 | 9.35118E-01 | 6.45311E-01 38| 3549 | 6.90742E-01 | 6.21955E-01 | 9.46152E-01 | 5.85524E-01 39| 3640 | 6.36354E-01 | 6.04107E-01 | 9.44670E-01 | 5.66819E-01 40| 3731 | 6.18839E-01 | 6.04107E-01 | 9.22806E-01 | 4.80171E-01 41| 3822 | 5.59235E-01 | 6.04107E-01 | 9.45532E-01 | 5.80763E-01 42| 3913 | 5.01120E-01 | 6.04107E-01 | 9.48321E-01 | 5.57285E-01 43| 4004 | 4.27375E-01 | 6.04107E-01 | 9.08193E-01 | 4.00536E-01 44| 4095 | 3.89928E-01 | 6.04107E-01 | 9.12617E-01 | 4.20799E-01 45| 4186 | 3.76715E-01 | 6.04107E-01 | 9.15063E-01 | 3.89399E-01 46| 4277 | 3.20492E-01 | 6.01495E-01 | 9.43977E-01 | 3.22835E-01 47| 4368 | 2.83244E-01 | 5.81160E-01 | 9.51379E-01 | 2.10604E-01 48| 4459 | 2.22725E-01 | 5.76902E-01 | 9.40766E-01 | 2.64583E-01 49| 4550 | 2.03206E-01 | 5.74037E-01 | 9.37103E-01 | 2.49998E-01 50| 4641 | 1.76807E-01 | 5.73874E-01 | 9.40475E-01 | 2.34842E-01 51| 4732 | 1.69964E-01 | 5.36950E-01 | 9.23052E-01 | 2.15199E-01 52| 4823 | 1.27910E-01 | 5.35429E-01 | 8.34636E-01 | 1.43359E-01 53| 4914 | 1.17192E-01 | 4.81780E-01 | 8.72773E-01 | 1.48809E-01 54| 5005 | 1.10831E-01 | 4.81780E-01 | 8.62434E-01 | 1.33024E-01 55| 5096 | 1.02395E-01 | 4.81780E-01 | 8.33140E-01 | 1.31995E-01 56| 5187 | 8.24021E-02 | 4.79654E-01 | 8.33565E-01 | 9.78327E-02 57| 5278 | 9.01399E-02 | 4.53100E-01 | 8.40332E-01 | 8.82762E-02 58| 5369 | 7.95930E-02 | 4.42913E-01 | 8.54878E-01 | 8.04127E-02 59| 5460 | 9.14707E-02 | 3.70390E-01 | 8.78508E-01 | 1.39354E-01 60| 5551 | 7.97090E-02 | 3.70229E-01 | 8.82385E-01 | 1.13181E-01 61| 5642 | 7.46105E-02 | 3.63704E-01 | 8.97355E-01 | 7.38358E-02 62| 5733 | 7.44709E-02 | 3.45710E-01 | 9.08077E-01 | 7.63767E-02 63| 5824 | 7.19506E-02 | 2.72762E-01 | 9.27153E-01 | 9.98810E-02 64| 5915 | 8.26707E-02 | 2.45394E-01 | 9.10164E-01 | 1.37001E-01 65| 6006 | 7.45846E-02 | 2.38712E-01 | 9.06915E-01 | 1.33429E-01 66| 6097 | 6.71585E-02 | 2.37136E-01 | 9.08313E-01 | 1.14200E-01 67| 6188 | 6.80434E-02 | 2.17472E-01 | 8.96719E-01 | 1.16046E-01 68| 6279 | 6.13246E-02 | 1.61333E-01 | 9.05442E-01 | 1.08815E-01 69| 6370 | 5.67172E-02 | 1.52114E-01 | 9.13557E-01 | 1.00160E-01 70| 6461 | 4.99210E-02 | 1.52107E-01 | 9.15801E-01 | 1.01972E-01 71| 6552 | 3.75900E-02 | 1.42971E-01 | 8.55121E-01 | 9.03648E-02 72| 6643 | 3.89154E-02 | 1.36625E-01 | 8.76347E-01 | 8.87029E-02 73| 6734 | 3.42653E-02 | 1.12652E-01 | 8.96810E-01 | 7.39541E-02 74| 6825 | 2.72591E-02 | 1.03812E-01 | 8.88004E-01 | 5.30880E-02 75| 6916 | 1.96472E-02 | 1.01944E-01 | 8.94116E-01 | 5.06404E-02 76| 7007 | 1.71848E-02 | 1.01580E-01 | 8.95909E-01 | 5.22902E-02 77| 7098 | 1.53581E-02 | 9.85496E-02 | 9.02608E-01 | 4.94641E-02 78| 7189 | 1.35666E-02 | 9.25536E-02 | 8.96388E-01 | 4.33395E-02 79| 7280 | 1.13329E-02 | 8.52341E-02 | 8.75846E-01 | 4.02893E-02 80| 7371 | 1.05642E-02 | 8.36168E-02 | 8.78050E-01 | 3.49787E-02 81| 7462 | 8.40517E-03 | 7.61089E-02 | 8.62204E-01 | 3.29591E-02 82| 7553 | 7.26557E-03 | 7.37465E-02 | 8.61936E-01 | 3.86005E-02 83| 7644 | 6.41213E-03 | 6.75790E-02 | 8.68884E-01 | 3.18537E-02 84| 7735 | 5.56357E-03 | 6.08316E-02 | 8.55900E-01 | 3.23118E-02 85| 7826 | 5.19212E-03 | 5.99305E-02 | 8.55805E-01 | 3.45463E-02 86| 7917 | 4.99784E-03 | 5.76599E-02 | 8.59610E-01 | 3.29122E-02 87| 8008 | 4.67971E-03 | 5.30955E-02 | 8.65368E-01 | 3.63719E-02 88| 8099 | 4.61958E-03 | 5.17206E-02 | 8.66791E-01 | 4.05033E-02 89| 8190 | 4.54174E-03 | 4.70573E-02 | 8.72090E-01 | 3.81643E-02 90| 8281 | 4.58897E-03 | 4.55624E-02 | 8.68150E-01 | 3.53575E-02 91| 8372 | 4.54120E-03 | 4.57393E-02 | 8.67988E-01 | 3.54077E-02 92| 8463 | 4.57687E-03 | 4.36251E-02 | 8.70167E-01 | 3.36630E-02 93| 8554 | 3.92744E-03 | 4.33768E-02 | 8.26815E-01 | 2.94686E-02 94| 8645 | 3.83761E-03 | 4.27227E-02 | 8.26569E-01 | 3.02374E-02 95| 8736 | 3.82791E-03 | 4.31725E-02 | 8.25740E-01 | 3.15445E-02 96| 8827 | 3.76951E-03 | 4.18332E-02 | 8.28844E-01 | 2.92948E-02 97| 8918 | 3.73054E-03 | 4.11206E-02 | 8.30176E-01 | 2.73562E-02 98| 9009 | 3.46244E-03 | 4.08822E-02 | 8.30464E-01 | 2.67440E-02 99| 9100 | 3.37324E-03 | 3.99456E-02 | 8.33389E-01 | 2.60792E-02 100| 9191 | 3.29789E-03 | 3.92330E-02 | 8.28012E-01 | 2.53702E-02 101| 9282 | 2.93391E-03 | 3.72747E-02 | 8.32130E-01 | 2.23537E-02 102| 9373 | 2.68001E-03 | 3.65737E-02 | 8.32901E-01 | 2.30292E-02 103| 9464 | 2.58854E-03 | 3.64545E-02 | 8.33503E-01 | 2.25631E-02 104| 9555 | 2.52016E-03 | 3.61174E-02 | 8.34371E-01 | 2.42863E-02 105| 9646 | 2.50855E-03 | 3.55239E-02 | 8.35284E-01 | 2.47729E-02 106| 9737 | 2.48004E-03 | 3.47979E-02 | 8.37124E-01 | 2.18211E-02 107| 9828 | 2.43515E-03 | 3.43145E-02 | 8.37533E-01 | 2.09443E-02 108| 9919 | 2.42597E-03 | 3.37983E-02 | 8.38583E-01 | 1.99037E-02 109| 10010 | 2.38676E-03 | 3.35283E-02 | 8.39239E-01 | 2.03339E-02 110| 10101 | 2.36641E-03 | 3.32904E-02 | 8.38244E-01 | 2.06813E-02 111| 10192 | 2.32664E-03 | 3.26398E-02 | 8.38924E-01 | 2.00684E-02 112| 10283 | 2.28959E-03 | 3.17104E-02 | 8.40555E-01 | 1.70890E-02 113| 10374 | 2.25650E-03 | 3.15840E-02 | 8.41144E-01 | 1.60909E-02 114| 10465 | 2.19922E-03 | 3.10093E-02 | 8.41840E-01 | 1.60701E-02 115| 10556 | 2.19934E-03 | 3.10211E-02 | 8.41906E-01 | 1.52035E-02 116| 10647 | 2.16835E-03 | 3.03850E-02 | 8.42879E-01 | 1.45607E-02 117| 10738 | 2.06772E-03 | 2.97266E-02 | 8.44236E-01 | 1.42395E-02 118| 10829 | 2.07055E-03 | 2.93562E-02 | 8.44326E-01 | 1.18068E-02 119| 10920 | 2.04689E-03 | 2.92326E-02 | 8.44871E-01 | 1.17324E-02 120| 11011 | 2.00992E-03 | 2.90942E-02 | 8.45149E-01 | 1.45357E-02 121| 11102 | 1.94289E-03 | 2.86350E-02 | 8.45987E-01 | 1.33492E-02 122| 11193 | 1.86426E-03 | 2.86985E-02 | 8.39207E-01 | 1.57413E-02 123| 11284 | 1.84131E-03 | 2.85808E-02 | 8.39461E-01 | 1.60867E-02 124| 11375 | 1.83496E-03 | 2.85430E-02 | 8.39557E-01 | 1.58112E-02 125| 11466 | 1.83475E-03 | 2.85000E-02 | 8.39674E-01 | 1.58223E-02 126| 11557 | 1.76388E-03 | 2.80843E-02 | 8.34636E-01 | 1.27522E-02 127| 11648 | 1.73058E-03 | 2.75434E-02 | 8.35626E-01 | 1.23277E-02 128| 11739 | 1.64968E-03 | 2.70195E-02 | 8.36723E-01 | 1.24058E-02 129| 11830 | 1.63309E-03 | 2.68543E-02 | 8.36976E-01 | 1.14820E-02 130| 11921 | 1.60406E-03 | 2.67622E-02 | 8.36315E-01 | 1.14773E-02 131| 12012 | 1.55899E-03 | 2.65685E-02 | 8.36892E-01 | 1.13511E-02 132| 12103 | 1.53377E-03 | 2.63742E-02 | 8.37351E-01 | 1.14114E-02 133| 12194 | 1.47226E-03 | 2.59498E-02 | 8.38170E-01 | 1.16294E-02 134| 12285 | 1.44941E-03 | 2.58226E-02 | 8.38504E-01 | 1.12406E-02 135| 12376 | 1.39638E-03 | 2.55124E-02 | 8.39010E-01 | 1.11912E-02 136| 12467 | 1.36700E-03 | 2.51206E-02 | 8.39495E-01 | 1.02656E-02 137| 12558 | 1.35274E-03 | 2.50275E-02 | 8.39808E-01 | 9.87093E-03 138| 12649 | 1.31238E-03 | 2.48287E-02 | 8.40342E-01 | 9.84033E-03 139| 12740 | 1.30198E-03 | 2.47862E-02 | 8.40321E-01 | 7.33638E-03 140| 12831 | 1.27878E-03 | 2.47204E-02 | 8.38628E-01 | 7.81333E-03 141| 12922 | 1.22998E-03 | 2.45443E-02 | 8.37658E-01 | 7.01537E-03 142| 13013 | 1.21158E-03 | 2.44228E-02 | 8.37873E-01 | 6.70971E-03 143| 13104 | 1.17585E-03 | 2.43383E-02 | 8.38183E-01 | 6.46876E-03 144| 13195 | 1.14319E-03 | 2.41898E-02 | 8.38620E-01 | 6.59695E-03 145| 13286 | 1.12947E-03 | 2.40914E-02 | 8.38844E-01 | 6.39718E-03 146| 13377 | 1.10623E-03 | 2.39608E-02 | 8.39001E-01 | 6.21284E-03 147| 13468 | 1.07632E-03 | 2.38513E-02 | 8.39298E-01 | 6.34871E-03 148| 13559 | 1.06806E-03 | 2.37938E-02 | 8.39490E-01 | 6.36673E-03 149| 13650 | 1.06680E-03 | 2.37912E-02 | 8.39499E-01 | 6.09303E-03 150| 13741 | 1.07015E-03 | 2.38115E-02 | 8.38580E-01 | 6.00729E-03 151| 13832 | 1.06208E-03 | 2.37402E-02 | 8.38743E-01 | 5.83785E-03 152| 13923 | 1.05218E-03 | 2.36754E-02 | 8.38885E-01 | 5.66890E-03 153| 14014 | 1.03440E-03 | 2.36137E-02 | 8.38110E-01 | 5.63275E-03 154| 14105 | 9.81012E-04 | 2.34541E-02 | 8.38595E-01 | 5.45030E-03 155| 14196 | 9.78699E-04 | 2.34323E-02 | 8.38621E-01 | 5.50048E-03 156| 14287 | 9.73894E-04 | 2.33830E-02 | 8.38717E-01 | 5.51449E-03 157| 14378 | 9.77740E-04 | 2.33985E-02 | 8.38711E-01 | 5.44657E-03 158| 14469 | 9.76074E-04 | 2.33906E-02 | 8.38681E-01 | 5.47333E-03 159| 14560 | 9.72969E-04 | 2.33743E-02 | 8.38728E-01 | 5.65191E-03 160| 14651 | 9.71194E-04 | 2.33693E-02 | 8.38780E-01 | 5.65593E-03 161| 14742 | 9.56810E-04 | 2.32965E-02 | 8.38972E-01 | 5.67085E-03 162| 14833 | 9.48579E-04 | 2.32615E-02 | 8.39097E-01 | 5.71489E-03 163| 14924 | 9.41040E-04 | 2.32045E-02 | 8.38968E-01 | 5.51983E-03 164| 15015 | 9.43085E-04 | 2.31992E-02 | 8.38952E-01 | 5.38588E-03 165| 15106 | 9.35697E-04 | 2.31828E-02 | 8.39028E-01 | 5.40391E-03 166| 15197 | 9.15846E-04 | 2.31018E-02 | 8.39301E-01 | 5.23723E-03 167| 15288 | 9.07515E-04 | 2.30859E-02 | 8.39096E-01 | 5.35778E-03 168| 15379 | 8.92210E-04 | 2.30199E-02 | 8.39280E-01 | 5.44614E-03 169| 15470 | 8.75498E-04 | 2.29427E-02 | 8.39501E-01 | 5.41838E-03 170| 15561 | 8.60133E-04 | 2.28722E-02 | 8.39703E-01 | 5.39946E-03 171| 15652 | 8.49145E-04 | 2.28336E-02 | 8.39828E-01 | 5.54931E-03 172| 15743 | 8.37981E-04 | 2.27905E-02 | 8.39813E-01 | 5.78873E-03 173| 15834 | 8.32739E-04 | 2.27726E-02 | 8.39853E-01 | 5.76349E-03 174| 15925 | 8.27183E-04 | 2.27473E-02 | 8.39932E-01 | 5.67094E-03 175| 16016 | 8.13725E-04 | 2.26983E-02 | 8.40135E-01 | 5.69728E-03 176| 16107 | 7.98113E-04 | 2.26217E-02 | 8.40348E-01 | 5.59099E-03 177| 16198 | 7.95523E-04 | 2.26165E-02 | 8.40325E-01 | 5.58217E-03 178| 16289 | 7.78701E-04 | 2.25521E-02 | 8.40542E-01 | 5.79757E-03 179| 16380 | 7.38975E-04 | 2.24221E-02 | 8.40309E-01 | 5.67742E-03 180| 16471 | 7.37044E-04 | 2.24150E-02 | 8.40360E-01 | 5.65507E-03 181| 16562 | 7.34915E-04 | 2.24072E-02 | 8.40369E-01 | 5.67490E-03 182| 16653 | 7.31250E-04 | 2.23751E-02 | 8.40463E-01 | 5.18146E-03 183| 16744 | 7.27593E-04 | 2.23533E-02 | 8.40496E-01 | 5.02265E-03 184| 16835 | 7.21206E-04 | 2.23148E-02 | 8.40627E-01 | 4.63854E-03 185| 16926 | 7.11944E-04 | 2.22680E-02 | 8.40511E-01 | 4.64710E-03 186| 17017 | 7.13631E-04 | 2.22763E-02 | 8.40508E-01 | 4.63226E-03 187| 17108 | 7.02614E-04 | 2.22409E-02 | 8.40238E-01 | 4.42498E-03 188| 17199 | 7.00483E-04 | 2.22419E-02 | 8.40259E-01 | 4.69332E-03 189| 17290 | 6.97250E-04 | 2.22258E-02 | 8.40303E-01 | 4.68265E-03 190| 17381 | 6.87574E-04 | 2.21763E-02 | 8.40485E-01 | 3.87585E-03 191| 17472 | 6.79761E-04 | 2.21587E-02 | 8.40349E-01 | 3.84848E-03 192| 17563 | 6.62583E-04 | 2.20961E-02 | 8.40494E-01 | 3.81174E-03 193| 17654 | 6.53119E-04 | 2.20484E-02 | 8.40645E-01 | 3.70442E-03 194| 17745 | 6.49536E-04 | 2.20444E-02 | 8.39555E-01 | 3.74022E-03 195| 17836 | 6.48615E-04 | 2.20345E-02 | 8.39569E-01 | 3.64520E-03 196| 17927 | 6.37066E-04 | 2.19879E-02 | 8.38905E-01 | 3.70138E-03 197| 18018 | 6.34366E-04 | 2.19755E-02 | 8.38960E-01 | 3.69460E-03 198| 18109 | 6.35657E-04 | 2.19719E-02 | 8.38974E-01 | 3.79910E-03 199| 18200 | 6.29692E-04 | 2.19498E-02 | 8.39110E-01 | 3.74364E-03 200| 18291 | 6.12295E-04 | 2.18785E-02 | 8.39344E-01 | 3.74862E-03 201| 18382 | 6.10670E-04 | 2.18732E-02 | 8.39323E-01 | 3.75175E-03 202| 18473 | 6.12592E-04 | 2.18705E-02 | 8.39161E-01 | 3.78020E-03 203| 18564 | 6.03944E-04 | 2.18375E-02 | 8.39284E-01 | 3.63684E-03 204| 18655 | 5.98785E-04 | 2.18141E-02 | 8.39357E-01 | 3.46483E-03 205| 18746 | 5.93885E-04 | 2.18020E-02 | 8.38934E-01 | 3.45475E-03 206| 18837 | 5.86608E-04 | 2.17697E-02 | 8.39023E-01 | 2.78987E-03 207| 18928 | 5.62918E-04 | 2.16864E-02 | 8.39406E-01 | 2.90856E-03 208| 19019 | 5.57126E-04 | 2.16689E-02 | 8.39492E-01 | 2.81182E-03 209| 19110 | 5.54456E-04 | 2.16652E-02 | 8.39515E-01 | 2.51685E-03 210| 19201 | 5.40253E-04 | 2.16210E-02 | 8.38548E-01 | 2.52426E-03 211| 19292 | 5.29874E-04 | 2.15858E-02 | 8.38702E-01 | 2.43885E-03 212| 19383 | 5.28427E-04 | 2.15941E-02 | 8.38739E-01 | 2.75038E-03 213| 19474 | 5.21754E-04 | 2.15727E-02 | 8.38820E-01 | 2.77548E-03 214| 19565 | 5.10488E-04 | 2.15418E-02 | 8.38951E-01 | 2.85269E-03 215| 19656 | 5.04045E-04 | 2.15198E-02 | 8.39037E-01 | 2.88782E-03 216| 19747 | 5.02783E-04 | 2.15131E-02 | 8.39072E-01 | 2.89799E-03 217| 19838 | 5.02017E-04 | 2.15110E-02 | 8.39077E-01 | 2.87828E-03 218| 19929 | 4.97705E-04 | 2.14949E-02 | 8.39136E-01 | 2.74561E-03 219| 20020 | 4.93458E-04 | 2.14783E-02 | 8.39260E-01 | 2.64603E-03 220| 20111 | 4.91148E-04 | 2.14671E-02 | 8.39299E-01 | 2.63184E-03 221| 20202 | 4.84314E-04 | 2.14566E-02 | 8.39410E-01 | 2.50776E-03 222| 20293 | 4.72524E-04 | 2.14220E-02 | 8.39587E-01 | 2.58916E-03 223| 20384 | 4.69716E-04 | 2.14136E-02 | 8.39605E-01 | 2.66138E-03 224| 20475 | 4.66089E-04 | 2.13999E-02 | 8.39674E-01 | 2.65741E-03 225| 20566 | 4.61183E-04 | 2.13870E-02 | 8.39738E-01 | 2.65748E-03 226| 20657 | 4.56244E-04 | 2.13786E-02 | 8.39228E-01 | 2.58828E-03 227| 20748 | 4.53800E-04 | 2.13730E-02 | 8.39260E-01 | 2.57499E-03 228| 20839 | 4.50853E-04 | 2.13630E-02 | 8.39326E-01 | 2.62070E-03 229| 20930 | 4.47597E-04 | 2.13540E-02 | 8.39408E-01 | 2.62706E-03 230| 21021 | 4.46572E-04 | 2.13512E-02 | 8.39427E-01 | 2.62238E-03 231| 21112 | 4.39121E-04 | 2.13311E-02 | 8.39529E-01 | 2.54854E-03 232| 21203 | 4.40502E-04 | 2.13336E-02 | 8.39539E-01 | 2.58201E-03 233| 21294 | 4.21858E-04 | 2.12838E-02 | 8.39773E-01 | 2.42371E-03 234| 21385 | 4.21628E-04 | 2.12776E-02 | 8.39812E-01 | 2.47278E-03 235| 21476 | 4.14577E-04 | 2.12518E-02 | 8.39908E-01 | 2.43674E-03 236| 21567 | 4.05997E-04 | 2.12269E-02 | 8.40064E-01 | 2.55388E-03 237| 21658 | 3.97515E-04 | 2.12039E-02 | 8.40261E-01 | 2.56145E-03 238| 21749 | 3.94864E-04 | 2.11946E-02 | 8.40322E-01 | 2.52939E-03 239| 21840 | 3.89257E-04 | 2.11696E-02 | 8.40282E-01 | 2.48910E-03 240| 21931 | 3.82844E-04 | 2.11450E-02 | 8.40412E-01 | 2.46345E-03 241| 22022 | 3.79727E-04 | 2.11321E-02 | 8.40497E-01 | 2.27329E-03 242| 22113 | 3.75281E-04 | 2.11199E-02 | 8.40466E-01 | 2.25961E-03 243| 22204 | 3.67886E-04 | 2.10910E-02 | 8.40585E-01 | 2.22836E-03 244| 22295 | 3.62940E-04 | 2.10790E-02 | 8.40681E-01 | 2.24753E-03 245| 22386 | 3.49778E-04 | 2.10442E-02 | 8.40844E-01 | 1.96024E-03 246| 22477 | 3.49811E-04 | 2.10405E-02 | 8.40855E-01 | 1.94073E-03 247| 22568 | 3.47633E-04 | 2.10357E-02 | 8.40887E-01 | 1.94102E-03 248| 22659 | 3.47900E-04 | 2.10324E-02 | 8.40869E-01 | 1.91850E-03 249| 22750 | 3.45070E-04 | 2.10257E-02 | 8.40517E-01 | 1.90133E-03 250| 22841 | 3.43260E-04 | 2.10127E-02 | 8.40586E-01 | 1.95134E-03 251| 22932 | 3.38384E-04 | 2.10000E-02 | 8.40646E-01 | 1.92958E-03 252| 23023 | 3.39365E-04 | 2.10006E-02 | 8.40653E-01 | 1.92785E-03 253| 23114 | 3.38589E-04 | 2.09938E-02 | 8.40576E-01 | 1.76700E-03 254| 23205 | 3.39182E-04 | 2.09960E-02 | 8.40562E-01 | 1.85084E-03 255| 23296 | 3.34782E-04 | 2.09856E-02 | 8.40611E-01 | 1.82159E-03 256| 23387 | 3.33521E-04 | 2.09811E-02 | 8.40631E-01 | 1.82589E-03 257| 23478 | 3.31937E-04 | 2.09781E-02 | 8.40649E-01 | 1.81382E-03 258| 23569 | 3.30673E-04 | 2.09752E-02 | 8.40659E-01 | 1.84033E-03 259| 23660 | 3.31045E-04 | 2.09763E-02 | 8.40654E-01 | 1.83312E-03 260| 23751 | 3.27934E-04 | 2.09625E-02 | 8.40723E-01 | 1.94949E-03 261| 23842 | 3.26154E-04 | 2.09589E-02 | 8.40760E-01 | 1.85646E-03 262| 23933 | 3.25903E-04 | 2.09559E-02 | 8.40775E-01 | 1.84683E-03 263| 24024 | 3.23664E-04 | 2.09510E-02 | 8.40813E-01 | 1.83439E-03 264| 24115 | 3.23470E-04 | 2.09501E-02 | 8.40834E-01 | 1.81536E-03 265| 24206 | 3.22491E-04 | 2.09497E-02 | 8.40842E-01 | 1.82643E-03 266| 24297 | 3.22731E-04 | 2.09495E-02 | 8.40845E-01 | 1.82982E-03 267| 24388 | 3.21828E-04 | 2.09462E-02 | 8.40864E-01 | 1.66294E-03 268| 24479 | 3.20928E-04 | 2.09421E-02 | 8.40894E-01 | 1.64583E-03 269| 24570 | 3.19222E-04 | 2.09388E-02 | 8.40917E-01 | 1.62425E-03 270| 24661 | 3.12519E-04 | 2.09191E-02 | 8.41031E-01 | 1.69325E-03 271| 24752 | 3.05204E-04 | 2.09002E-02 | 8.41129E-01 | 1.87583E-03 272| 24843 | 3.00343E-04 | 2.08808E-02 | 8.41198E-01 | 1.85931E-03 273| 24934 | 2.97334E-04 | 2.08824E-02 | 8.41242E-01 | 1.90907E-03 274| 25025 | 2.92721E-04 | 2.08722E-02 | 8.41328E-01 | 1.90647E-03 275| 25116 | 2.85390E-04 | 2.08428E-02 | 8.40753E-01 | 1.70489E-03 276| 25207 | 2.84365E-04 | 2.08399E-02 | 8.40781E-01 | 1.69892E-03 277| 25298 | 2.85224E-04 | 2.08386E-02 | 8.40784E-01 | 1.65963E-03 278| 25389 | 2.81353E-04 | 2.08282E-02 | 8.40849E-01 | 1.65461E-03 279| 25480 | 2.75743E-04 | 2.08190E-02 | 8.40926E-01 | 1.60756E-03 280| 25571 | 2.74570E-04 | 2.08165E-02 | 8.40942E-01 | 1.60010E-03 281| 25662 | 2.71826E-04 | 2.08122E-02 | 8.40598E-01 | 1.55049E-03 282| 25753 | 2.71618E-04 | 2.08109E-02 | 8.40621E-01 | 1.53238E-03 283| 25844 | 2.69207E-04 | 2.08092E-02 | 8.40653E-01 | 1.54758E-03 284| 25935 | 2.64202E-04 | 2.07960E-02 | 8.40740E-01 | 1.51695E-03 285| 26026 | 2.61619E-04 | 2.07897E-02 | 8.40772E-01 | 1.59686E-03 286| 26117 | 2.61475E-04 | 2.07854E-02 | 8.40792E-01 | 1.63232E-03 287| 26208 | 2.61240E-04 | 2.07851E-02 | 8.40794E-01 | 1.63490E-03 288| 26299 | 2.53288E-04 | 2.07661E-02 | 8.40925E-01 | 1.58809E-03 289| 26390 | 2.52940E-04 | 2.07637E-02 | 8.40923E-01 | 1.58031E-03 290| 26481 | 2.49687E-04 | 2.07572E-02 | 8.40965E-01 | 1.57117E-03 291| 26572 | 2.46111E-04 | 2.07498E-02 | 8.41019E-01 | 1.36107E-03 292| 26663 | 2.42078E-04 | 2.07413E-02 | 8.41095E-01 | 1.33625E-03 293| 26754 | 2.40729E-04 | 2.07400E-02 | 8.41112E-01 | 1.34607E-03 294| 26845 | 2.38071E-04 | 2.07283E-02 | 8.41179E-01 | 1.22676E-03 295| 26936 | 2.38185E-04 | 2.07279E-02 | 8.41186E-01 | 1.21908E-03 296| 27027 | 2.37405E-04 | 2.07155E-02 | 8.41278E-01 | 1.27004E-03 297| 27118 | 2.34938E-04 | 2.07092E-02 | 8.41308E-01 | 1.24434E-03 298| 27209 | 2.34470E-04 | 2.07078E-02 | 8.41318E-01 | 1.23293E-03 299| 27300 | 2.32924E-04 | 2.07061E-02 | 8.41358E-01 | 1.30052E-03 300| 27391 | 2.32790E-04 | 2.07048E-02 | 8.41375E-01 | 1.28549E-03 301| 27482 | 2.32697E-04 | 2.07048E-02 | 8.41379E-01 | 1.22198E-03 302| 27573 | 2.33015E-04 | 2.06985E-02 | 8.41439E-01 | 1.23234E-03 303| 27664 | 2.33139E-04 | 2.06983E-02 | 8.41441E-01 | 1.23227E-03 304| 27755 | 2.33002E-04 | 2.06973E-02 | 8.41309E-01 | 1.22111E-03 305| 27846 | 2.32147E-04 | 2.06927E-02 | 8.41333E-01 | 1.22167E-03 306| 27937 | 2.30620E-04 | 2.06892E-02 | 8.40775E-01 | 1.25270E-03 307| 28028 | 2.29834E-04 | 2.06873E-02 | 8.40797E-01 | 1.25628E-03 308| 28119 | 2.27794E-04 | 2.06842E-02 | 8.40791E-01 | 1.23717E-03 309| 28210 | 2.25619E-04 | 2.06785E-02 | 8.40819E-01 | 1.23745E-03 310| 28301 | 2.25119E-04 | 2.06733E-02 | 8.40858E-01 | 1.30546E-03 311| 28392 | 2.24618E-04 | 2.06723E-02 | 8.40873E-01 | 1.28048E-03 312| 28483 | 2.25915E-04 | 2.06723E-02 | 8.40858E-01 | 1.27822E-03 313| 28574 | 2.25901E-04 | 2.06722E-02 | 8.40859E-01 | 1.27840E-03 314| 28665 | 2.24371E-04 | 2.06707E-02 | 8.40882E-01 | 1.24825E-03 315| 28756 | 2.22851E-04 | 2.06682E-02 | 8.40883E-01 | 1.14941E-03 316| 28847 | 2.21808E-04 | 2.06625E-02 | 8.40919E-01 | 1.14495E-03 317| 28938 | 2.21977E-04 | 2.06617E-02 | 8.40924E-01 | 1.14933E-03 318| 29029 | 2.21456E-04 | 2.06612E-02 | 8.40864E-01 | 1.16214E-03 319| 29120 | 2.18586E-04 | 2.06544E-02 | 8.40928E-01 | 1.18884E-03 320| 29211 | 2.18069E-04 | 2.06486E-02 | 8.40958E-01 | 1.13421E-03 321| 29302 | 2.17908E-04 | 2.06488E-02 | 8.40958E-01 | 1.13416E-03 322| 29393 | 2.17899E-04 | 2.06488E-02 | 8.40959E-01 | 1.13415E-03 323| 29484 | 2.17656E-04 | 2.06476E-02 | 8.40971E-01 | 1.16406E-03 324| 29575 | 2.17627E-04 | 2.06477E-02 | 8.40975E-01 | 1.17925E-03 325| 29666 | 2.15941E-04 | 2.06461E-02 | 8.41012E-01 | 1.16464E-03 326| 29757 | 2.15679E-04 | 2.06437E-02 | 8.41006E-01 | 1.08021E-03 327| 29848 | 2.15138E-04 | 2.06424E-02 | 8.41024E-01 | 1.08136E-03 328| 29939 | 2.14234E-04 | 2.06401E-02 | 8.41056E-01 | 1.05565E-03 329| 30030 | 2.14775E-04 | 2.06342E-02 | 8.41065E-01 | 1.06695E-03 330| 30121 | 2.12401E-04 | 2.06298E-02 | 8.41129E-01 | 9.87286E-04 331| 30212 | 2.12314E-04 | 2.06268E-02 | 8.40976E-01 | 9.94625E-04 332| 30303 | 2.09456E-04 | 2.06231E-02 | 8.41029E-01 | 1.01018E-03 333| 30394 | 2.10446E-04 | 2.06206E-02 | 8.41027E-01 | 1.01119E-03 334| 30485 | 2.10441E-04 | 2.06200E-02 | 8.41027E-01 | 1.01146E-03 335| 30576 | 2.11754E-04 | 2.06213E-02 | 8.41045E-01 | 1.03425E-03 336| 30667 | 2.11488E-04 | 2.06214E-02 | 8.41038E-01 | 1.05902E-03 337| 30758 | 2.11792E-04 | 2.06205E-02 | 8.41043E-01 | 1.04682E-03 338| 30849 | 2.11472E-04 | 2.06201E-02 | 8.41049E-01 | 1.04777E-03 339| 30940 | 2.11223E-04 | 2.06195E-02 | 8.41037E-01 | 1.06859E-03 340| 31031 | 2.11236E-04 | 2.06202E-02 | 8.41026E-01 | 1.06964E-03 341| 31122 | 2.08990E-04 | 2.06170E-02 | 8.41069E-01 | 1.02828E-03 342| 31213 | 2.08775E-04 | 2.06169E-02 | 8.41075E-01 | 1.03979E-03 343| 31304 | 2.09416E-04 | 2.06153E-02 | 8.41096E-01 | 9.71433E-04 344| 31395 | 2.09791E-04 | 2.06155E-02 | 8.41096E-01 | 9.56062E-04 345| 31486 | 2.08917E-04 | 2.06147E-02 | 8.41120E-01 | 9.43214E-04 346| 31577 | 2.09081E-04 | 2.06134E-02 | 8.41128E-01 | 9.49359E-04 347| 31668 | 2.06203E-04 | 2.06097E-02 | 8.41176E-01 | 9.39308E-04 348| 31759 | 2.06540E-04 | 2.06094E-02 | 8.41182E-01 | 9.42861E-04 349| 31850 | 2.06694E-04 | 2.06096E-02 | 8.41177E-01 | 9.35098E-04 350| 31941 | 2.04812E-04 | 2.06070E-02 | 8.41233E-01 | 9.36196E-04 351| 32032 | 2.04994E-04 | 2.06064E-02 | 8.41245E-01 | 9.36698E-04 352| 32123 | 2.04889E-04 | 2.06064E-02 | 8.41245E-01 | 9.54788E-04 353| 32214 | 2.04719E-04 | 2.06083E-02 | 8.41251E-01 | 9.64245E-04 354| 32305 | 2.02555E-04 | 2.06063E-02 | 8.41268E-01 | 9.47361E-04 355| 32396 | 2.03280E-04 | 2.06053E-02 | 8.41292E-01 | 9.01813E-04 356| 32487 | 2.02209E-04 | 2.06041E-02 | 8.41305E-01 | 9.06649E-04 357| 32578 | 2.01604E-04 | 2.06032E-02 | 8.41330E-01 | 8.98643E-04 358| 32669 | 2.00014E-04 | 2.05974E-02 | 8.41364E-01 | 9.10980E-04 359| 32760 | 1.98961E-04 | 2.05984E-02 | 8.41371E-01 | 8.97783E-04 360| 32851 | 1.98755E-04 | 2.05979E-02 | 8.41380E-01 | 8.57366E-04 361| 32942 | 1.97694E-04 | 2.05966E-02 | 8.41407E-01 | 8.51121E-04 362| 33033 | 1.97702E-04 | 2.05966E-02 | 8.41407E-01 | 8.51278E-04 363| 33124 | 1.97685E-04 | 2.05965E-02 | 8.41409E-01 | 8.50832E-04 364| 33215 | 1.97589E-04 | 2.05951E-02 | 8.41417E-01 | 8.49641E-04 365| 33306 | 1.97761E-04 | 2.05956E-02 | 8.41414E-01 | 8.26937E-04 366| 33397 | 1.96084E-04 | 2.05963E-02 | 8.41439E-01 | 8.20860E-04 367| 33488 | 1.96052E-04 | 2.05963E-02 | 8.41439E-01 | 8.21882E-04 368| 33579 | 1.96267E-04 | 2.05906E-02 | 8.41452E-01 | 8.19134E-04 369| 33670 | 1.95309E-04 | 2.05948E-02 | 8.41447E-01 | 8.24080E-04 370| 33761 | 1.95477E-04 | 2.05931E-02 | 8.41450E-01 | 7.98497E-04 371| 33852 | 1.94500E-04 | 2.05926E-02 | 8.41462E-01 | 8.13619E-04 372| 33943 | 1.94549E-04 | 2.05917E-02 | 8.41482E-01 | 8.24041E-04 373| 34034 | 1.94549E-04 | 2.05917E-02 | 8.41482E-01 | 8.25979E-04 374| 34125 | 1.94784E-04 | 2.05914E-02 | 8.41490E-01 | 8.22620E-04 375| 34216 | 1.94891E-04 | 2.05907E-02 | 8.41479E-01 | 8.08604E-04 376| 34307 | 1.94514E-04 | 2.05905E-02 | 8.41481E-01 | 8.00366E-04 377| 34398 | 1.94894E-04 | 2.05897E-02 | 8.41487E-01 | 7.97281E-04 378| 34489 | 1.94832E-04 | 2.05891E-02 | 8.41493E-01 | 7.94622E-04 379| 34580 | 1.94839E-04 | 2.05891E-02 | 8.41493E-01 | 7.94694E-04 380| 34671 | 1.95096E-04 | 2.05887E-02 | 8.41495E-01 | 7.90539E-04 381| 34762 | 1.95012E-04 | 2.05908E-02 | 8.41499E-01 | 7.88135E-04 382| 34853 | 1.93635E-04 | 2.05882E-02 | 8.41510E-01 | 7.79747E-04 383| 34944 | 1.92588E-04 | 2.05862E-02 | 8.41552E-01 | 7.36830E-04 384| 35035 | 1.92604E-04 | 2.05889E-02 | 8.41553E-01 | 7.35789E-04 385| 35126 | 1.91700E-04 | 2.05890E-02 | 8.41552E-01 | 7.38339E-04 386| 35217 | 1.91264E-04 | 2.05891E-02 | 8.41556E-01 | 7.38063E-04 387| 35308 | 1.91278E-04 | 2.05890E-02 | 8.41557E-01 | 7.37880E-04 388| 35399 | 1.91133E-04 | 2.05887E-02 | 8.41559E-01 | 7.40394E-04 389| 35490 | 1.90473E-04 | 2.05881E-02 | 8.41561E-01 | 7.39105E-04 390| 35581 | 1.90472E-04 | 2.05880E-02 | 8.41560E-01 | 7.39122E-04 391| 35672 | 1.92476E-04 | 2.05874E-02 | 8.41556E-01 | 7.03873E-04 392| 35763 | 1.92472E-04 | 2.05873E-02 | 8.41559E-01 | 7.09653E-04 393| 35854 | 1.92341E-04 | 2.05872E-02 | 8.41563E-01 | 7.09639E-04 394| 35945 | 1.93728E-04 | 2.05871E-02 | 8.41564E-01 | 6.97921E-04 395| 36036 | 1.93984E-04 | 2.05873E-02 | 8.41563E-01 | 6.94167E-04 396| 36127 | 1.91993E-04 | 2.05870E-02 | 8.41566E-01 | 7.02894E-04 397| 36218 | 1.92184E-04 | 2.05869E-02 | 8.41570E-01 | 6.94931E-04 398| 36309 | 1.90658E-04 | 2.05867E-02 | 8.41574E-01 | 7.03664E-04 399| 36400 | 1.89939E-04 | 2.05866E-02 | 8.41570E-01 | 6.96134E-04 400| 36491 | 1.90170E-04 | 2.05865E-02 | 8.41575E-01 | 6.88756E-04 401| 36582 | 1.87750E-04 | 2.05862E-02 | 8.41575E-01 | 6.89375E-04 402| 36673 | 1.88104E-04 | 2.05861E-02 | 8.41575E-01 | 6.93901E-04 403| 36764 | 1.88447E-04 | 2.05860E-02 | 8.41572E-01 | 6.93194E-04 404| 36855 | 1.88576E-04 | 2.05853E-02 | 8.41582E-01 | 6.86517E-04 405| 36946 | 1.88562E-04 | 2.05851E-02 | 8.41572E-01 | 6.86317E-04 406| 37037 | 1.88830E-04 | 2.05846E-02 | 8.41575E-01 | 6.85367E-04 407| 37128 | 1.88590E-04 | 2.05840E-02 | 8.41582E-01 | 6.79091E-04 408| 37219 | 1.88015E-04 | 2.05840E-02 | 8.41586E-01 | 6.73759E-04 409| 37310 | 1.87666E-04 | 2.05840E-02 | 8.41585E-01 | 6.67195E-04 410| 37401 | 1.87666E-04 | 2.05840E-02 | 8.41585E-01 | 6.67195E-04 411| 37492 | 1.87635E-04 | 2.05835E-02 | 8.41588E-01 | 6.67265E-04 412| 37583 | 1.87707E-04 | 2.05833E-02 | 8.41589E-01 | 6.62899E-04 413| 37674 | 1.87685E-04 | 2.05828E-02 | 8.41592E-01 | 6.62927E-04 414| 37765 | 1.87547E-04 | 2.05827E-02 | 8.41596E-01 | 6.59655E-04 415| 37856 | 1.88698E-04 | 2.05826E-02 | 8.41599E-01 | 6.62523E-04 416| 37947 | 1.88784E-04 | 2.05833E-02 | 8.41599E-01 | 6.65098E-04 417| 38038 | 1.88697E-04 | 2.05830E-02 | 8.41602E-01 | 6.62554E-04 418| 38129 | 1.87233E-04 | 2.05828E-02 | 8.41604E-01 | 7.14273E-04 419| 38220 | 1.87260E-04 | 2.05825E-02 | 8.41606E-01 | 7.13426E-04 420| 38311 | 1.87467E-04 | 2.05824E-02 | 8.41604E-01 | 7.07565E-04 421| 38402 | 1.87878E-04 | 2.05823E-02 | 8.41603E-01 | 7.17640E-04 422| 38493 | 1.87588E-04 | 2.05820E-02 | 8.41604E-01 | 7.15682E-04 423| 38584 | 1.88687E-04 | 2.05816E-02 | 8.41607E-01 | 7.22718E-04 424| 38675 | 1.88686E-04 | 2.05816E-02 | 8.41607E-01 | 7.22918E-04 425| 38766 | 1.88142E-04 | 2.05810E-02 | 8.41609E-01 | 7.29743E-04 426| 38857 | 1.88122E-04 | 2.05809E-02 | 8.41610E-01 | 7.29836E-04 427| 38948 | 1.87920E-04 | 2.05770E-02 | 8.41632E-01 | 7.32133E-04 428| 39039 | 1.86368E-04 | 2.05760E-02 | 8.41656E-01 | 7.32104E-04 429| 39130 | 1.86370E-04 | 2.05759E-02 | 8.41656E-01 | 7.32331E-04 430| 39221 | 1.86208E-04 | 2.05757E-02 | 8.41660E-01 | 7.30615E-04 431| 39312 | 1.86272E-04 | 2.05757E-02 | 8.41660E-01 | 7.30275E-04 432| 39403 | 1.86277E-04 | 2.05756E-02 | 8.41661E-01 | 7.30444E-04 433| 39494 | 1.86213E-04 | 2.05755E-02 | 8.41663E-01 | 7.31100E-04 434| 39585 | 1.86835E-04 | 2.05748E-02 | 8.41666E-01 | 7.33151E-04 435| 39676 | 1.86815E-04 | 2.05743E-02 | 8.41601E-01 | 7.29511E-04 436| 39767 | 1.86307E-04 | 2.05749E-02 | 8.41599E-01 | 7.38524E-04 437| 39858 | 1.86648E-04 | 2.05736E-02 | 8.41599E-01 | 7.42770E-04 438| 39949 | 1.86605E-04 | 2.05732E-02 | 8.41602E-01 | 7.36707E-04 439| 40040 | 1.86776E-04 | 2.05743E-02 | 8.41606E-01 | 7.33992E-04 440| 40131 | 1.86695E-04 | 2.05742E-02 | 8.41608E-01 | 7.34043E-04 441| 40222 | 1.86692E-04 | 2.05741E-02 | 8.41608E-01 | 7.33878E-04 442| 40313 | 1.86692E-04 | 2.05741E-02 | 8.41608E-01 | 7.33854E-04 443| 40404 | 1.87195E-04 | 2.05732E-02 | 8.41608E-01 | 7.37141E-04 444| 40495 | 1.87128E-04 | 2.05732E-02 | 8.41609E-01 | 7.35633E-04 445| 40586 | 1.87359E-04 | 2.05731E-02 | 8.41610E-01 | 7.35156E-04 446| 40677 | 1.87346E-04 | 2.05727E-02 | 8.41558E-01 | 7.31753E-04 447| 40768 | 1.87795E-04 | 2.05727E-02 | 8.41558E-01 | 7.36536E-04 448| 40859 | 1.87785E-04 | 2.05726E-02 | 8.41562E-01 | 7.36978E-04 449| 40950 | 1.87936E-04 | 2.05720E-02 | 8.41510E-01 | 7.37454E-04 450| 41041 | 1.87967E-04 | 2.05719E-02 | 8.41509E-01 | 7.37388E-04 451| 41132 | 1.87859E-04 | 2.05718E-02 | 8.41510E-01 | 7.30199E-04 452| 41223 | 1.87707E-04 | 2.05718E-02 | 8.41514E-01 | 7.30770E-04 453| 41314 | 1.87983E-04 | 2.05717E-02 | 8.41516E-01 | 7.30826E-04 454| 41405 | 1.88317E-04 | 2.05717E-02 | 8.41517E-01 | 7.22915E-04 455| 41496 | 1.87228E-04 | 2.05718E-02 | 8.41521E-01 | 7.27926E-04 456| 41587 | 1.88269E-04 | 2.05712E-02 | 8.41520E-01 | 7.22052E-04 457| 41678 | 1.88570E-04 | 2.05707E-02 | 8.41523E-01 | 7.27694E-04 458| 41769 | 1.88564E-04 | 2.05707E-02 | 8.41526E-01 | 7.25117E-04 459| 41860 | 1.87997E-04 | 2.05703E-02 | 8.41527E-01 | 6.34728E-04 460| 41951 | 1.87744E-04 | 2.05702E-02 | 8.41535E-01 | 6.34479E-04 461| 42042 | 1.87894E-04 | 2.05702E-02 | 8.41535E-01 | 6.34305E-04 462| 42133 | 1.88808E-04 | 2.05701E-02 | 8.41534E-01 | 6.16227E-04 463| 42224 | 1.88601E-04 | 2.05701E-02 | 8.41532E-01 | 6.16583E-04 464| 42315 | 1.88537E-04 | 2.05701E-02 | 8.41533E-01 | 6.15150E-04 465| 42406 | 1.88535E-04 | 2.05701E-02 | 8.41533E-01 | 6.15173E-04 466| 42497 | 1.88840E-04 | 2.05697E-02 | 8.41535E-01 | 6.01312E-04 467| 42588 | 1.88738E-04 | 2.05696E-02 | 8.41538E-01 | 5.99349E-04 468| 42679 | 1.88482E-04 | 2.05697E-02 | 8.41538E-01 | 5.98673E-04 469| 42770 | 1.88537E-04 | 2.05693E-02 | 8.41542E-01 | 5.99437E-04 470| 42861 | 1.88487E-04 | 2.05689E-02 | 8.41545E-01 | 5.96658E-04 471| 42952 | 1.88487E-04 | 2.05689E-02 | 8.41545E-01 | 5.96658E-04 472| 43043 | 1.88439E-04 | 2.05688E-02 | 8.41546E-01 | 6.02280E-04 473| 43134 | 1.88197E-04 | 2.05687E-02 | 8.41549E-01 | 6.00911E-04 474| 43225 | 1.88168E-04 | 2.05688E-02 | 8.41549E-01 | 6.00864E-04 475| 43316 | 1.88167E-04 | 2.05687E-02 | 8.41549E-01 | 6.00841E-04 476| 43407 | 1.88194E-04 | 2.05688E-02 | 8.41551E-01 | 5.98999E-04 477| 43498 | 1.88244E-04 | 2.05684E-02 | 8.41556E-01 | 5.97719E-04 478| 43589 | 1.88623E-04 | 2.05685E-02 | 8.41554E-01 | 6.00649E-04 479| 43680 | 1.88598E-04 | 2.05679E-02 | 8.41558E-01 | 5.96417E-04 480| 43771 | 1.88676E-04 | 2.05680E-02 | 8.41558E-01 | 5.92955E-04 481| 43862 | 1.88653E-04 | 2.05680E-02 | 8.41559E-01 | 5.92547E-04 482| 43953 | 1.88707E-04 | 2.05684E-02 | 8.41557E-01 | 5.93034E-04 483| 44044 | 1.88756E-04 | 2.05682E-02 | 8.41558E-01 | 5.93623E-04 484| 44135 | 1.88793E-04 | 2.05679E-02 | 8.41558E-01 | 5.95087E-04 485| 44226 | 1.88787E-04 | 2.05678E-02 | 8.41560E-01 | 5.95151E-04 486| 44317 | 1.88799E-04 | 2.05678E-02 | 8.41560E-01 | 5.95448E-04 487| 44408 | 1.89224E-04 | 2.05679E-02 | 8.41562E-01 | 5.20638E-04 488| 44499 | 1.88624E-04 | 2.05678E-02 | 8.41566E-01 | 4.56521E-04 489| 44590 | 1.89010E-04 | 2.05677E-02 | 8.41567E-01 | 4.57987E-04 490| 44681 | 1.88934E-04 | 2.05677E-02 | 8.41571E-01 | 4.56229E-04 491| 44772 | 1.88915E-04 | 2.05677E-02 | 8.41572E-01 | 4.55270E-04 492| 44863 | 1.89007E-04 | 2.05677E-02 | 8.41574E-01 | 4.62092E-04 493| 44954 | 1.89008E-04 | 2.05673E-02 | 8.41577E-01 | 4.84694E-04 494| 45045 | 1.88656E-04 | 2.05670E-02 | 8.41579E-01 | 4.84394E-04 495| 45136 | 1.87456E-04 | 2.05669E-02 | 8.41581E-01 | 4.58061E-04 496| 45227 | 1.87471E-04 | 2.05668E-02 | 8.41581E-01 | 4.58073E-04 497| 45318 | 1.87470E-04 | 2.05667E-02 | 8.41581E-01 | 4.58114E-04 498| 45409 | 1.87447E-04 | 2.05667E-02 | 8.41584E-01 | 4.58185E-04 499| 45500 | 1.87447E-04 | 2.05667E-02 | 8.41584E-01 | 4.58194E-04
Execution time: 0.7180259227752686 s Evaluation number: 45500 The number of non-dominated solutions is: 91 gd: 0.00019 igd: 0.02057 hv: 0.84158 spacing: 0.00046
Geatpy2整体上看由工具箱内核函数(内核层)和面向对象进化算法框架(框架层)两部分组成。其中面向对象进化算法框架主要有四个大类:Problem问题类、Algorithm算法模板类、Population种群类和PsyPopulation多染色体种群类。UML图如下所示:
Problem类定义了与问题相关的一些信息,如问题名称name、优化目标的维数M、决策变量的个数Dim、决策变量的范围ranges、决策变量的边界borders等。maxormins是一个记录着各个目标函数是最小化抑或是最大化的Numpy array行向量,其中元素为1表示对应的目标是最小化目标;为-1表示对应的是最大化目标。例如M=3,maxormins=array([1,-1,1]),此时表示有三个优化目标,其中第一、第三个是最小化目标,第二个是最大化目标。varTypes是一个记录着决策变量类型的行向量,其中的元素为0表示对应的决策变量是连续型变量;为1表示对应的是离散型变量。待求解的目标函数定义在aimFunc()的函数中。calReferObjV()函数则用于计算或读取目标函数参考值(一般用理论上的目标函数的最优值作为参考值),该参考值可以用于后续的指标分析。在实际使用时,不是直接在Problem类的文件中修改相关代码来使用的,而是通过定义一个继承Problem的子类来完成对问题的定义的。这些在后面的章节中会详细讲述。getReferObjV()是Problem父类中已经实现了的一个函数,它先尝试读取特定文件夹中的目标函数值参考数据,如果读取不到,则调用calReferObjV()进行计算。对于Problem类中各属性的详细含义可查看Problem.py源码。
Population 类是一个表示种群的类。一个种群包含很多个个体,而每个个体都有一条染色体(若要用多染色体,则使用多个种群、并把每个种群对应个体关联起来即可)。除了染色体外,每个个体都有一个译码矩阵Field(或俗称区域描述器) 来标识染色体应该如何解码得到表现型,同时也有其对应的目标函数值以及适应度。种群类就是一个把所有个体的这些数据统一存储起来的一个类。比如里面的Chrom 是一个存储种群所有个体染色体的矩阵,它的每一行对应一个个体的染色体;ObjV 是一个目标函数值矩阵,每一行对应一个个体的所有目标函数值,每一列对应一个目标。对于Population 类中各属性的详细含义可查看Population.py 源码以及下一章“Geatpy 数据结构”。
PsyPopulation类是继承了Population的支持多染色体混合编码的种群类。一个种群包含很多个个体,而每个个体都有多条染色体。用Chroms列表存储所有的染色体矩阵(Chrom);Encodings列表存储各染色体对应的编码方式(Encoding);Fields列表存储各染色体对应的译码矩阵(Field)。EncoIdxs是一个list,其元素表示每条染色体对应编码哪一个变量。比如EncoIdxs = [[0], [1,2,3,4]],表示一共有5个变量,其中第一个变量编码成第一条子染色体;后4个变量编码成第二条子染色体。
Algorithm 类是进化算法的核心类。它既存储着跟进化算法相关的一些参数,同时也在其继承类中实现具体的进化算法。比如Geatpy 中的moea_NSGA3_templet.py 是实现了多目标优化NSGA-III 算法的进化算法模板类,它是继承了Algorithm 类的具体算法的模板类。关于Algorithm 类中各属性的含义可以查看Algorithm.py 源码。这些算法模板通过调用Geatpy 工具箱提供的进化算法库函数实现对种群的进化操作,同时记录进化过程中的相关信息,其基本层次结构如下图:
其中“算子类”是Geatpy2.2.2版本之后增加的特性,通过实例化算子类来调用低级操作函数,可以利用面向对象编程的优势使得对传入低级操作函数的一些参数的修改变得更加方便。目前内置的“算子类”有“重组算子类”和“变异算子类”。用户可以绕开对底层的低级操作函数的修改而直接通过新增“算子类”来实现新的算子例如自适应的重组、变异算子等。
例如:mutpolyn是多项式变异的低级变异算子。其对应的高级变异算子为:Mutpolyn。