SciPy Differentialevolution

Scipy Differentialevolution



Dieser Artikel handelt von SciPy Differential Evolution (DE). SciPy ist die Bibliothek der Python-Sprache, und Differential Evolution ist die Methode oder Funktion der SciPy-Bibliothek. Die meisten Menschen haben Python gelernt, ob sie nun Entwickler sind oder nicht, da die zahlreichen Bibliotheken und Funktionen von Python es sehr sicher und zuverlässig machen. SciPy wird häufig zum Lösen von Differential- und algebraischen Gleichungen, Interpolation, Optimierung usw. verwendet. Hier diskutieren wir die Verwendung von SciPy DE, um Ihnen zu helfen, zu verstehen, wie Sie die SciPy-Differenzentwicklungsfunktion in Python-Anwendungen implementieren.

Was ist SciPy Differential Evolution in der Python-Sprache?

Scipy ist eine oberflächliche, kostenlose und verständliche Bibliothek zur Lösung wissenschaftlicher und mathematischer Probleme. SciPy ist eine Schatzkiste für Entwickler, da seine Bibliothek voller wertvoller Module ist. SciPy erweitert die NumPy-Funktionalität um ein wertvolles Cluster von Algorithmen. Die SciPy-Bibliothek verfügt über Unterpakete, die für Berechnungen verwendet werden können, wie scipy.io, scipy.optimize usw. SciPy erzeugt eine „Differential Evolution“-Funktion und viele leistungsstarke Funktionen im scipy.optimize-Paket. Die scipy.optimize wird zur Optimierung in Python-Anwendungen verwendet.

Die differentielle Evolutionsfunktion ist eine globale Funktion, die vom SciPy-Optimierungspaket erworben wird, das verwendet wird, um das globale Minimum von multivariaten Funktionen zu finden. Es kann mehrdimensionale Zielfunktionen verwalten, die nicht linear und nicht differenzierbar sind. Es ist ein Suchalgorithmus, der zum Suchen von Bereichen kontinuierlicher Raumfunktionen verwendet wird. Diese Funktion arbeitet mit realen Werten.







Syntax der differentiellen Evolutionsfunktion

Die differentielle Evolutionsfunktion ist in Python vorhanden und verwendet die Funktion differential_evolution () . Die Syntax der differentiellen Evolutionsfunktion ist unten dargestellt:





Gehen wir die Funktionsparameter durch:





Die Funktion muss mit f(x,*args) aufrufbar sein; Grenzen bezieht sich auf die Folge von Variablen, die auf zwei Arten angegeben werden können: Strategie ist optional oder ein String mit dem Standardwert „best1bin“; maxiter ist optional oder ein int-Wert; popsize ist int oder optional; tol ist int oder optional; Mutationswert ist in Gleitkommazahl oder optional; Rekombinationswert ist in Gleitkommazahl oder optional; der Seed ist none, int, NumPy und Random.

Im nächsten Abschnitt werden wir anhand einfacher Beispiele eine differentielle Evolutionsfunktion diskutieren.



Beispiel 1

Beginnen wir mit einem einfachen Beispiel, das Ihr Interesse am Verständnis des Konzepts der differentiellen Evolutionsfunktion wecken wird. Wir haben die Funktion differential_evolution() verwendet, um den Mindestwert zu finden. Aber um den Minimalwert zu finden, benötigte die Funktion Suchgrenzen und eine definierte aufrufbare Zielfunktion. Als Ergebnis definieren wir eine Funktion, bevor wir die Funktion differentielle_evolution im Programm verwenden. Der Referenzcode des Programms ist unten angegeben:

importieren taub als z.B.
von spitz importieren optimieren
von spitz. optimieren importieren differentielle_evolution
importieren matplotlib. Pyplot als py
von matplotlib importieren cm

def Funk ( p ) :

mit , x = p

h = z.B. quadrat ( mit ** 4 +x** 4 )

Rückkehr z.B. quadrat ( h )


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

res = differentielle_evolution ( Funk , DE_bounds )

drucken ( res )

Wir haben Bibliotheken wie SciPy und NumPy für numerische Array-Berechnungen importiert. Wir haben die Funktion differential_evolution aus dem Modul scipy.optimize importiert. Dann definieren wir mit dem Schlüsselwort „def“ die aufrufbare Zielfunktion und übergeben den Parameter „p“. Wir definieren erfolgreich die Funktion, die die Quadratwurzel der Addition der NumPy-Variablen findet, also z, x. Der Quadratwurzelwert wird in der Variablen „h“ gespeichert. Wir geben den Quadratwurzelwert in der definierten Funktion zurück. Es wird als Argument zurückgegeben.

Danach legen wir die Grenzen der Variablen fest, die aufgeschlüsselt werden können, indem wir die Mindest- und Höchstwerte der Funktion erläutern. Wir führen die Funktion differentielle_evolution mit ‚DE_bounds‘‘ als Argument aus. Wir haben den Funktionswert mit einer Variablen namens res aufgerufen. Am Ende verwenden wir die print-Anweisung, um die Ausgabe anzuzeigen. Das Ergebnis wurde nach dem Ausführen des Programms angezeigt. Der erwartete Ausgabe-Screenshot ist unten dargestellt:

Differential_evolution() zeigt, dass der Minimalwert der Funktion am Punkt (0, 0) angezeigt wird.

Beispiel 2

Dies ist ein weiteres Beispiel für die differentielle Evolutionsfunktion. Dabei nehmen wir Arrays und wenden verschiedene Operationen zwischen ihnen an. Der Referenzcode des Programms ist unten angegeben:

importieren taub als z.B.
von spitz importieren optimieren
von spitz. optimieren importieren differentielle_evolution

def Zielfunktion ( d ) :
Rückkehr ( d [ 1 ] - 1.2 ) / 2 + 0,5 * d [ 0 ] * 1.3 * ( d [ 1 ] + 0,5 ) ** 3

_Grenzen = [ ( - 0,3 , 0,3 ) , ( - 0,3 , 0,3 ) ]

Anzeige = differentielle_evolution ( Zielfunktion , _Grenzen , poppig = 80 , Polieren = FALSCH )

drucken ( Anzeige )

Wie im vorherigen Screenshot gezeigt, haben wir die SciPy.optimize.differential_evolution-Bibliothek und die NumPy-Bibliothek erfolgreich in das Programm importiert. Nun definieren wir eine objektive Funktion, für die wir einen Minimalwert finden. Wir haben den mathematischen Ausdruck in der Zielfunktion übergeben und einen Wert als Argument an die definierte Funktion zurückgegeben. Die Grenze zwischen Funktionswerten ist ein Muss. Nachdem wir die Funktion definiert hatten, haben wir also beide Werte (Maximum und Minimum) festgelegt.

Nachdem wir alle wesentlichen Variablen definiert hatten, haben wir die Funktion differential_evolution aufgerufen, um den Minimalwert einer Funktion zu finden. Wir haben den minimalen Rückgabewert der Funktion in einer Variablen namens disp gespeichert. Am Ende des Programms übergeben wir die disp-Variable in der print-Anweisung, um das Ergebnis anzuzeigen. Nach dem Ausführen des Programms wird der Minimalwert der definierten Funktion mit Grenzen auf dem Bildschirm angezeigt. Das Folgende ist die Ausgabe:

Beispiel 3

Wie wir sehen können, liefert die differentielle Evolution unterschiedliche Mindestwerte einer objektiven Funktion basierend auf ihrer Definition. Hier nehmen wir ein weiteres Beispiel in Bezug auf differentielle_evolution(). Der Referenzcode für dieses Programm ist unten dargestellt:

importieren taub als z.B.
von spitz importieren optimieren
von spitz. optimieren importieren differentielle_evolution

def obj_funktion ( Oper ) :
Rückkehr 3 ** 9 / 0,2 + 6 / 3 * 2 ** zwanzig

Grenze = [ ( - 0,5 , 0,5 ) , ( - 0,5 , 0,5 ) ]

aus = differentielle_evolution ( obj_funktion , Grenze , Polieren = Wahr )

drucken ( 'Ausgabe ist: ' , aus )

Die Bibliotheken werden erfolgreich in dieses Programm importiert, da wir die gewünschten Operationen ohne sie nicht ausführen können. Aus diesem Grund nehmen wir die SciPy-Bibliothek in das Programm auf. Definieren Sie danach die Zielfunktion mit der erforderlichen Operation. Wir finden den Minimalwert dieser definierten Funktion. Nachdem wir die Grenze der Funktion angepasst hatten, riefen wir die definierte Funktion in differentieller Evolution auf, um den Minimalwert der Funktion zu finden. Diese wird dann in der Variable gehalten. Wir zeigen dies an, indem wir diese Variable in der Druckanweisung aufrufen. Die Ausgabe dieses Programms ist unten dargestellt:

Wie im vorherigen Screenshot ist der Mindestwert der Funktion [0,29236931, 0,16808904]. Sie können diese Beispiele auch in Ihrer Umgebung ausführen, um das Konzept der differentiellen Evolutionsfunktion besser zu verstehen.

Fazit

Fassen wir diesen Artikel kurz zusammen. Wir haben die grundlegende Funktionalität der differentiellen Evolutionsmethode verstanden, die zur SciPy-Bibliothek in Python gehört. Python ist die neueste Sprache mit zahlreichen flexiblen Bibliotheken. Die meisten Entwickler wurden beim Lösen komplexer Codestrukturen durch vordefinierte Funktionen und Bibliotheken unterstützt. Differentielle Evolution ist eine SciPy-Paketoptimierungsfunktion oder -methode, die zur Minimierung verwendet wird. Wenn Sie diese vorherigen Beispiele im Code verwenden, verstehen Sie das Konzept der differentiellen Evolution besser.