進化戦略は簡単になりました!
Evopyを使用して、Pythonのフロートのベクトルを簡単に最適化します。
Evopyを使用する必要があるのはPython 3だけです!このコマンドを実行して、PypiからEvopyを取得します。
pip install evopy
次に、このようなEvoPyをインポートできます。
from evopy import EvoPy 計算からの正確な方法を使用せずに、放物線の最適なものを見つけたかったとしましょう! Evopyを使用すると、これは次の2行を書くのと同じくらい簡単です。
evopy = EvoPy ( lambda x : pow ( x , 2 ), 1 )
best_coordinates = evopy . run ()ここの主な成分は、フィットネス関数(ラムダ)です。これは通常の関数の参照でもあります。フロートまたはフロートの配列を受け入れ、単一のフロートを出力することを確認してください。もう1つの成分は、最初の行の終わりに1です。これは、フィットネス関数に期待される入力の次元です。 best_coordinatesは、単一の要素を持つ配列が含まれます。これは、アルゴリズムがデフォルトの世代で見つけることができる最高のx値です。
前の例があなたにとってあまりにも単純すぎると思われる場合は、Rastrigin関数のように、より複雑で2次元の機能の最適なものを見ることもできます。これを機能させるために、以前のコードスニペットで多くを変更する必要はありません。
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