Ewolucja różnicowa Scipy

Ewolucja różnicowa Scipy
Ten artykuł dotyczy ewolucji różnicowej Scipy (DE). Scipy to biblioteka języka Pythona, a ewolucja różnicowa to metoda lub funkcja biblioteki Scipy. Większość ludzi uczyła się Pythona, niezależnie od tego, czy są programistami, czy nie, ponieważ liczne biblioteki i funkcje Pythona sprawiają, że jest to bardzo bezpieczne i niezawodne. SCIPY jest często stosowany do rozwiązywania równań różnicowych i algebraicznych, interpolacji, optymalizacji itp. Tutaj dyskutujemy o użyciu Scipy DE, aby pomóc Ci zrozumieć, jak wdrożyć funkcję ewolucji różnicowej Scipy w aplikacjach Python.

Co to jest ewolucja różnicowa Scipy w języku Python?

SCIPY to powierzchowna, bezpłatna i zrozumiała biblioteka używana do rozwiązywania problemów naukowych i matematycznych. Scipy to skrzynka skarbowa dla programistów, ponieważ jego biblioteka jest pełna cennych modułów. SCIPY rozszerza funkcjonalność Numpy o cenną klaster algorytmów. Biblioteka Scipy ma podkładki, które można użyć do obliczeń, takich jak Scipy.IO, Scipy.zoptymalizuj itp. Scipy tworzy funkcję „ewolucji różnicowej” i wiele potężnych funkcji w Scipy.optymalizuj pakiet. Scipy.Optymalizacja jest używana do optymalizacji w aplikacjach Python.

Różnicowa funkcja ewolucji to funkcja globalna nabyta przez pakiet SCIPY Optimize, który służy do znalezienia globalnego minimum funkcji wieloczynnikowych. Może zarządzać wielowymiarowymi funkcjami celu, które są nieliniowe i nie różnicowe. Jest to algorytm wyszukiwania używany do wyszukiwania obszarów ciągłych funkcji przestrzeni. Ta funkcja działa na rzeczywistych wartościach.

Składnia funkcji ewolucji różnicowej

Różnicowa funkcja ewolucji jest obecna w Pythonie przy użyciu funkcji różnicowej_evolution (). Składnia funkcji ewolucji różnicowej pokazano poniżej:

Przejrzyjmy parametry funkcji:

Funkcja musi być nazywana z F (x,*args); granice odnoszą się do sekwencji zmiennych, które można określić na dwa sposoby: Strategia jest opcjonalna lub ciąg o wartości domyślnej „Best1bin”; Maxiter jest opcjonalny lub wartość INT; PopSize jest int lub opcjonalny; TOL jest int lub opcjonalny; Wartość mutacji jest w float lub opcjonalna; Wartość rekombinacji jest w float lub opcjonalna; ziarno nie jest, int, numpy i losowe.

W następnej sekcji omówimy funkcję ewolucji różnicowej za pomocą łatwych przykładów.

Przykład 1

Zacznijmy od prostego przykładu, który rozwinie twoje zainteresowanie zrozumieniem koncepcji funkcji ewolucji różnicowej. Użyliśmy funkcji różnicy_evolution (), aby znaleźć minimalną wartość. Ale, aby znaleźć minimalną wartość, funkcja wymagała granic wyszukiwania i zdefiniowanej funkcji celu, które można obiektować. W rezultacie definiujemy funkcję przed użyciem funkcji różnicowej_evolution w programie. Kod referencyjny programu jest wspomniany poniżej:

importować Numpy jako NP
z Scipy Import Optimalize
od Scipy.Zoptymalizuj import różnicowy_evolution
importować matplotlib.Pyplot as Py
z Matplotlib Import CM
Def Func (P):
Z, x = P
H = NP.sqrt (z ** 4 + x ** 4)
zwróć NP.sqrt (h)
De_bounds = [[-6,6], [-6,6]]
res = różnicowa_evolution (func, de_bounds)
Drukuj (res)

Zaimportowaliśmy biblioteki takie jak Scipy i Numpy do obliczeń numerycznych tablicy. Zaimportowaliśmy funkcję różnicowej_ewolucji z Scipy.Zoptymalizuj moduł. Następnie, za pomocą słowa kluczowego „def”, definiujemy funkcję celu, w którym możliwe jest i przekazujemy parametr „P”. Z powodzeniem definiujemy funkcję, która znajduje pierwiastek kwadratowy dodawania zmiennych Numpy, czyli z, x. Wartość pierwiastka kwadratowego jest przechowywana w zmiennej „H”. Zwracamy wartość pierwiastka kwadratowego w zdefiniowanej funkcji. Jest zwracany jako argument.

Następnie rozstrzygamy granice zmiennej, które można wyszczególnić, wyjaśniając wartości min i maksymalnie funkcji. Wykonujemy funkcję różnicową_evolution z „de_bounds” jako argument. Nazwaliśmy wartość funkcji ze zmienną o nazwie RES. Ostatecznie używamy instrukcji drukowania, aby pokazać wyjście. Wynik został wyświetlony po uruchomieniu programu. Oczekiwany zrzut ekranu wyjściowego pokazano poniżej:

Różnicowa_evolution () pokazuje, że minimalna wartość funkcji jest wyświetlana w punkcie (0, 0).

Przykład 2

To kolejny przykład funkcji ewolucji różnicowej. W tym bierzemy tablice i stosujemy różne operacje między nimi. Kod referencyjny programu jest wspomniany poniżej:

importować Numpy jako NP
z Scipy Import Optimalize
od Scipy.Zoptymalizuj import różnicowy_evolution
Def Comor_func (D):
powrót (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 = różnicowa_evolution (cel_func, _bounds, popsize = 80, polski = false)
Drukuj (disp)

Jak pokazano na poprzednim zrzucie ekranu, z powodzeniem zaimportowaliśmy Scipy.optymalizować.biblioteka różnicowa_evolution i biblioteka Numpy w programie. Teraz definiujemy funkcję celu w imieniu, której znajdujemy minimalną wartość. Przeszliśmy wyrażenie matematyczne w funkcji celu i zwróciliśmy wartość jako argument do określonej funkcji. Granica między wartościami funkcji jest koniecznością. Tak więc po zdefiniowaniu funkcji naprawiliśmy zarówno wartości (maksimum i minimum).

Po zdefiniowaniu wszystkich niezbędnych zmiennych nazwaliśmy funkcję różnicowej_evolution, aby znaleźć minimalną wartość funkcji. Zapisaliśmy minimalną wartość zwracania funkcji w zmiennej o nazwie DISP. Na końcu programu przekazujemy zmienną DISP w instrukcji drukowania, aby wyświetlić wynik. Po uruchomieniu programu minimalna wartość zdefiniowanej funkcji jest wyświetlana na ekranie z granicami. Poniżej znajduje się wyjście:

Przykład 3

Jak widzimy, ewolucja różnicowa zwraca różne minimalne wartości funkcji celu na podstawie jej definicji. Tutaj bierzemy kolejny przykład związany z różnicą_evolution (). Kod referencyjny dla tego programu pokazano poniżej:

importować Numpy jako NP
z Scipy Import Optimalize
od Scipy.Zoptymalizuj import różnicowy_evolution
def obj_func (oper):
zwrócić 3 ** 9 /0.2 + 6 /3 *2 ** 20
granica = [(-0.5,0.5), (-0.5,0.5)]
out = różnica_evolution (obj_func, granica, polski = true)
druk („wyjście to:”, out)

Biblioteki są z powodzeniem importowane do tego programu, ponieważ nie możemy wykonywać pożądanych operacji bez nich. W rezultacie w programie uwzględniamy bibliotekę Scipy. Następnie zdefiniuj funkcję celu za pomocą wymaganej operacji. Znajdujemy minimalną wartość tej zdefiniowanej funkcji. Po dostosowaniu granicy funkcji wywołaliśmy zdefiniowaną funkcję w ewolucji różnicowej, aby znaleźć minimalną wartość funkcji. Jest to następnie przechowywane w zmiennej. Wyświetlamy to, nazywając tę ​​zmienną w instrukcji drukowania. Wyjście tego programu pokazano poniżej:

Podobnie jak na poprzednim zrzucie ekranu, minimalna wartość funkcji wynosi [0.29236931, 0.16808904]. Możesz także uruchomić te przykłady w swoim środowisku, aby lepiej zrozumieć koncepcję funkcji różnicowej.

Wniosek

Weźmy szybkie podsumowanie tego artykułu. Chwyciliśmy podstawową funkcjonalność metody ewolucji różnicowej, która należy do biblioteki Scipy w Python. Python jest najnowszym językiem z licznymi elastycznymi bibliotekami. Większość programistów była wspomagana w rozwiązywaniu złożonych struktur kodów przez predefiniowane funkcje i biblioteki. Ewolucja różnicowa to funkcja optymalizacji pakietu Scipy lub metoda stosowana do minimalizacji. Kiedy używasz tych poprzednich przykładów w kodzie, lepiej rozumiesz koncepcję ewolucji różnicowej.