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.