Closed khalibartan closed 6 years ago
You Fitness class seems to be at cause. Try this one
from __future__ import print_function
from deap import base
from deap import creator
from deap.tools.emo import *
creator.create("Fitness", base.Fitness, weights=(1, 1))
creator.create("Individual", list, fitness=creator.Fitness)
def Individual(x, y, id):
ind = creator.Individual()
ind.fitness.values = (x, y)
ind.id = id
return ind
individuals = list()
individuals.append(Individual(0.31, 6.10, "a"))
individuals.append(Individual(0.43, 6.79, "b"))
individuals.append(Individual(0.22, 7.09, "c"))
individuals.append(Individual(0.59, 7.85, "d"))
individuals.append(Individual(0.66, 3.65, "e"))
individuals.append(Individual(0.83, 4.23, "f"))
individuals.append(Individual(0.21, 5.90, "g"))
individuals.append(Individual(0.79, 3.97, "h"))
individuals.append(Individual(0.51, 6.51, "i"))
individuals.append(Individual(0.27, 6.93, "j"))
individuals.append(Individual(0.58, 4.52, "k"))
individuals.append(Individual(0.24, 8.54, "l"))
def print_front(fronts):
for front in fronts:
for ind in front:
print(ind.id, end="")
print()
print()
return
print_front(sortLogNondominated(individuals, 12))
print_front(sortNondominated(individuals, 12))
which outputs:
fdl
hkibjc
ea
g
dfl
bijkhc
ae
g
Looks like you inverted the not_equal = True
and return False
statements.
@fmder Oh sorry! Actually, I was using minimization objective and wrote the function according to it. Thanks.
Hi, I was comparing the fronts returned by sortLogNondominated and sortNondominated, they were not same. Here is the snippet:
Note: I was just trying to use the implementation of algorithm.
Outputs are:
The output of sortNondominated matches with that of example given in Kalyanmoy Deb Multi-Objective Optimization Using Evolutionary Algorithms, section 6.2.2 , but the output of sortLogNondominated doesn't.