在多目标优化问题中,我们需要同时考虑多个目标函数,找到一个帕累托前沿。NSGA-II是一种流行的多目标进化算法,用于解决这类问题。下面我们将使用Python实现NSGA-II算法。首先,我们需要定义一个适应度类,用于计算每个个体的适应度。假设我们有两个目标函数f1和f2,可以定义如下: import numpy as np class Fitness: def...
μ i \mu_i μi 是满足(0,1)均匀分布的随机数, η \eta η 是变异分布参数。 Python代码实现 def make_new_pop(P, eta, bound_min, bound_max, objective_fun): """ use select,crossover and mutation to create a new population Q :param P: 父代种群 :param eta: 变异分布参数,该值越...
DEAP内置了实现NSGA-II中的基于拥挤度的选择函数tools.selNSGA2用来实现精英保存策略: tools.selNSGA2(individuals, k, nd='standard') 参数: individuals:被选择的个体列表,在NSGA-II中是父代与子代的并集 k:需要选择的个体个数,通常要比被选择的个体数量小;如果与被选择的个体数量相同,那么效果等同于基于pareto...
k:需要选择的个体个数,通常要比被选择的个体数目小;如果与被选择的个体数量相同,那么效果 等同于基于pareto前沿的排序 nd:选择使用的非支配(non-dominated)算法,可以设置为'standard'或'log' 返回: 被选择的个体列表 三.NSGA-II算法实现 1.测试函数 #!usr/bin/env python # -*- coding:utf-8 _*- """ ...