提问人:sumayah 提问时间:10/25/2023 最后编辑:Pieter-Jansumayah 更新时间:11/2/2023 访问量:35
如何从 Pymoo 为 NSGA-II 代码添加突变概率?
How to add mutation probability to the NSGA-II code from Pymoo?
问:
我的代码是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, )
答: 暂无答案
上一个:查找突变字段值
评论