如何从 Pymoo 为 NSGA-II 代码添加突变概率?

How to add mutation probability to the NSGA-II code from Pymoo?

提问人:sumayah 提问时间:10/25/2023 最后编辑:Pieter-Jansumayah 更新时间:11/2/2023 访问量:35

问:

我的代码是Pymoo:Python中的多目标优化(NSGA-II)。 该突变是多项式突变 (PM)。 代码不涉及突变概率,如下图所示:

类 NSGA2(GeneticAlgorithm):

def __init__(self,
             pop_size=100,
             sampling=FloatRandomSampling(),
             selection=TournamentSelection(func_comp=binary_tournament),
             crossover=SBX(eta=60, prob=0.6),
             mutation=PM(eta=40),
             survival=RankAndCrowdingSurvival(),
             output=MultiObjectiveOutput(),
             **kwargs):
    super().__init__(
        pop_size=pop_size,
        sampling=sampling,
        selection=selection,
        crossover=crossover,
        mutation=mutation,
        survival=survival,
        output=output,
        advance_after_initial_infill=True,
        **kwargs)

正如 pymoo 网站所解释的那样,“这种突变遵循与模拟二进制交叉相同的概率分布。

我无法解释上面的句子;此外,我不知道突变概率是否集成到代码中。

我还想在代码中添加自适应突变 可能吗?

为了解决突变问题,我使用了最大和最小 ETA 参数,如下所示:

Maxeta, 峰田 = 100, 20 class MyCallback(回调): def init(self) -> 无: super() 中。初始化()

def notify(self, algorithm):
    print("algorithm.n_gen: ", algorithm.n_gen)
    eta = (maxeta-mineta)*(algorithm.n_gen/n_gen) + mineta
    print("eta: ", eta)
    algorithm.mating.mutation = PM(eta=eta, )
python 概率 突变 pymoo eta

评论


答: 暂无答案