Avez-vous déjà atteint un goulot d'étranglement dans vos expériences informatiques ? Vous en avez assez de sélectionner des paramètres adaptés à une technique choisie ? Si oui, Optimizer est la vraie affaire ! Ce package fournit une implémentation simple d'optimisations méta-heuristiques. Des agents à l'espace de recherche, des fonctions internes à la communication externe, nous favoriserons toutes les recherches liées à l'optimisation.
Utilisez Optimizer si vous avez besoin d'une bibliothèque ou si vous souhaitez :
Lisez la documentation sur opytimizer.readthedocs.io.
Optimizer est compatible avec : Python 3.6+ .
Si vous utilisez Opytimizer pour répondre à l'un de vos besoins, veuillez nous citer :
@misc { rosa2019opytimizer ,
title = { Opytimizer: A Nature-Inspired Python Optimizer } ,
author = { Gustavo H. de Rosa, Douglas Rodrigues and João P. Papa } ,
year = { 2019 } ,
eprint = { 1912.13002 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.NE }
}
Tout d'abord. Nous avons des exemples. Oui, ils sont commentés. Accédez simplement à examples/
, choisissez votre sous-package et suivez l'exemple. Nous avons des exemples de haut niveau pour la plupart des tâches auxquelles nous pourrions penser et des intégrations étonnantes (Learnergy, NALP, OPFython, PyTorch, Scikit-Learn, Tensorflow).
Alternativement, si vous souhaitez en savoir plus, veuillez prendre une minute :
Optimizer est basé sur la structure suivante, et vous devez faire attention à son arborescence :
- opytimizer
- core
- agent
- block
- cell
- function
- node
- optimizer
- space
- functions
- constrained
- multi_objective
- math
- distribution
- general
- hyper
- random
- optimizers
- boolean
- evolutionary
- misc
- population
- science
- social
- swarm
- spaces
- boolean
- graph
- grid
- hyper_complex
- pareto
- search
- tree
- utils
- callback
- constant
- exception
- history
- logging
- visualization
- convergence
- surface
Le noyau est le noyau. Essentiellement, c'est le parent de tout. Vous devriez trouver des classes parentes définissant la base de notre structure. Ils doivent fournir des variables et des méthodes qui aideront à construire d'autres modules.
Au lieu d'utiliser des fonctions brutes et simples, pourquoi ne pas essayer ce module ? Composez des fonctions abstraites de haut niveau ou même de nouvelles idées basées sur des fonctions afin de résoudre vos problèmes. Notez que pour l’instant, nous ne prendrons en charge que les stratégies fonctionnelles multi-objectifs.
Ce n’est pas parce que nous faisons de l’informatique que nous n’avons pas besoin de mathématiques. Math est le package mathématique contenant des implémentations mathématiques de bas niveau. Des nombres aléatoires à la génération de distributions, vous trouverez vos besoins sur ce module.
C'est pourquoi nous nous appelons Optimizer. C’est le cœur de l’heuristique, où l’on trouve un grand nombre de méta-heuristiques, de techniques d’optimisation, tout ce qu’on peut appeler un optimiseur. Veuillez jeter un œil aux optimiseurs disponibles.
On peut voir l’espace comme le lieu où les agents mettront à jour leurs positions et évalueront une fonction de fitness. Cependant, les approches les plus récentes pourraient envisager un type d’espace différent. En pensant à cela, nous sommes heureux de soutenir diverses implémentations spatiales.
Il s'agit d'un package utilitaire. Les éléments communs partagés dans l’application doivent être implémentés ici. Il est préférable de l'implémenter une seule fois et de l'utiliser comme vous le souhaitez plutôt que de réimplémenter la même chose à plusieurs reprises.
Tout le monde a besoin d’images et de tracés pour visualiser ce qui se passe, n’est-ce pas ? Ce package vous fournira toutes les méthodes liées au visuel. Vérifiez la convergence d'une variable spécifique, la convergence de votre fonction de fitness, tracez les surfaces de fonctions de référence et bien plus encore !
Nous pensons que tout doit être facile. Ni compliqué ni intimidant, Opytimizer sera le package unique dont vous aurez besoin, de la première installation aux tâches quotidiennes mettant en œuvre vos besoins. Si vous pouvez simplement exécuter ce qui suit dans votre environnement Python préféré (raw, conda, virtualenv, peu importe) :
pip install opytimizer
Alternativement, si vous préférez installer la version la plus récente, veuillez cloner ce référentiel et utiliser :
pip install -e .
Notez que parfois, une implémentation supplémentaire est nécessaire. Si nécessaire, à partir d’ici, c’est vous qui connaîtrez tous ses détails.
Aucune commande supplémentaire spécifique n'est nécessaire.
Aucune commande supplémentaire spécifique n'est nécessaire.
Aucune commande supplémentaire spécifique n'est nécessaire.
Jetez un œil à un exemple de travail rapide d’Opytimizer. Notez que nous ne transmettons pas beaucoup d’arguments supplémentaires ni d’informations supplémentaires à la procédure. Pour des exemples plus complexes, veuillez consulter notre dossier examples/
.
import numpy as np
from opytimizer import Opytimizer
from opytimizer . core import Function
from opytimizer . optimizers . swarm import PSO
from opytimizer . spaces import SearchSpace
def sphere ( x ):
return np . sum ( x ** 2 )
n_agents = 20
n_variables = 2
lower_bound = [ - 10 , - 10 ]
upper_bound = [ 10 , 10 ]
space = SearchSpace ( n_agents , n_variables , lower_bound , upper_bound )
optimizer = PSO ()
function = Function ( sphere )
opt = Opytimizer ( space , optimizer , function )
opt . start ( n_iterations = 1000 )
Nous savons que nous faisons de notre mieux, mais il est inévitable de reconnaître que nous faisons des erreurs. Si jamais vous avez besoin de signaler un bug, de signaler un problème, parlez-en-nous, faites-le ! Nous serons disponibles à notre meilleur dans ce référentiel.