可在Python中通过import geatpy as ea; 然后help(ea.模块名)查看各变异算子模块的用法。

模块名 功能
mutbga Breeder GA算法突变算子
mutbin Mutation for Binary Chromosomes,二进制变异算子
mutde Mutation for Differential Evolution,差分变异算子
mutgau Gaussian Mutation,高斯突变算子
mutinv Invertion Mutation,染色体片段逆转变异算子
mutmove Mutation by Moving,染色体片段移位变异算子
mutpolyn Polynomial Mutation,多项式变异
mutpp Mutation of Permutation Chromosomes,排列编码变异算子
mutswap Two Point Swapping Mutation,染色体两点互换变异算子
mutuni Uniform Mutation,均匀变异算子

注意:对于mutbga、mutde、mutgau、mutpolyn、mutuni,变异是先按实数值来变异,然后对于标记了是离散型变量进行四舍五入。因此结果往往会是浮点“float”类型的,此时如果要把这些离散值用作其他变量的索引,需要对其进行强制类型转换。
2.2.2版之后,Geatpy新增面向对象的变异算子类来进行变异。变异算子类见下表:

模块名 功能
Mutbga Breeder GA算法突变算子类
Mutbin Mutation for Binary Chromosomes,二进制变异算子类
Mutde Mutation for Differential Evolution,差分变异算子类
Mutgau Gaussian Mutation,高斯突变算子类
Mutinv Invertion Mutation,染色体片段逆转变异算子类
Mutmove Mutation by Moving,染色体片段移位变异算子类
Mutpolyn Polynomial Mutation,多项式变异类
Mutpp Mutation of Permutation Chromosomes,排列编码变异算子类
Mutswap Two Point Swapping Mutation,染色体两点互换变异算子类
Mutuni Uniform Mutation,均匀变异算子类

所有上述的变异算子类的文件均在“operators/mutation”文件夹中,每个变异算子类都直接继承“Mutation”变异算子类,有以下三个成员函数:

__init__() 构造函数
do() 执行函数,用于调用内核中同名(首字母小写)的变异函数执行变异
getHelp() 查看对应内核中的变异算子的API文档

以“Mutpolyn”多项式变异算子类为例,其源码如下:

# -*- coding: utf-8 -*-
from operators.mutation.Mutation import Mutation
from mutpolyn import mutpolyn
class Mutpolyn(Mutation):
"""
Mutpolyn - class : 一个用于调用内核中的变异函数mutpolyn(多项式变异)的变异算子类,
该类的各成员属性与内核中的对应函数的同名参数含义一致,
可利用help(mutpolyn)查看各参数的详细含义及用法。
"""

def __init__(self, Pm = None, DisI = 20, FixType = 1, Parallel = False):
self.Pm = Pm # 表示染色体上变异算子所发生作用的最小片段发生变异的概率
self.DisI = DisI # 多项式变异中的分布指数
self.FixType = FixType # 表示采用哪种方式来修复超出边界的染色体元素,可取值1,2,3,4,详细含义见help()帮助文档
self.Parallel = Parallel # 表示是否采用并行计算,缺省时默认为False

def do(self, Encoding, OldChrom, FieldDR, *args): # 执行变异
return mutpolyn(Encoding, OldChrom, FieldDR, self.Pm, self.DisI, self.FixType, self.Parallel)

def getHelp(self): # 查看内核中的变异算子的API文档
help(mutpolyn)

在进行进化算法的过程中,如果需要调用多项式变异算子,那么可以实例化一个多项式变异算子类的对象,然后调用该对象的“do()”函数执行变异。例如:

import geatpy as ea
mutOper = ea.Mutpolyn(Pm = 0.01, DisI = 20)
xxx = mutOper.do(...)

具体调用方法可详见各算法模板的源码。
如果在进化过程中需要动态修改该变异算子的相关参数,如变异概率等,可直接对其进行修改。

Geatpy官网迁移通知

Geatpy2交流群

采用自研高性能矩阵库,体验极速的进化之旅!