Эволюционные стратегии стали простыми!
Используйте эвопию, чтобы легко оптимизировать вектор поплавков в Python.
Все, что вам нужно для использования эвопии, это Python 3! Запустите эту команду, чтобы получить эвопию из PYPI:
pip install evopy
Тогда вы можете импортировать EvoPy так:
from evopy import EvoPy Допустим, мы хотели найти оптимальный параболу, не используя точные методы из Calculus! С эвопией это так же просто, как написать следующие две строки:
evopy = EvoPy ( lambda x : pow ( x , 2 ), 1 )
best_coordinates = evopy . run () Основным ингредиентом здесь является функция фитнеса (Lambda). Это также может быть нормальной ссылкой на функцию, просто убедитесь, что он принимает поплавок или массив поплавков и выводит один поплавок. Другим ингредиентом является 1 в конце первой строки: это размерность входов, которые вы ожидаете в своей функции пригодности. best_coordinates будет содержать массив с одним элементом, который является лучшим значением x которое алгоритм может найти в количестве поколений по умолчанию.
Если предыдущий пример казался для вас слишком простым, мы также можем посмотреть на оптимальную более сложную двухмерную функцию, такую как функция Rastrigin. Нам не нужно много модифицировать в нашем предыдущем фрагменте кода, чтобы заставить это работать:
evopy = EvoPy (
lambda X : 5 + sum ([( x ** 2 - 5 * np . cos ( 2 * np . pi * x )) for x in X ]),
2 ,
generations = 1000 ,
population_size = 100
)
best_coordinates = evopy . run () По сравнению с первым примером, мы переоценили функцию пригодности для более сложной, установив размерность на 2 и предоставив алгоритм больше времени, чтобы найти оптимум, установив более высокое поколение и индивидуальное количество, чем по умолчанию.
Для получения более подробной информации о функциональности Evopy посмотрите на документы!
Клонировать это хранилище и принести все зависимости из клонированного каталога:
pip install -r requirements.dev.txt
Запустите все тесты с:
nosetests
Чтобы проверить свой стиль кода, запустите:
pylint evopy
Чтобы измерить покрытие кода, запустите:
nosetests --with-coverage --cover-package=evopy --cover-html --cover-branches --cover-erase