как добавить максимальное (или минимальное) условие остановки фитнеса в многопроцессорный генетический алгоритм deap python - PullRequest
0 голосов
/ 20 декабря 2018

этот вопрос является продолжением ответа на этот вопрос о библиотеке генетического алгоритма Python deap: Как добавить механизм исключения в генетический алгоритм Python на основе DEAP

с использованием ссылочного кода изdeap github: https://github.com/DEAP/deap/blob/master/examples/ga/onemax.py

строка 112 while max(fits) < 100 and g < 1000: #from onemax.py

на примере deap github 'onemax_mp.py': https://github.com/DEAP/deap/blob/master/examples/ga/onemax_mp.py

как добавить макс (или мин) условие, подобное max(fits) < 100 в onemax_mp.py?

если я добавлю это условие, применяется ли это условие к каждому процессу во всем многопроцессорном пуле процессов?если один процесс удовлетворяет условию завершения, другие процессы остановлены?
сейчас кажется, что я могу контролировать только количество поколений:

https://github.com/DEAP/deap/blob/master/examples/ga/onemax_mp.py

строка 40

algorithms.eaSimple(pop, toolbox, cxpb=0.5, mutpb=0.2, ngen=40, stats=stats, halloffame=hof) #ngen=40 means calculate 40 generations

Я новичок в stackoverflow, пожалуйста, дайте мне знать, если мне нужно отредактировать этот вопрос, чтобы соответствовать правилам форума

1 Ответ

0 голосов
/ 20 декабря 2018

Итак, линия, на которую вы смотрите, является условием завершения.Эволюция останавливается, когда человек с физической подготовкой выше 100 найден или после 1000 поколений.Я проделал большую работу с МЭА, но я не слишком знаком с DEAP.Помимо этого заявления об отказе от обязательств, похоже, что оно не эволюционирует в отдельные группы, а просто проводит параллельную оценку.Так что есть только одна популяция.Из документов похоже, что вы могли бы взять onemax.py и слот в пуле многопроцессорной обработки следующим образом:

import multiprocessing

pool = multiprocessing.Pool()
toolbox.register("map", pool.map)

Я взял этот код отсюда: https://deap.readthedocs.io/en/master/tutorials/basic/part4.html

...