Python DEAP: физическая форма со временем ухудшается — как это исправить?

Моя личность представляет собой совокупность пяти параметров, необходимых для настройки многоэтапного процесса. Первая популяция создается путем случайного присвоения этим параметрам значения в соответствующих диапазонах и преобразования его в двоичную строку. График первых 25 поколений обычно выглядит так:

График первых 25 поколений

Код DEAP выглядит так:

# Create the individuals
creator.create('FitnessMax', base.Fitness, weights=(1.0, ))
creator.create('Individual', list, fitness=creator.FitnessMax)

# Initialize the containers
toolbox = base.Toolbox()
toolbox.register('individual', get_random_contour_ind)
toolbox.register('population', tools.initRepeat, list, toolbox.individual)

# Initialize the operators
toolbox.register('evaluate', get_total_max_ratio)
toolbox.register('mate', tools.cxUniform, indpb=0.10)
toolbox.register('mutate', tools.mutFlipBit, indpb=0.10)
toolbox.register('select', tools.selBest)

Это занимает много времени, но я запускал тот же код DEAP на других оценщиках и заметил ту же закономерность. Как это исправить?


person Dave Babbitt    schedule 04.06.2018    source источник
comment
Какой алгоритм вы используете?   -  person usernumber    schedule 06.11.2019


Ответы (1)


Проблема заключалась в том, что оценщик не является детерминированным, поэтому я последовал совету paddymccrudden и добавил декоратор для обеспечения стохастическая приспособленность. Теперь фитнес-график выглядит так:

25 поколений  стохастической пригодности

Как вы можете видеть, средний уровень приспособленности увеличивается из поколения в поколение.

person Dave Babbitt    schedule 06.06.2018