SciPy Differential Evolution

Scipy Differential Evolution



Ez a cikk a SciPy Differential Evolution-ról (DE) szól. A SciPy a Python nyelv könyvtára, a Differential Evolution pedig a SciPy könyvtár módszere vagy funkciója. A legtöbben tanulják a Python-t, akár fejlesztők, akár nem, mivel a Python számos könyvtára és funkciója nagyon biztonságossá és megbízhatóvá teszi. A SciPy-t gyakran használják differenciál- és algebrai egyenletek megoldására, interpolációra, optimalizálásra stb. Itt a SciPy DE használatáról beszélünk, hogy segítsünk megérteni, hogyan lehet megvalósítani a SciPy differenciálfejlődési függvényt Python alkalmazásokban.

Mi a SciPy Differential Evolution a Python nyelvben?

A Scipy egy felületes, ingyenes és érthető könyvtár, amelyet tudományos és matematikai kérdések megoldására használnak. A SciPy egy kincsesláda a fejlesztők számára, mert könyvtára tele van értékes modulokkal. A SciPy értékes algoritmuscsoporttal bővíti a NumPy funkcióit. A SciPy könyvtár alcsomagokat tartalmaz, amelyek számításokhoz használhatók, mint például a scipy.io, scipy.optimize stb. A SciPy egy „differenciális evolúció” függvényt és számos hatékony függvényt hoz létre a scipy.optimize csomagban. A scipy.optimize a Python alkalmazások optimalizálására szolgál.

A Differential Evolution Function a SciPy optimalizáló csomag által beszerzett globális függvény, amely a többváltozós függvények globális minimumának meghatározására szolgál. Képes kezelni többdimenziós célfüggvényeket, amelyek nem lineárisak és nem differenciálhatók. Ez egy keresési algoritmus, amelyet folytonos térfüggvények területeinek keresésére használnak. Ez a függvény valós értékeken működik.







A differenciálfejlődési függvény szintaxisa

A differenciális evolúciós függvény a Pythonban a differenciális_evolution () függvényt használja. A differenciális evolúciós függvény szintaxisa az alábbiakban látható:





Nézzük át a függvény paramétereit:





A függvénynek hívhatónak kell lennie f(x,*args); A bounds a változók sorozatára utal, amelyek kétféleképpen adhatók meg: a stratégia nem kötelező, vagy egy karakterlánc, amelynek alapértelmezett értéke „best1bin”; maxiter opcionális vagy int érték; popsize int vagy opcionális; tol int vagy opcionális; a mutáció értéke float vagy opcionális; a rekombináció értéke float vagy opcionális; a mag nincs, int, NumPy és Random.

A következő részben egy differenciális evolúciós függvényt tárgyalunk egyszerű példák segítségével.



1. példa

Kezdjük egy egyszerű példával, amely felkelti érdeklődését a differenciális evolúciós függvény fogalmának megértése iránt. A minimális érték meghatározásához a differenciális_evolution() függvényt használtuk. De a minimális érték megtalálásához a függvénynek keresési határokra és egy meghatározott hívható célfüggvényre volt szüksége. Ennek eredményeként definiálunk egy függvényt, mielőtt a differenciális_evolution függvényt használnánk a programban. A program hivatkozási kódja az alábbiakban található:

import zsibbadt mint például.
tól től scipy import optimalizálni
tól től scipy. optimalizálni import differenciális_evolúció
import matplotlib. pyplot mint py
tól től matplotlib import cm

def func ( p ) :

val vel , x = p

h = például. sqrt ( val vel ** 4 + x ** 4 )

Visszatérés például. sqrt ( h )


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

res = differenciális_evolúció ( func , DE_bounds )

nyomtatás ( res )

Olyan könyvtárakat importáltunk, mint a SciPy és a NumPy a tömbszámításokhoz. A differential_evolution függvényt a scipy.optimize modulból importáltuk. Ezután a „def” kulcsszóval definiáljuk a hívható célfüggvényt, és átadjuk a „p” paramétert. Sikeresen definiáljuk azt a függvényt, amely megkeresi a NumPy változók összeadásának négyzetgyökét, ami z, x. A négyzetgyök értéket a „h” változó tárolja. A négyzetgyök értéket adjuk vissza a definiált függvényben. Érvként adják vissza.

Ezt követően a függvény min és max értékeinek magyarázatával rendezzük a tételes változó határait. A differenciál_evolution függvényt a 'DE_bounds'' paraméterrel hajtjuk végre. A függvény értékét egy res nevű változóval hívtuk meg. Végül a print utasítást használjuk a kimenet megjelenítésére. Az eredmény a program futtatása után megjelent. A várt kimeneti képernyőkép az alábbiakban látható:

A Differential_evolution() azt mutatja, hogy a függvény minimális értéke a (0, 0) pontban jelenik meg.

2. példa

Ez egy másik példa a differenciális evolúciós függvényre. Ebben tömböket veszünk, és különböző műveleteket alkalmazunk közöttük. A program hivatkozási kódja az alábbiakban található:

import zsibbadt mint például.
tól től scipy import optimalizálni
tól től scipy. optimalizálni import differenciális_evolúció

def object_func ( d ) :
Visszatérés ( d [ 1 ] - 1.2 ) / 2 + 0.5 * d [ 0 ] * 1.3 * ( d [ 1 ] + 0.5 ) ** 3

_határok = [ ( - 0.3 , 0.3 ) , ( - 0.3 , 0.3 ) ]

diszp = differenciális_evolúció ( object_func , _bounds , popsize = 80 , fényesít = Hamis )

nyomtatás ( diszp )

Az előző képernyőképen látható módon sikeresen importáltuk a programba a SciPy.optimize.differential_evolution könyvtárat és a NumPy könyvtárat. Most definiálunk egy célfüggvényt, amelynek nevében minimális értéket találunk. A matematikai kifejezést átadtuk a célfüggvényben, és egy értéket adtunk vissza argumentumként a definiált függvényhez. A függvényértékek közötti határvonal kötelező. Tehát a függvény definiálása után mindkét értéket rögzítettük (maximum és minimum).

Az összes lényeges változó definiálása után a differenciál_evolution függvényt hívtuk meg, hogy megtaláljuk egy függvény minimális értékét. A függvény minimális visszatérési értékét elmentettük egy disp nevű változóba. A program végén a print utasításban átadjuk a disp változót az eredmény megjelenítéséhez. A program futtatása után a definiált függvény minimális értéke korlátokkal jelenik meg a képernyőn. A következő a kimenet:

3. példa

Amint látjuk, a differenciális evolúció egy célfüggvény különböző minimális értékeit adja vissza a definíciója alapján. Itt egy másik példát veszünk a differential_evolution()-hoz. A program hivatkozási kódja az alábbiakban látható:

import zsibbadt mint például.
tól től scipy import optimalizálni
tól től scipy. optimalizálni import differenciális_evolúció

def obj_func ( oper ) :
Visszatérés 3 ** 9 / 0.2 + 6 / 3 * 2 ** húsz

határ = [ ( - 0.5 , 0.5 ) , ( - 0.5 , 0.5 ) ]

ki = differenciális_evolúció ( obj_func , határ , fényesít = Igaz )

nyomtatás ( 'A kimenet:' , ki )

A programkönyvtárak sikeresen importálódnak ebbe a programba, mert nélkülük nem tudjuk végrehajtani a kívánt műveleteket. Ennek eredményeként a SciPy könyvtárat is bevonjuk a programba. Ezt követően határozza meg a célfüggvényt a kívánt művelettel. Megtaláljuk a definiált függvény minimális értékét. A függvény határának beállítása után a definiált függvényt differenciális evolúcióban hívtuk meg, hogy megtaláljuk a függvény minimális értékét. Ez ezután a változóban marad. Ezt a változó meghívásával jelenítjük meg a print utasításban. A program kimenete az alábbiakban látható:

Mint az előző képernyőképen, a függvény minimális értéke [0,29236931, 0,16808904]. Ezeket a példákat a környezetében is futtathatja, hogy jobban megértse a differenciális_evolution függvény fogalmát.

Következtetés

Vegyünk egy gyors összefoglalót erről a cikkről. Megragadtuk a Python SciPy könyvtárához tartozó differenciális evolúciós módszer alapvető funkcióit. A Python a legújabb nyelv, számos rugalmas könyvtárral. A legtöbb fejlesztőt előre definiált függvények és könyvtárak segítették összetett kódstruktúrák megoldásában. A differenciálfejlődés egy SciPy csomagoptimalizálási funkció vagy módszer, amelyet minimalizálásra használnak. Ha ezeket a korábbi példákat használja a kódban, jobban megérti a differenciális evolúció fogalmát.