Você já atingiu um gargalo em seus experimentos computacionais? Você está cansado de selecionar parâmetros adequados para uma técnica escolhida? Se sim, o Opytimizer é o verdadeiro negócio! Este pacote fornece uma implementação fácil de otimizações meta-heurísticas. Dos agentes ao espaço de busca, das funções internas à comunicação externa, promoveremos todas as pesquisas relacionadas à otimização de coisas.
Use o Opytimizer se precisar de uma biblioteca ou desejar:
Leia a documentação em opytimizer.readthedocs.io.
O Opytimizer é compatível com: Python 3.6+ .
Se você usa o Opytimizer para atender alguma de suas necessidades, cite-nos:
@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 }
}
Em primeiro lugar. Temos exemplos. Sim, eles são comentados. Basta navegar até examples/
, escolher seu subpacote e seguir o exemplo. Temos exemplos de alto nível para a maioria das tarefas que poderíamos imaginar e integrações incríveis (Learnergy, NALP, OPFython, PyTorch, Scikit-Learn, Tensorflow).
Alternativamente, se você deseja aprender ainda mais, reserve um minuto:
O Opytimizer é baseado na seguinte estrutura, e você deve prestar atenção em sua árvore:
- 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
Núcleo é o núcleo. Essencialmente, é o pai de tudo. Você deverá encontrar classes pai definindo a base de nossa estrutura. Eles devem fornecer variáveis e métodos que ajudarão a construir outros módulos.
Em vez de usar funções simples e simples, por que não tentar este módulo? Componha funções abstratas de alto nível ou até mesmo novas ideias baseadas em funções para resolver seus problemas. Observe que, por enquanto, ofereceremos suporte apenas a estratégias de funções multiobjetivo.
Só porque estamos computando coisas não significa que não precisamos de matemática. Math é o pacote matemático que contém implementações matemáticas de baixo nível. De números aleatórios à geração de distribuição, você pode encontrar suas necessidades neste módulo.
É por isso que somos chamados de Opytimizer. Este é o coração da heurística, onde você pode encontrar um grande número de meta-heurísticas, técnicas de otimização, qualquer coisa que possa ser chamada de otimizador. Por favor, dê uma olhada nos otimizadores disponíveis.
Pode-se ver o espaço como o local onde os agentes atualizarão suas posições e avaliarão uma função de aptidão. No entanto, as abordagens mais recentes podem considerar um tipo diferente de espaço. Pensando nisso, temos o prazer de apoiar diversas implementações espaciais.
Este é um pacote de utilitários. Coisas comuns compartilhadas no aplicativo devem ser implementadas aqui. É melhor implementar uma vez e usar como desejar do que reimplementar a mesma coisa repetidamente.
Todo mundo precisa de imagens e enredos para ajudar a visualizar o que está acontecendo, correto? Este pacote fornecerá todos os métodos relacionados ao visual para você. Verifique a convergência de uma variável específica, a convergência de sua função de fitness, plote superfícies de função de benchmark e muito mais!
Acreditamos que tudo tem que ser fácil. Não é complicado nem assustador, o Opytimizer será o pacote completo de que você precisará, desde a primeira instalação até as necessidades de implementação das tarefas diárias. Se você puder apenas executar o seguinte em seu ambiente Python preferido (raw, conda, virtualenv, qualquer que seja):
pip install opytimizer
Alternativamente, se você preferir instalar a versão mais recente, clone este repositório e use:
pip install -e .
Observe que às vezes há necessidade de implementação adicional. Se necessário, a partir daqui você saberá todos os seus detalhes.
Nenhum comando adicional específico é necessário.
Nenhum comando adicional específico é necessário.
Nenhum comando adicional específico é necessário.
Dê uma olhada em um exemplo prático rápido do Opytimizer. Observe que não estamos passando muitos argumentos extras nem informações adicionais ao procedimento. Para exemplos mais complexos, verifique nossa pasta 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 )
Sabemos que fazemos o nosso melhor, mas é inevitável reconhecer que cometemos erros. Se você precisar reportar um bug, reportar um problema, fale conosco, faça-o! Estaremos disponíveis no nosso melhor neste repositório.