СциПи диференцијална еволуција

Scipi Diferencijalna Evolucija



Овај чланак је о СциПи диференцијалној еволуцији (ДЕ). СциПи је библиотека језика Питхон, а диференцијална еволуција је метод или функција СциПи библиотеке. Већина људи учи Питхон, без обзира да ли су програмери или не, пошто га бројне библиотеке и функције Питхон-а чине веома сигурним и поузданим. СциПи се често користи за решавање диференцијалних и алгебарских једначина, интерполацију, оптимизацију, итд. Овде говоримо о употреби СциПи ДЕ да бисмо вам помогли да разумете како да примените СциПи диференцијалну еволуциону функцију у Питхон апликацијама.

Шта је СциПи диференцијална еволуција у језику Питхон?

Сципи је површна, бесплатна и разумљива библиотека која се користи за решавање научних и математичких питања. СциПи је кутија са благом за програмере јер је његова библиотека пуна драгоцених модула. СциПи проширује НумПи функционалност са вредним кластером алгоритама. СциПи библиотека има подпакете који се могу користити за прорачуне, као што су сципи.ио, сципи.оптимизе, итд. СциПи производи функцију „диференцијалне еволуције“ и многе моћне функције у пакету сципи.оптимизе. Сципи.оптимизе се користи за оптимизацију у Питхон апликацијама.

Функција диференцијалне еволуције је глобална функција коју је набавио СциПи оптимизе пакет и која се користи за проналажење глобалног минимума мултиваријантних функција. Може управљати вишедимензионалним функцијама циља које су нелинеарне и недиференцирајуће. То је алгоритам за претрагу који се користи за претраживање области континуалних функција простора. Ова функција ради на стварним вредностима.







Синтакса функције диференцијалне еволуције

Функција диференцијалне еволуције присутна је у Питхон-у користећи функцију дифферентиал_еволутион (). Синтакса функције диференцијалне еволуције је приказана у наставку:





Хајде да пређемо преко параметара функције:





Функција мора бити позвана са ф(к,*аргс); границе се односе на низ променљивих који се могу специфицирати на два начина: стратегија је опциона или низ са подразумеваном вредношћу „бест1бин“; макитер је опциони или инт вредност; попсизе је инт или опционо; тол је инт или опционо; вредност мутације је у флоат или опционо; вредност рекомбинације је у флоат или опционо; семе није ништа, инт, НумПи и Рандом.

У следећем одељку ћемо разговарати о диференцијалној еволуционој функцији уз помоћ лаких примера.



Пример 1

Почнимо са једноставним примером који ће развити ваше интересовање за разумевање концепта функције диференцијалне еволуције. Користили смо функцију дифферентиал_еволутион() да пронађемо минималну вредност. Али, да би пронашла минималну вредност, функција је захтевала границе претраге и дефинисану функцију циља која се може позвати. Као резултат тога, дефинишемо функцију пре употребе функције дифферентиал_еволутион у програму. Референтни код програма је наведен у наставку:

увоз нумпи као што на пример.
из сципи увоз оптимизира
из сципи. оптимизира увоз диференцијална_еволуција
увоз матплотлиб. пиплот као што пи
из матплотлиб увоз центиметар

деф фунц ( стр ) :

са , Икс = стр

х = на пример. скрт ( са ** 4 + к ** 4 )

повратак на пример. скрт ( х )


ДЕ_боундс = [ [ - 6 , 6 ] , [ - 6 , 6 ] ]

рес = диференцијална_еволуција ( фунц , ДЕ_боундс )

принт ( рес )

Увезли смо библиотеке попут СциПи и НумПи за нумеричке прорачуне низа. Увезли смо функцију дифферентиал_еволутион из модула сципи.оптимизе. Затим, са кључном речи „деф“, дефинишемо функцију циља која се може позвати и проследимо параметар „п“. Успешно смо дефинисали функцију која проналази квадратни корен сабирања НумПи променљивих, а то је з, к. Вредност квадратног корена се чува у променљивој „х“. Враћамо вредност квадратног корена у дефинисаној функцији. Враћа се као аргумент.

Након тога постављамо границе променљиве које се могу разврстати објашњавањем мин и максималних вредности функције. Извршавамо функцију дифферентиал_еволутион са „ДЕ_боундс” као аргументом. Позвали смо вредност функције са променљивом под називом рес. На крају, користимо наредбу принт да прикажемо излаз. Резултат је приказан након покретања програма. Очекивани излазни снимак екрана је приказан у наставку:

Дифферентиал_еволутион() показује да је минимална вредност функције приказана у тачки (0, 0).

Пример 2

Ово је још један пример функције диференцијалне еволуције. У овом случају узимамо низове и примењујемо различите операције између њих. Референтни код програма је наведен у наставку:

увоз нумпи као што на пример.
из сципи увоз оптимизира
из сципи. оптимизира увоз диференцијална_еволуција

деф објективна_функција ( д ) :
повратак ( д [ 1 ] - 1.2 ) / 2 + 0.5 * д [ 0 ] * 1.3 * ( д [ 1 ] + 0.5 ) ** 3

_боундс = [ ( - 0.3 , 0.3 ) , ( - 0.3 , 0.3 ) ]

дисп = диференцијална_еволуција ( објективна_функција , _боундс , попсизе = 80 , Пољски = Фалсе )

принт ( дисп )

Као што је приказано на претходном снимку екрана, успешно смо увезли библиотеку СциПи.оптимизе.дифферентиал_еволутион и библиотеку НумПи у програм. Сада дефинишемо циљну функцију у име које налазимо минималну вредност. Проследили смо математички израз у функцији циља и вратили вредност као аргумент дефинисаној функцији. Граница између вредности функције је обавезна. Дакле, након дефинисања функције, фиксирали смо обе вредности (максимална и минимална).

Након дефинисања свих битних променљивих, позвали смо функцију дифферентиал_еволутион да бисмо пронашли минималну вредност функције. Сачували смо минималну повратну вредност функције у променљивој која се зове дисп. На крају програма прослеђујемо променљиву дисп у наредбу за штампање да бисмо приказали резултат. Након покретања програма, минимална вредност дефинисане функције се приказује на екрану са границама. Следећи је излаз:

Пример 3

Као што видимо, диференцијална еволуција враћа различите минималне вредности циљне функције на основу њене дефиниције. Овде ћемо узети још један пример везан за дифферентиал_еволутион(). Референтни код за овај програм је приказан испод:

увоз нумпи као што на пример.
из сципи увоз оптимизира
из сципи. оптимизира увоз диференцијална_еволуција

деф обј_фунц ( опер ) :
повратак 3 ** 9 / 0.2 + 6 / 3 * 2 ** двадесет

граница = [ ( - 0.5 , 0.5 ) , ( - 0.5 , 0.5 ) ]

оут = диференцијална_еволуција ( обј_фунц , граница , Пољски = Истина )

принт ( 'Излаз је:' , оут )

Библиотеке су успешно увезене у овај програм јер без њих не можемо да обављамо операције које желимо. Као резултат тога, укључујемо СциПи библиотеку у програм. Након тога дефинисати циљну функцију са траженом операцијом. Налазимо минималну вредност те дефинисане функције. Након подешавања границе функције, позвали смо дефинисану функцију у диференцијалној еволуцији да бисмо пронашли минималну вредност функције. Ово се затим чува у променљивој. Ово приказујемо позивањем ове променљиве у наредби за штампање. Излаз овог програма је приказан у наставку:

Као и на претходном снимку екрана, минимална вредност функције је [0,29236931, 0,16808904]. Такође можете покренути ове примере у свом окружењу да бисте боље разумели концепт функције дифферентиал_еволутион.

Закључак

Хајде да укратко направимо резиме овог чланка. Схватили смо основну функционалност методе диференцијалне еволуције која припада библиотеци СциПи у Питхон-у. Питхон је најновији језик, са бројним флексибилним библиотекама. Већини програмера су у решавању сложених структура кода помагале унапред дефинисане функције и библиотеке. Диференцијална еволуција је функција или метод оптимизације СциПи пакета који се користи за минимизирање. Када користите ове претходне примере у коду, јасније разумете концепт диференцијалне еволуције.