Я вижу вашу борьбу с документами DEAP. Тем не менее, я написал свою собственную библиотеку Evolutionary Computing, и в последнее время я использую DEAP для многих доказательств концепций, и я думаю, что они неплохо справились с этим.
Продолжая, давайте посмотрим на the complete example. Если вы прочтете документы, вам будет удобнее смотреть на код. Размер проблемы - это количество переменных, поэтому в вашем случае, если я правильно понимаю, у вас будет N = 2
(x и y).
И вам нужна пользовательская функция фитнеса вместо benchamrks.rastrigin
:
toolbox.register("evaluate", myownfunction)
Ограничение не реализованы, но легкая задача. В функции фитнеса вы можете аннулировать отдельных лиц, которые нарушают ограничения (например, назначая очень высокую физическую форму, если минимизировать), и в течение нескольких поколений ваше население должно быть свободным от инвалидов.
Это будет самый простой подход с ОЭАП, но deap.cma.Strategy
class может быть расширен для того, чтобы переопределить/продлить любой метод, например, метод generate
так, что все люди в исходной популяции являются действительными.
Можете ли вы подробнее рассказать о том, как реализовать ограничения для тех, кто не знаком с генетическими алгоритмами, в частности с CMAES? Например, я хотел бы использовать pybrain для реализации [оптимизации CMAES] (http://pybrain.org/docs/tutorial/optimization.html#continuous-optimization), но он не говорит, как делать ограниченную оптимизацию, которая вовлекает что-то как '1 - sum (x_guess)> 0' – Pupil
Я предлагаю реализовать ограничения на оценку пригодности (по которым вы можете считать человека недействительным, если какое-либо ограничение не выполняется, приписывая, например, очень высокий уровень физической подготовки) , Вы также можете реализовать пользовательские операторы, которые будут варьировать только индивиды внутри заданных границ. Первое предпочтительнее, на мой взгляд, и должно быть дешевле. – rll