Scipy differensiell evolusjon

Scipy differensiell evolusjon
Denne artikkelen handler om Scipy Differential Evolution (DE). Scipy er biblioteket til Python -språket, og differensiell evolusjon er metoden eller funksjonen til Scipy Library. De fleste har lært Python, enten de er utviklere eller ikke, siden Pythons mange biblioteker og funksjoner gjør det veldig sikkert og pålitelig. Scipy brukes ofte til å løse differensielle og algebraiske ligninger, interpolering, optimalisering osv. Her diskuterer vi Scipy DE -bruk for å hjelpe deg med å forstå hvordan du implementerer Scipy Differential Evolution -funksjonen i Python -applikasjoner.

Hva er Scipy Differential Evolution på Python -språket?

Scipy er et overfladisk, gratis og forståelig bibliotek som brukes til å løse vitenskapelige og matematiske problemer. Scipy er en skattekasse for utviklere fordi biblioteket er fullt av dyrebare moduler. Scipy utvider numpy funksjonalitet med en verdifull klynge av algoritmer. Scipy-biblioteket har underpakker som kan brukes til beregninger, som Scipy.io, scipy.Optimaliser osv. Scipy produserer en "differensiell evolusjon" -funksjon og mange kraftige funksjoner i scipy.Optimaliser pakken. Scipy.Optimaliser brukes til optimalisering i Python -applikasjoner.

Differensiell evolusjonsfunksjon er en global funksjon anskaffet av Scipy Optimize -pakken som brukes til å finne det globale minimum av multivariate funksjoner. Den kan håndtere flerdimensjonale objektive funksjoner som er ikke-lineære og ikke-differensierende. Det er en søkealgoritme som brukes til å søke om områder med kontinuerlige romfunksjoner. Denne funksjonen fungerer på reelle verdier.

Syntaks for differensiell evolusjonsfunksjon

Differensiell evolusjonsfunksjon er til stede i Python ved å bruke funksjonen Differensial_evolution (). Syntaks for differensialutviklingsfunksjonen er vist nedenfor:

La oss gå over funksjonsparametrene:

Funksjonen må være kalt med F (x,*args); Grenser refererer til sekvensen av variabler som kan spesifiseres på to måter: strategi er valgfri eller en streng med standardverdien “best1bin”; Maxiter er valgfritt eller en INT -verdi; PopSize er int eller valgfritt; TOL er int eller valgfritt; Mutasjonsverdien er i float eller valgfri; Rekombinasjonsverdi er i float eller valgfritt; frøet er ingen, int, numpy og tilfeldig.

I neste avsnitt vil vi diskutere en differensiell evolusjonsfunksjon ved hjelp av enkle eksempler.

Eksempel 1

La oss begynne med et enkelt eksempel som vil utvikle din interesse for å forstå konseptet med differensiell evolusjonsfunksjon. Vi brukte differensial_evolution () -funksjonen for å finne minimumsverdien. Men for å finne minimumsverdien, krevde funksjonen nødvendige søkegrenser og en definert kallbar objektiv funksjon. Som et resultat definerer vi en funksjon før vi bruker differensial_evolusjonsfunksjonen i programmet. Referansekoden til programmet er nevnt nedenfor:

Importer numpy som NP
fra Scipy Import Optimize
Fra scipy.Optimaliser importdifferensial_evolusjon
Importer matplotlib.Pyplot som py
fra matplotlib import cm
def func (p):
z, x = p
h = np.SQRT (Z ** 4 + X ** 4)
Return NP.SQRT (H)
De_bounds = [[-6,6], [-6,6]]
res = differensial_evolution (func, de_bounds)
trykk (res)

Vi importerte biblioteker som Scipy og Numpy for Array Numerical Beregning. Vi importerte differensial_evolusjonsfunksjonen fra scipy.Optimaliser modulen. Deretter, med nøkkelordet "def", definerer vi den kallbare objektfunksjonen og passerer parameteren "P". Vi definerer vellykket funksjonen som finner kvadratroten til numpy variabler -tillegget, som er z, x. Kvadratrotverdien lagres i variabelen “h”. Vi returnerer kvadratrotverdien i den definerte funksjonen. Det blir returnert som et argument.

Etter det avgjør vi grensene for variabelen som kan spesifiseres ved å forklare min og maksimale verdier for funksjonen. Vi utfører differensial_evolusjonsfunksjonen med 'de_bounds' 'som et argument. Vi kalte funksjonsverdien med en variabel som heter Res. Til slutt bruker vi utskriftserklæringen for å vise utdataene. Resultatet ble vist etter å ha kjørt programmet. Det forventede skjermbildet er vist nedenfor:

Differensial_evolution () viser at minimumsverdien for funksjonen vises på punktet (0, 0).

Eksempel 2

Dette er et annet eksempel på den differensielle evolusjonsfunksjonen. I dette tar vi matriser og bruker forskjellige operasjoner mellom dem. Referansekoden til programmet er nevnt nedenfor:

Importer numpy som NP
fra Scipy Import Optimize
Fra scipy.Optimaliser importdifferensial_evolusjon
def objective_func (d):
Retur (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 = differensial_evolution (objektiv_func, _Bounds, PopSize = 80, Polish = FALSE)
trykk (disp)

Som vist i forrige skjermbilde, importerte vi scipy med hell.optimalisere.Differensial_evolution Library og Numpy -biblioteket inn i programmet. Nå definerer vi en objektiv funksjon på vegne som vi finner en minimumsverdi. Vi passerte det matematiske uttrykket i den objektive funksjonen og returnerte en verdi som et argument til den definerte funksjonen. Grensen mellom funksjonsverdier er et must. Så etter å ha definert funksjonen, fikset vi både verdiene (maksimum og minimum).

Etter å ha definert alle essensielle variabler, kalte vi Differensial_evolution -funksjonen for å finne minimumsverdien til en funksjon. Vi lagret funksjonens minimumsavkastningsverdi i en variabel kalt disp. På slutten av programmet passerer vi DISP -variabelen i utskriftserklæringen for å vise resultatet. Etter å ha kjørt programmet vises minimumsverdien for den definerte funksjonen på skjermen med grenser. Følgende er utgangen:

Eksempel 3

Som vi kan se, returnerer differensiell evolusjon forskjellige minimumsverdier for en objektiv funksjon basert på dens definisjon. Her tar vi et annet eksempel relatert til differensial_evolution (). Referansekoden for dette programmet vises nedenfor:

Importer numpy som NP
fra Scipy Import Optimize
Fra scipy.Optimaliser importdifferensial_evolusjon
def obj_func (oper):
Returner 3 ** 9/0.2 + 6 /3 *2 ** 20
grense = [(-0.5,0.5), (-0.5,0.5)]
ut = differensial_evolution (obj_func, grense, polsk = true)
trykk ('output er:', ut)

Bibliotekene importeres vellykket til dette programmet fordi vi ikke kan utføre operasjonene vi ønsker uten dem. Som et resultat inkluderer vi Scipy -biblioteket i programmet. Etter det, definer objektivfunksjonen med den nødvendige driften. Vi finner minimumsverdien for den definerte funksjonen. Etter å ha justert funksjonens grense, kalte vi den definerte funksjonen i differensiell evolusjon for å finne funksjonens minimumsverdi. Dette holdes deretter i variabelen. Vi viser dette ved å kalle denne variabelen i utskriftserklæringen. Utgangen til dette programmet vises nedenfor:

Som i forrige skjermbilde er minimumsverdien til funksjonen [0.29236931, 0.16808904]. Du kan også kjøre disse eksemplene i miljøet ditt for bedre å forstå Differensial_evolution -funksjonskonseptet.

Konklusjon

La oss ta en rask oversikt over denne artikkelen. Vi tok tak i den grunnleggende funksjonaliteten til differensialutviklingsmetoden som tilhører Scipy -biblioteket i Python. Python er det siste språket, med mange fleksible biblioteker. De fleste utviklere fikk hjelp til å løse komplekse kodestrukturer av forhåndsdefinerte funksjoner og biblioteker. Differensiell evolusjon er en scipy -pakkeoptimaliseringsfunksjon eller metode som brukes til minimering. Når du bruker disse tidligere eksemplene i kode, forstår du tydeligere begrepet differensiell evolusjon.