可在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 = 1, DisI = 20, Loop = False):
        self.Pm = Pm # 每条染色体发生变异的概率
        self.DisI = DisI # 多项式变异中的分布指数
        self.Loop = Loop # 表示是否采用循环的方式处理超出边界的变异结果
   
    def do(self, Encoding, OldChrom, FieldDR, *args): # 执行变异
        return mutpolyn(Encoding, OldChrom, FieldDR, self.Pm, self.DisI, self.Loop)
   
    def getHelp(self): # 查看内核中的变异算子的API文档
        help(mutpolyn)

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

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

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