Hva er SciPy Differential Evolution i Python Language?
Scipy er et overfladisk, gratis og forståelig bibliotek som brukes til å løse vitenskapelige og matematiske problemer. SciPy er en skatteboks for utviklere fordi biblioteket er fullt av verdifulle moduler. SciPy utvider NumPy-funksjonaliteten med en verdifull klynge av algoritmer. SciPy-biblioteket har underpakker som kan brukes til beregninger, som scipy.io, scipy.optimize, etc. SciPy produserer en 'differensiell evolusjon'-funksjon og mange kraftige funksjoner i scipy.optimize-pakken. scipy.optimize brukes for optimalisering i Python-applikasjoner.
Differensial Evolution Function er en global funksjon anskaffet av SciPy optimize-pakken som brukes til å finne det globale minimum av multivariate funksjoner. Den kan administrere flerdimensjonale objektivfunksjoner som er ikke-lineære og ikke-differensierbare. Det er en søkealgoritme som brukes til å søke i områder med kontinuerlige romfunksjoner. Denne funksjonen fungerer på reelle verdier.
Syntaks for differensiell evolusjonsfunksjon
Differensialevolusjonsfunksjonen er til stede i Python ved å bruke funksjonen differential_evolution (). Syntaksen til differensialevolusjonsfunksjonen er vist nedenfor:
La oss gå over funksjonsparametrene:
Funksjonen må kunne kalles med f(x,*args); bounds 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 flytende eller valgfri; rekombinasjonsverdien er flytende eller valgfri; frøet er none, int, NumPy og Random.
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 funksjonen differential_evolution() for å finne minimumsverdien. Men for å finne minimumsverdien krevde funksjonen søkegrenser og en definert anropbar objektivfunksjon. Som et resultat definerer vi en funksjon før vi bruker funksjonen differential_evolution i programmet. Referansekoden til programmet er nevnt nedenfor:
import nusset som f.eks.fra scipy import optimalisere
fra krypende. optimalisere import differensiell_evolusjon
import matplotlib. pyplot som py
fra matplotlib import cm
def func ( s ) :
med , x = s
h = f.eks. sqrt ( med ** 4 + x ** 4 )
komme tilbake f.eks. sqrt ( h )
DE_grenser = [ [ - 6 , 6 ] , [ - 6 , 6 ] ]
res = differensiell_evolusjon ( func , DE_grenser )
skrive ut ( res )
Vi importerte biblioteker som SciPy og NumPy for numeriske array-beregninger. Vi importerte funksjonen differential_evolution fra scipy.optimize-modulen. Deretter, med nøkkelordet 'def', definerer vi den anropbare objektivfunksjonen og sender parameteren 'p'. Vi definerer funksjonen som finner kvadratroten av addisjonen til NumPy-variablene, som er z, x. Kvadratrotverdien lagres i variabelen 'h'. Vi returnerer kvadratrotverdien i den definerte funksjonen. Det returneres som et argument.
Etter det avgjør vi grensene for variabelen som kan spesifiseres ved å forklare min- og maksverdiene til funksjonen. Vi utfører funksjonen differential_evolution med 'DE_bounds'' som argument. Vi kalte funksjonsverdien med en variabel kalt res. Til slutt bruker vi print-setningen for å vise resultatet. Resultatet ble vist etter å ha kjørt programmet. Det forventede utdataskjermbildet er vist nedenfor:
Differential_evolution() viser at minimumsverdien til funksjonen vises ved punkt (0, 0).
Eksempel 2
Dette er et annet eksempel på differensial evolusjonsfunksjonen. I dette tar vi matriser og bruker forskjellige operasjoner mellom dem. Referansekoden til programmet er nevnt nedenfor:
import nusset som f.eks.fra scipy import optimalisere
fra scipy. optimalisere import differensiell_evolusjon
def objektiv_funksjon ( d ) :
komme tilbake ( d [ 1 ] - 1.2 ) / 2 + 0,5 *d [ 0 ] * 1.3 * ( d [ 1 ] + 0,5 ) ** 3
_grenser = [ ( - 0,3 , 0,3 ) , ( - 0,3 , 0,3 ) ]
disp = differensiell_evolusjon ( objektiv_funksjon , _grenser , popsize = 80 , pusse = Falsk )
skrive ut ( disp )
Som vist i forrige skjermbilde, importerte vi SciPy.optimize.differential_evolution-biblioteket og NumPy-biblioteket til programmet. Nå definerer vi en objektiv funksjon som vi finner en minimumsverdi på vegne av. Vi passerte det matematiske uttrykket i objektivfunksjonen og returnerte en verdi som et argument til den definerte funksjonen. Grensen mellom funksjonsverdier er et must. Så, etter å ha definert funksjonen, fikset vi begge verdiene (maksimum og minimum).
Etter å ha definert alle essensielle variabler, kalte vi funksjonen differential_evolution for å finne minimumsverdien til en funksjon. Vi lagret funksjonens minste returverdi i en variabel kalt disp. På slutten av programmet sender vi disp-variabelen i print-setningen 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 differential_evolution(). Referansekoden for dette programmet er vist nedenfor:
import nusset som f.eks.fra krypende import optimalisere
fra scipy. optimalisere import differensiell_evolusjon
def obj_func ( oper ) :
komme tilbake 3 ** 9 / 0,2 + 6 / 3 * 2 ** tjue
grense = [ ( - 0,5 , 0,5 ) , ( - 0,5 , 0,5 ) ]
ute = differensiell_evolusjon ( obj_func , grense , pusse = ekte )
skrive ut ( 'Utdata er:' , ute )
Bibliotekene er vellykket importert til dette programmet fordi vi ikke kan utføre operasjonene vi ønsker uten dem. Som et resultat inkluderer vi SciPy-biblioteket i programmet. Definer deretter målfunksjonen med den nødvendige operasjonen. Vi finner minimumsverdien til den definerte funksjonen. Etter å ha justert funksjonens grense, kalte vi den definerte funksjonen i differensiell utvikling for å finne funksjonens minimumsverdi. Denne beholdes da i variabelen. Vi viser dette ved å kalle denne variabelen i print-setningen. Utgangen av dette programmet er vist nedenfor:
Som i forrige skjermbilde er minimumsverdien for funksjonen [0.29236931, 0.16808904]. Du kan også kjøre disse eksemplene i ditt miljø for bedre å forstå funksjonskonseptet differential_evolution.
Konklusjon
La oss ta en rask oppsummering av denne artikkelen. Vi tok tak i den grunnleggende funksjonaliteten til differensialevolusjonsmetoden som tilhører SciPy-biblioteket i Python. Python er det nyeste språket, med mange fleksible biblioteker. De fleste utviklere ble hjulpet til å løse komplekse kodestrukturer av forhåndsdefinerte funksjoner og biblioteker. Differensiell evolusjon er en SciPy-pakkeoptimaliseringsfunksjon eller -metode som brukes for minimering. Når du bruker disse tidligere eksemplene i kode, forstår du begrepet differensiell evolusjon tydeligere.