O que é evolução diferencial SciPy na linguagem Python?
Scipy é uma biblioteca superficial, gratuita e compreensível usada para resolver questões científicas e matemáticas. SciPy é uma caixa de tesouro para desenvolvedores porque sua biblioteca está cheia de módulos preciosos. O SciPy expande a funcionalidade do NumPy com um conjunto valioso de algoritmos. A biblioteca SciPy tem subpacotes que podem ser usados para cálculos, como scipy.io, scipy.optimize, etc. SciPy produz uma função de “evolução diferencial” e muitas funções poderosas no pacote scipy.optimize. O scipy.optimize é usado para otimização em aplicativos Python.
A Função de Evolução Diferencial é uma função global adquirida pelo pacote de otimização SciPy que é usada para encontrar o mínimo global de funções multivariadas. Ele pode gerenciar funções objetivas multidimensionais que são não lineares e não diferenciáveis. É um algoritmo de busca usado para pesquisar áreas de funções de espaço contínuo. Esta função funciona em valores reais.
Sintaxe da Função de Evolução Diferencial
A função de evolução diferencial está presente em Python utilizando a função diferencial_evolution(). A sintaxe da função de evolução diferencial é mostrada abaixo:
Vamos ver os parâmetros da função:
A função deve ser chamada com f(x,*args); limites refere-se à sequência de variáveis que podem ser especificadas de duas maneiras: a estratégia é opcional ou uma string com o valor padrão “best1bin”; maxiter é opcional ou um valor int; popsize é int ou opcional; tol é int ou opcional; o valor da mutação é flutuante ou opcional; valor de recombinação está em float ou opcional; a semente é nenhuma, int, NumPy e Random.
Na próxima seção, discutiremos uma função de evolução diferencial com a ajuda de exemplos fáceis.
Exemplo 1
Vamos começar com um exemplo direto que desenvolverá seu interesse em entender o conceito de função de evolução diferencial. Usamos a função diferencial_evolution() para encontrar o valor mínimo. Mas, para encontrar o valor mínimo, a função exigia limites de pesquisa e uma função objetivo chamável definida. Como resultado, definimos uma função antes de usar a função de evolução_diferencial no programa. O código de referência do programa é mencionado abaixo:
importar entorpecido Como por exemplo.a partir de scipy importar otimizar
a partir de scipy. otimizar importar evolução_diferencial
importar matplotlib. pyplot Como py
a partir de matplotlib importar cm
def função ( p ) :
com , x = p
h = por exemplo. quadrado ( com ** 4 + x ** 4 )
Retorna por exemplo. quadrado ( h )
DE_bounds = [ [ - 6 , 6 ] , [ - 6 , 6 ] ]
res = evolução_diferencial ( função , DE_bounds )
impressão ( res )
Importamos bibliotecas como SciPy e NumPy para cálculos numéricos de array. Importamos a função diferencial_evolution do módulo scipy.optimize. Então, com a palavra-chave “def”, definimos a função objetivo chamável e passamos o parâmetro “p”. Definimos com sucesso a função que encontra a raiz quadrada da adição das variáveis NumPy, que é z, x. O valor da raiz quadrada é armazenado na variável “h”. Retornamos o valor da raiz quadrada na função definida. É retornado como um argumento.
Depois disso, estabelecemos os limites da variável que podem ser discriminados explicando os valores mínimo e máximo da função. Executamos a função de evolução_diferencial com ‘DE_bounds”’ como argumento. Chamamos o valor da função com uma variável chamada res. No final, usamos a instrução print para mostrar a saída. O resultado foi exibido após a execução do programa. A captura de tela de saída esperada é mostrada abaixo:
Differential_evolution() mostra que o valor mínimo da função é exibido no ponto (0, 0).
Exemplo 2
Este é outro exemplo da função de evolução diferencial. Neste, pegamos arrays e aplicamos diferentes operações entre eles. O código de referência do programa é mencionado abaixo:
importar entorpecido Como por exemplo.a partir de scipy importar otimizar
a partir de scipy. otimizar importar evolução_diferencial
def função_objetiva ( d ) :
Retorna ( d [ 1 ] - 1.2 ) / 2 + 0,5 *d [ 0 ] * 1.3 * ( d [ 1 ] + 0,5 ) ** 3
_bounds = [ ( - 0,3 , 0,3 ) , ( - 0,3 , 0,3 ) ]
disp = evolução_diferencial ( função_objetiva , _bounds , popsize = 80 , polonês = Falso )
impressão ( disp )
Conforme mostrado na captura de tela anterior, importamos com sucesso a biblioteca SciPy.optimize.differential_evolution e a biblioteca NumPy para o programa. Agora, definimos uma função objetivo em nome da qual encontramos um valor mínimo. Passamos a expressão matemática na função objetivo e retornamos um valor como argumento para a função definida. O limite entre os valores da função é obrigatório. Assim, após definir a função, fixamos ambos os valores (máximo e mínimo).
Depois de definir todas as variáveis essenciais, chamamos a função de evolução_diferencial para encontrar o valor mínimo de uma função. Salvamos o valor mínimo de retorno da função em uma variável chamada disp. No final do programa, passamos a variável disp na instrução print para exibir o resultado. Após executar o programa, o valor mínimo da função definida é exibido na tela com limites. A seguir está a saída:
Exemplo 3
Como podemos ver, a evolução diferencial retorna diferentes valores mínimos de uma função objetivo com base em sua definição. Aqui, tomamos outro exemplo relacionado a diferencial_evolução(). O código de referência para este programa é mostrado abaixo:
importar entorpecido Como por exemplo.a partir de scipy importar otimizar
a partir de scipy. otimizar importar evolução_diferencial
def obj_func ( operador ) :
Retorna 3 ** 9 / 0,2 + 6 / 3 * 2 ** vinte
fronteira = [ ( - 0,5 , 0,5 ) , ( - 0,5 , 0,5 ) ]
Fora = evolução_diferencial ( obj_func , fronteira , polonês = Verdadeiro )
impressão ( 'Saída é: ' , Fora )
As bibliotecas são importadas com sucesso para este programa porque não podemos realizar as operações que desejamos sem elas. Como resultado, incluímos a biblioteca SciPy no programa. Depois disso, defina a função objetivo com a operação necessária. Encontramos o valor mínimo dessa função definida. Depois de ajustar o limite da função, chamamos a função definida em evolução diferencial para encontrar o valor mínimo da função. Isso é então mantido na variável. Exibimos isso chamando essa variável na instrução de impressão. A saída deste programa é mostrada abaixo:
Como na captura de tela anterior, o valor mínimo da função é [0,29236931, 0,16808904]. Você também pode executar esses exemplos em seu ambiente para entender melhor o conceito de função diferencial_evolução.
Conclusão
Vamos fazer uma rápida recapitulação deste artigo. Apreendemos a funcionalidade básica do método de evolução diferencial que pertence à biblioteca SciPy em Python. Python é a linguagem mais recente, com inúmeras bibliotecas flexíveis. A maioria dos desenvolvedores foi auxiliada na resolução de estruturas de código complexas por funções e bibliotecas predefinidas. A evolução diferencial é uma função ou método de otimização do pacote SciPy usado para minimização. Quando você usa esses exemplos anteriores no código, você entende mais claramente o conceito de evolução diferencial.