Дифференциальная эволюция SciPy

Дифференциальная эволюция SciPy Изучение

Эта статья о дифференциальной эволюции SciPy (DE). SciPy — это библиотека языка Python, а Differential Evolution — это метод или функция библиотеки SciPy. Большинство людей изучают Python, независимо от того, являются они разработчиками или нет, поскольку многочисленные библиотеки и функции Python делают его очень безопасным и надежным. SciPy часто используется для решения дифференциальных и алгебраических уравнений, интерполяции, оптимизации и т. д. Здесь мы обсуждаем использование SciPy DE, чтобы помочь вам понять, как реализовать функцию дифференциальной эволюции SciPy в приложениях Python.

Что такое дифференциальная эволюция SciPy на языке Python?

Scipy — это поверхностная, бесплатная и понятная библиотека, используемая для решения научных и математических задач. SciPy — это сокровищница для разработчиков, потому что в его библиотеке полно бесценных модулей. Она расширяет функциональность NumPy ценным кластером алгоритмов. В библиотеке SciPy есть подпакеты, которые можно использовать для вычислений, такие как scipy.io, scipy.optimize и т. д. SciPy создает функцию «дифференциальной эволюции» и множество мощных функций в пакете scipy.optimize. scipy.optimize используется для оптимизации приложений Python.

Дифференциальная эволюционная функция — это глобальная функция, полученная пакетом оптимизации SciPy, которая используется для нахождения глобального минимума многомерных функций. Он может управлять многомерными целевыми функциями, которые являются нелинейными и недифференцируемыми. Это алгоритм поиска, используемый для поиска областей непрерывных пространственных функций. Эта функция работает с реальными значениями.

Синтаксис дифференциальной эволюционной функции

Функция дифференциальной эволюции присутствует в Python, используя функцию Differential_evolution(). Синтаксис функции дифференциальной эволюции показан ниже:

Функция дифференциальной эволюции присутствует в Python

Пройдемся по параметрам функции:

Функция должна вызываться с помощью f(x,*args); bounds относится к последовательности переменных, которые могут быть указаны двумя способами: стратегия является необязательной или строкой со значением по умолчанию «best1bin»; maxiter является необязательным или имеет значение типа int; popsize является целым или необязательным; tol является целым или необязательным; значение мутации находится в формате с плавающей запятой или необязательно; значение рекомбинации находится в плавающем или необязательном формате; семя нет, int, NumPy и Random.

Читайте также:  5 основных проблем и решений микросервисной архитектуры

В следующем разделе мы обсудим дифференциальную эволюционную функцию с помощью простых примеров.

Пример 1

Давайте начнем с простого примера, который разовьет ваш интерес к пониманию концепции дифференциальной эволюционной функции. Мы использовали функцию Differential_evolution(), чтобы найти минимальное значение. Но чтобы найти минимальное значение, функции требовались границы поиска и определенная вызываемая целевая функция. В результате мы определяем функцию перед использованием в программе функции Differential_Evolution. Справочный код программы указан ниже:

import numpy as np
from scipy import optimize
from scipy.optimize import differential_evolution
import matplotlib.pyplot as py
from matplotlib import cm

def func(p):

z,x=p

= np.sqrt(z ** 4 + x ** 4)

return np.sqrt(h)

DE_bounds=[[6,6],[6,6]]

res=differential_evolution(func, DE_bounds)

print(res)

Мы импортировали библиотеки, такие как SciPy и NumPy, для числовых расчетов массивов. Мы импортировали функцию Differential_Evolution из модуля scipy.optimize. Затем с помощью ключевого слова «def» мы определяем вызываемую целевую функцию и передаем параметр «p». Мы успешно определяем функцию, которая находит квадратный корень из сложения переменных NumPy, то есть z, x. Значение квадратного корня хранится в переменной «h». Мы возвращаем значение квадратного корня в определенной функции. Он возвращается в качестве аргумента.

После этого мы устанавливаем границы переменной, которую можно детализировать, объясняя минимальное и максимальное значения функции. Мы выполняем функцию Differential_evolution с параметром DE_bounds. Мы вызвали значение функции с помощью переменной с именем res. В конце мы используем оператор печати для отображения вывода. Результат отображался после запуска программы. Ожидаемый скриншот вывода показан ниже:

После этого мы устанавливаем границы переменной, которую можно

Differential_evolution() показывает, что минимальное значение функции отображается в точке (0, 0).

Пример 2

Это еще один пример функции дифференциальной эволюции. При этом мы берем массивы и применяем к ним различные операции. Справочный код программы указан ниже:

import numpy as np
from scipy import optimize
from scipy.optimize import differential_evolution

def objective_func(d):
return ( 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=differential_evolution(objective_func,_bounds,popsize=80,polish=False)

print(disp)

Как показано на предыдущем снимке экрана, мы успешно импортировали в программу библиотеку SciPy.optimize. Differential_evolution и библиотеку NumPy. Теперь определим целевую функцию, от имени которой найдем минимальное значение. Мы передали математическое выражение в целевую функцию и вернули значение в качестве аргумента определенной функции. Граница между значениями функции является обязательной. Итак, после определения функции мы зафиксировали оба значения (максимальное и минимальное).

Определив все необходимые переменные, мы вызвали функцию Differential_Evolution, чтобы найти минимальное значение функции. Мы сохранили минимальное возвращаемое значение функции в переменной с именем disp. В конце программы мы передаем переменную disp в оператор печати для отображения результата. После запуска программы минимальное значение заданной функции отображается на экране с границами. Вывод следующий:

Определив все необходимые переменные, мы вызвали функцию

Пример 3

Как мы видим, дифференциальная эволюция возвращает разные минимальные значения целевой функции в зависимости от ее определения. Здесь мы возьмем еще один пример, связанный с дифференциальной_эволюцией(). Справочный код для этой программы показан ниже:

import numpy as np
from scipy import optimize
from scipy.optimize import differential_evolution

def obj_func(oper):
return 3 ** 9 / 0.2 + 6 /3 *2 ** 20

boundary=[(0.5,0.5),(0.5,0.5)]

out=differential_evolution(obj_func,boundary,polish=True)

print(‘Output is : ‘, out)

Библиотеки успешно импортированы в эту программу, потому что без них мы не можем выполнять нужные нам операции. В итоге включаем в программу библиотеку SciPy. После этого определите целевую функцию с требуемой операцией. Находим минимальное значение этой определенной функции. После настройки границы функции мы вызвали заданную функцию в дифференциальной эволюции, чтобы найти минимальное значение функции. Затем это сохраняется в переменной. Мы отображаем это, вызывая эту переменную в операторе печати. Вывод этой программы показан ниже:

Как и на предыдущем снимке экрана, минимальное значение функции

Как и на предыдущем снимке экрана, минимальное значение функции — [0,29236931, 0,16808904]. Вы также можете запустить эти примеры в своей среде, чтобы лучше понять концепцию функции Differential_Evolution.

Заключение

Давайте кратко повторим эту статью. Мы поняли основные функциональные возможности метода дифференциальной эволюции, принадлежащего библиотеке SciPy в Python. Python — самый последний язык с многочисленными гибкими библиотеками. Большинству разработчиков помогали в решении сложных структур кода предопределенные функции и библиотеки. Дифференциальная эволюция — это функция оптимизации пакета SciPy или метод, используемый для минимизации. Когда вы используете эти предыдущие примеры в коде, вы более четко понимаете концепцию дифференциальной эволюции.

Оцените статью
bestprogrammer.ru
Добавить комментарий