1,基本数据结构
numpy | geatpyeatpy中的大部分数据都是都是使用numpy的数组进行存储和计算的 | import geatpy as ea import numpy as np |
Nind | 种群的规模(个体数量) | Nind = 4(整数) |
Chrom | 种群染色体用Chrom:种群染色体矩阵 lind表示编码的长度,Nind表示的是种群的规模(个体数量 二维数组,其中每一行对应一个个体的染色体编码 | |
Phen | Chrom经过解码后得到的基因表现型矩阵Phen 每一行对应一个个体,每一列对应一个决策变量 Nvar表示变量的个数,Nind表示的是种群的规模(个体数量) | Phen的值与采用的解码方式有关 |
ObjV | 目标函数值 每一行对应每一个个体,=Chrom行数 | 每一列对应一个目标函数 (单目标函数=ObjV会只有1列; 多目标函数=ObjV会有多列) |
FitnV | 适应度函数 每一行代表一个个体的适应度值,=Chrom行数 | 1,Geatpy中的适应度遵循“最小适应度为0”的约定。 2, |
CV | 种群个体违反约束矩阵 每一行代表种群的每一个个体;每一列代表一个约束条件 | 1,元素若小于或等于0,表示该元素对应的个体满足对应的约束条件 2,若大于0,表示违反约束条件,值越大,违反程度越高 |
FieldD | 三种
| 长度等于决策变量个数的行向量 sum(lens)等于染色体的长度 ub:决策变量下界; 1=表示使用格雷编码) ubin:下界否包含其范围的边界。0不包含,1包含; phen=ea.bs2ri(chorm,FieldD) 进行解码 |
FeildDR |
|
内置的 |
| 第一行所有元素都相等, 第二行所有元素也都相等, 第三行元素均为1(排列编码变量是离散的) FieldDR有Lind列(即染色体长度为Lind) | |
trace | 进化跟踪器 记录种群在进化的过程中各代的最优个体 |
2、种群结构
2.1 Population类
种群类(Population)是一个存储与种群个体相关信息的类。
基本属性:
size:int——种群规模,
ChromNum:int——染色体数目;
Encoding:str——染色体编码方式;
Field:array——译码矩阵,FieldD或者FieldDR
Chrom:array——种群染色体矩阵,每一行对应一个个体的一条染色体;
Lind:int——种群染色体长度
ObjV:array——种群目标函数值矩阵
FitnV:array——种群个体适应度列向量
CV:array——种群个体违反约束条件程度的矩阵
Phen:array——种群表现型矩阵