@ file : Jvm Name (" Inst inct ") Ċ @ file : Jvm Mult if ile Class Ċ Ċ package Ġeu . timer ert im . k ne vo . inst inct Ċ Ċ import Ġeu . timer ert im . k ne vo . Environment Ċ import Ġeu . timer ert im . k ne vo . Population Ċ import Ġeu . timer ert im . k ne vo . inst inct . Inst inct Network . Companion . off spring Ċ import Ġeu . timer ert im . k ne vo . selection . Fitness Pro portion ate Ċ import Ġeu . timer ert im . k ne vo . selection . Power Ċ import Ġeu . timer ert im . k ne vo . selection . Selection Function Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . async Ċ import Ġkotlinx . coroutines . join All Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġkotlin . random . Random Ċ import Ġkotlin . reflect . full . declared Member Properties Ċ import Ġkotlin . reflect . full . value Parameters Ċ Ċ type alias ĠPool Ġ= ĠInst inct Pool Ċ type alias ĠPool Builder Ġ= ĠInst inct Pool . Builder Ċ type alias ĠInst inct Pool Builder Ġ= ĠPool Builder Ċ Ċ /** Ċ Ġ* ĠThis Ġclass Ġis Ġused Ġfor Ġbuilding Ġan Ġ[ Inst inct Pool ]. Ċ Ġ*/ Ċ @ Jvm Synt hetic Ċ fun ĠInst inct Instance . Pool Builder () Ġ= ĠPool Builder ( this ) Ċ Ċ /** Ċ Ġ* ĠA Ġpretty Ġgeneric , Ġsimple Ġ[ Population ] Ġimplementation Ġused Ġwith Ġthe Ġalgorithm Ġdescribed Ġin Ġ[ Inst inct Instance ]. ĠIt Ġdoes Ċ Ġ* Ġnot Ġfeature Ġspec iation , Ġbut Ġmult ith reading , Ġdifferent Ġ[ Selection Function ] s Ġand Ġsize Ġpen alt ies Ġfor Ġthe Ċ Ġ* Ġ[ Inst inct Network ] s . ĠThe Ġ[ instance ][ Inst inct Pool . instance ] Ġis Ġused Ġfor Ġall Ġoperations Ġrequiring Ġan ĠInst inct Instance . Ċ Ġ* Ċ Ġ* ĠConfigur able ĠParameters : Ċ Ġ* Ġ- Ġ[ population Size ]: ĠThe Ġamount Ġof ĠNetworks Ġin Ġthis ĠPop ulation Ċ Ġ* Ġ- Ġ[ batch Size ]: ĠThe Ġamount Ġof ĠNetworks Ġin Ġa Ġsingle Ġbatch . ĠB atches Ġare Ġevaluated Ġand Ġbre ded Ġin Ġparallel . Ċ Ġ* Ġ- Ġ[ elit ism ]: ĠThis Ġmany Ġbest Ġperforming Ġnetworks Ġwill Ġbe Ġin Ġthe Ġnext Ġgeneration Ġwithout Ġany Ġchanges Ċ Ġ* Ġ- Ġ[ cross over Chance ]: ĠThe Ġchance Ġof Ġperforming Ġa Ġcross over Ġwhen Ġb reed ing Ġthe Ġnext Ġgeneration Ġ( otherwise Ġmutate ) Ċ Ġ* Ġ- Ġ[ nodes Grow th ]: ĠThe Ġvalue Ġsubtract ed Ġfrom Ġthe Ġ[ fitness ][ Inst inct Network . fitness ] Ġof Ġa Ġnetwork Ġper Ġhidden Ġne uron Ċ Ġ* Ġ- Ġ[ connections Grow th ]: ĠThe Ġvalue Ġsubtract ed Ġfrom Ġthe Ġfitness Ġof Ġa Ġnetwork Ġper Ġconnection Ċ Ġ* Ġ- Ġ[ g ates Grow th ]: ĠThe Ġvalue Ġsubtract ed Ġfrom Ġthe Ġfitness Ġof Ġa Ġnetwork Ġper Ġg ated Ġconnection Ċ Ġ* Ġ- Ġ[ select ]: ĠThe ĠSelection Function Ġused Ġby Ġdefault Ġwhen Ġ[ bre ed New Generation ][ Inst inct Pool . bre ed New Generation ] Ġis Ċ Ġ* Ġinvoked Ċ Ġ*/ Ċ @ Jvm Synt hetic Ċ fun ĠInst inct Instance . Pool ( ĊĠĠĠ Ġpopulation Size : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġbatch Size : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġelit ism : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġcross over Chance : ĠFloat ? Ġ= Ġnull , ĊĠĠĠ Ġnodes Grow th : ĠFloat ? Ġ= Ġnull , ĊĠĠĠ Ġconnections Grow th : ĠFloat ? Ġ= Ġnull , ĊĠĠĠ Ġg ates Grow th : ĠFloat ? Ġ= Ġnull , ĊĠĠĠ Ġselect : ĠSelection Function ? Ġ= Ġnull Ċ ) Ġ= ĠPool Builder (). apply Ġ{ ĊĠĠĠ Ġpopulation Size ( population Size ) ĊĠĠĠ Ġbatch Size ( batch Size ) ĊĠĠĠ Ġelit ism ( elit ism ) ĊĠĠĠ Ġcross over Chance ( cross over Chance ) ĊĠĠĠ Ġnodes Grow th ( nodes Grow th ) ĊĠĠĠ Ġconnections Grow th ( connections Grow th ) ĊĠĠĠ Ġg ates Grow th ( g ates Grow th ) ĊĠĠĠ Ġselect ( select ) Ċ }. build () Ċ Ċ /** Ċ Ġ* ĠA Ġpretty Ġgeneric , Ġsimple Ġ[ Population ] Ġimplementation Ġused Ġwith Ġthe Ġalgorithm Ġdescribed Ġin Ġ[ Inst inct Instance ]. ĠIt Ġdoes Ċ Ġ* Ġnot Ġfeature Ġspec iation , Ġbut Ġmult ith reading , Ġdifferent Ġ[ Selection Function ] s Ġand Ġsize Ġpen alt ies Ġfor Ġthe Ċ Ġ* Ġ[ Inst inct Network ] s . ĠThe Ġ[ instance ][ Inst inct Pool . instance ] Ġis Ġused Ġfor Ġall Ġoperations Ġrequiring Ġan ĠInst inct Instance . Ċ Ġ* Ċ Ġ* ĠConfigur able ĠParameters : Ċ Ġ* Ġ- Ġ[ population Size ][ Inst inct Pool . size ]: ĠThe Ġamount Ġof ĠNetworks Ġin Ġthis ĠPop ulation Ċ Ġ* Ġ- Ġ[ batch Size ]: ĠThe Ġamount Ġof ĠNetworks Ġin Ġa Ġsingle Ġbatch . ĠB atches Ġare Ġevaluated Ġand Ġbre ded Ġin Ġparallel . Ċ Ġ* Ġ- Ġ[ elit ism ]: ĠThis Ġmany Ġbest Ġperforming Ġnetworks Ġwill Ġbe Ġin Ġthe Ġnext Ġgeneration Ġwithout Ġany Ġchanges Ċ Ġ* Ġ- Ġ[ cross over Chance ]: ĠThe Ġchance Ġof Ġperforming Ġa Ġcross over Ġwhen Ġb reed ing Ġthe Ġnext Ġgeneration Ġ( otherwise Ġmutate ) Ċ Ġ* Ġ- Ġ[ nodes Grow th ]: ĠThe Ġvalue Ġsubtract ed Ġfrom Ġthe Ġ[ fitness ][ Inst inct Network . fitness ] Ġof Ġa Ġnetwork Ġper Ġhidden Ġne uron Ċ Ġ* Ġ- Ġ[ connections Grow th ]: ĠThe Ġvalue Ġsubtract ed Ġfrom Ġthe Ġfitness Ġof Ġa Ġnetwork Ġper Ġconnection Ċ Ġ* Ġ- Ġ[ g ates Grow th ]: ĠThe Ġvalue Ġsubtract ed Ġfrom Ġthe Ġfitness Ġof Ġa Ġnetwork Ġper Ġg ated Ġconnection Ċ Ġ* Ġ- Ġ[ select ]: ĠThe ĠSelection Function Ġused Ġby Ġdefault Ġwhen Ġ[ bre ed New Generation ][ Inst inct Pool . bre ed New Generation ] Ġis Ċ Ġ* Ġinvoked Ċ Ġ*/ Ċ class ĠInst inct Pool Ġprivate Ġconstructor ( ĊĠĠĠ Ġval Ġbatch Size : ĠInt , ĊĠĠĠ Ġval Ġelit ism : ĠInt , ĊĠĠĠ Ġval Ġcross over Chance : ĠFloat , ĊĠĠĠ Ġval Ġnodes Grow th : ĠFloat , ĊĠĠĠ Ġval Ġconnections Grow th : ĠFloat , ĊĠĠĠ Ġval Ġg ates Grow th : ĠFloat , ĊĠĠĠ Ġval Ġselect : ĠSelection Function , ĊĠĠĠ Ġval Ġinstance : ĠInst inct Instance , ĊĠĠĠ Ġprivate Ġval Ġpool : ĠMutable List < Inst inct Network > Ċ ) Ġ: ĠPop ulation < Inst inct Network >, ĠList < Inst inct Network > Ġby Ġpool Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġpretty Ġgeneric , Ġsimple Ġ[ Population ] Ġimplementation Ġused Ġwith Ġthe Ġalgorithm Ġdescribed Ġin Ġ[ Inst inct Instance ]. ĠIt ĊĠĠĠĠ Ġ* Ġdoes Ġnot Ġfeature Ġspec iation , Ġbut Ġmult ith reading , Ġdifferent Ġ[ Selection Function ] s Ġand Ġsize Ġpen alt ies Ġfor Ġthe ĊĠĠĠĠ Ġ* Ġ[ Inst inct Network ] s . ĠThe Ġ[ instance ][ Inst inct Pool . instance ] Ġis Ġused Ġfor Ġall Ġoperations Ġrequiring Ġan ĊĠĠĠĠ Ġ* ĠInst inct Instance . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠConfigur able ĠParameters : ĊĠĠĠĠ Ġ* Ġ- Ġ[ population Size ]: ĠThe Ġamount Ġof ĠNetworks Ġin Ġthis ĠPop ulation ĊĠĠĠĠ Ġ* Ġ- Ġ[ batch Size ]: ĠThe Ġamount Ġof ĠNetworks Ġin Ġa Ġsingle Ġbatch . ĠB atches Ġare Ġevaluated Ġand Ġbre ded Ġin Ġparallel . ĊĠĠĠĠ Ġ* Ġ- Ġ[ elit ism ]: ĠThis Ġmany Ġbest Ġperforming Ġnetworks Ġwill Ġbe Ġin Ġthe Ġnext Ġgeneration Ġwithout Ġany Ġchanges ĊĠĠĠĠ Ġ* Ġ- Ġ[ cross over Chance ]: ĠThe Ġchance Ġof Ġperforming Ġa Ġcross over Ġwhen Ġb reed ing Ġthe Ġnext Ġgeneration Ġ( otherwise Ġmutate ) ĊĠĠĠĠ Ġ* Ġ- Ġ[ nodes Grow th ]: ĠThe Ġvalue Ġsubtract ed Ġfrom Ġthe Ġ[ fitness ][ Inst inct Network . fitness ] Ġof Ġa Ġnetwork Ġper Ġhidden Ġne uron ĊĠĠĠĠ Ġ* Ġ- Ġ[ connections Grow th ]: ĠThe Ġvalue Ġsubtract ed Ġfrom Ġthe Ġfitness Ġof Ġa Ġnetwork Ġper Ġconnection ĊĠĠĠĠ Ġ* Ġ- Ġ[ g ates Grow th ]: ĠThe Ġvalue Ġsubtract ed Ġfrom Ġthe Ġfitness Ġof Ġa Ġnetwork Ġper Ġg ated Ġconnection ĊĠĠĠĠ Ġ* Ġ- Ġ[ select ]: ĠThe ĠSelection Function Ġused Ġby Ġdefault Ġwhen Ġ[ bre ed New Generation ][ Inst inct Pool . bre ed New Generation ] Ġis ĊĠĠĠĠ Ġ* Ġinvoked ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġpopulation Size : ĠInt Ġ= Ġ 4 0 0 , ĊĠĠĠĠĠĠĠ Ġbatch Size : ĠInt Ġ= Ġpopulation Size , ĊĠĠĠĠĠĠĠ Ġelit ism : ĠInt Ġ= Ġ 5 , ĊĠĠĠĠĠĠĠ Ġcross over Chance : ĠFloat Ġ= Ġ 0 . 7 5 F , ĊĠĠĠĠĠĠĠ Ġnodes Grow th : ĠFloat Ġ= Ġ 0 F , ĊĠĠĠĠĠĠĠ Ġconnections Grow th : ĠFloat Ġ= Ġ 0 F , ĊĠĠĠĠĠĠĠ Ġg ates Grow th : ĠFloat Ġ= Ġ 0 F , ĊĠĠĠĠĠĠĠ Ġselect : ĠSelection Function Ġ= ĠPower (), ĊĠĠĠĠĠĠĠ Ġinstance : ĠInst inct Instance Ġ= Ġglobal Inst inct Instance ĊĠĠĠ Ġ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġbatch Size , ĊĠĠĠĠĠĠĠ Ġelit ism , ĊĠĠĠĠĠĠĠ Ġcross over Chance , ĊĠĠĠĠĠĠĠ Ġnodes Grow th , ĊĠĠĠĠĠĠĠ Ġconnections Grow th , ĊĠĠĠĠĠĠĠ Ġg ates Grow th , ĊĠĠĠĠĠĠĠ Ġselect , ĊĠĠĠĠĠĠĠ Ġinstance , ĊĠĠĠĠĠĠĠ ĠArray ( population Size ) Ġ{ Ġinstance . Network () Ġ}. to Mutable List () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠKeep s Ġtrack Ġof Ġthe Ġcurrent Ġ[ generation ] Ġin Ġthis Ġ[ Pool ]. ĠIs Ġincreased Ġautomatically Ġupon Ġinvoking ĊĠĠĠĠ Ġ* Ġ[ bre ed New Generation ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġvar Ġgeneration Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠE vol ves Ġthis Ġ[ Inst inct Pool ] Ġusing Ġa Ġgiven Ġ[ environment ] Ġand Ġ[ select ] Ġmethod . ĠIt Ġinvokes Ġ[ evaluate Fitness ] Ġand ĊĠĠĠĠ Ġ* Ġthen Ġ[ bre ed New Generation ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġev olve ( environment : ĠEnvironment < Inst inct Network >, Ġselect : ĠSelection Function ) Ġ{ ĊĠĠĠĠĠĠĠ Ġevaluate Fitness ( environment ) ĊĠĠĠĠĠĠĠ Ġb reed New Generation ( select ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġevaluate Fitness ( environment : ĠEnvironment < Inst inct Network >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpool . chunk ed ( batch Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġbatch Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenvironment . evaluate Fitness ( batch ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbatch . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . score Ġ-= Ġ( it . nodes . size Ġ- Ġinstance . inputs Ġ- Ġinstance . outputs ) Ġ* Ġnodes Grow th Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . connections . size Ġ* Ġconnections Grow th Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . connections . count Ġ{ Ġcon Ġ-> Ġcon . g ater Ġ!= Ġnull Ġ} Ġ* Ġg ates Grow th ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. join All () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠB reed s Ġa Ġnew Ġgeneration Ġbased Ġon Ġthe Ġ[ evalu ated ĠF itness ][ evaluate Fitness ]. ĠIt Ġuses ĊĠĠĠĠ Ġ* Ġthe Ġconfigured Ġ[ select ] Ġmethod Ġwhen Ġselecting Ġ[ Inst inct Network ] s Ġduring Ġb reed ing . ĠIt Ġincreases Ġ[ generation ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġb reed New Generation () Ġ= Ġb reed New Generation ( select ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠB reed s Ġa Ġnew Ġgeneration Ġbased Ġon Ġthe Ġ[ evalu ated ĠF itness ][ evaluate Fitness ]. ĠIt Ġuses ĊĠĠĠĠ Ġ* Ġthe Ġgiven Ġ[ select ] Ġmethod Ġwhen Ġselecting Ġ[ Inst inct Network ] s Ġduring Ġb reed ing . ĠIt Ġincreases Ġ[ generation ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġb reed New Generation ( select : ĠSelection Function ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpool . sort Descending () ĊĠĠĠĠĠĠĠ Ġif Ġ( select Ġis ĠF itness Pro portion ate ) Ġselect . reset () ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Population Ġ= Ġrun Blocking ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpool . chunk ed ( batch Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġbatch Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġbatch . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArray ( size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproduce Next Member () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. asList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ Ġit . await () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġelit ism Ġuntil Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpool [ index ] Ġ= Ġnew Population [ index ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġgeneration ++ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġproduce Next Member (): ĠInst inct Network Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Random . next Float () Ġ< Ġcross over Chance ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOff spring ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent 1 Ġ= Ġselect ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent 2 Ġ= Ġselect ( filter Ġ{ Ġit Ġ!= Ġparent 1 Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoff spring ( parent 1 , Ġparent 2 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMut ated ĠMember ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork ( select ( this )). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠserialVersionUID Ġ= Ġ 0 L ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġclass Ġis Ġused Ġfor Ġbuilding Ġan Ġ[ Inst inct Pool ]. ĠIt Ġrequires Ġan Ġ[ instance ] Ġwhich Ġdefaults Ġto ĊĠĠĠĠ Ġ* Ġ[ global Inst inct Instance ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠBuilder Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġinstance : ĠInst inct Instance Ġ= Ġglobal Inst inct Instance ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġamount Ġof Ġ[ Inst inct Network ] s Ġin Ġthis Ġ[ Pool ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġpopulation Size : ĠInt ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġamount Ġof Ġ[ Inst inct Network ] s Ġin Ġa Ġsingle Ġbatch . ĠB atches Ġare Ġevaluated Ġand Ġbre ded Ġin Ġparallel , Ġtherefore ĊĠĠĠĠĠĠĠĠ Ġ* Ġthe Ġused Ġ[ Environment ] Ġduring Ġ[ evaluation ][ evaluate Fitness ] Ġneeds Ġto Ġbe Ġthread Ġsafe . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġbatch Size : ĠInt ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġmany Ġbest Ġperforming Ġnetworks Ġwill Ġbe Ġin Ġthe Ġnext Ġgeneration Ġwithout Ġany Ġchanges . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġelit ism : ĠInt ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġchance Ġof Ġperforming Ġa Ġcross over Ġwhen Ġb reed ing Ġthe Ġnext Ġgeneration . ĠOtherwise , Ġa Ġmutation Ġon Ġan Ġexisting ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ Inst inct Network ] Ġis Ġperformed . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġcross over Chance : ĠFloat ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġvalue Ġsubtract ed Ġfrom Ġthe Ġ[ fitness ][ Inst inct Network . fitness ] Ġof Ġa Ġnetwork Ġper Ġhidden Ġne uron . ĠThis ĊĠĠĠĠĠĠĠĠ Ġ* Ġis Ġa Ġpenalty Ġwhich Ġaffects Ġthe Ġfinal Ġ[ score ][ Inst inct Network . score ] Ġof Ġeach Ġnetwork . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġnodes Grow th : ĠFloat ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġvalue Ġsubtract ed Ġfrom Ġthe Ġ[ fitness ][ Inst inct Network . fitness ] Ġof Ġa Ġnetwork Ġper Ġconnection . ĠThis ĊĠĠĠĠĠĠĠĠ Ġ* Ġis Ġa Ġpenalty Ġwhich Ġaffects Ġthe Ġfinal Ġ[ score ][ Inst inct Network . score ] Ġof Ġeach Ġnetwork . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġconnections Grow th : ĠFloat ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġvalue Ġsubtract ed Ġfrom Ġthe Ġ[ fitness ][ Inst inct Network . fitness ] Ġof Ġa Ġnetwork Ġper Ġg ated Ġconnection . ĠThis ĊĠĠĠĠĠĠĠĠ Ġ* Ġis Ġa Ġpenalty Ġwhich Ġaffects Ġthe Ġfinal Ġ[ score ][ Inst inct Network . score ] Ġof Ġeach Ġnetwork . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġg ates Grow th : ĠFloat ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġ[ Selection Function ] Ġused Ġby Ġdefault Ġwhen Ġ[ bre ed New Generation ] Ġis Ġinvoked . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġvar Ġselect : ĠSelection Function ? Ġ= Ġnull ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠChanges Ġthe Ġamount Ġof Ġ[ Inst inct Network ] s Ġin Ġthis Ġ[ Pool ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthis Ġ[ Builder ] Ġto Ġallow Ġchaining . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġpopulation Size ( value : ĠInt ?) Ġ= Ġapply Ġ{ Ġpopulation Size Ġ= Ġvalue Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠChanges Ġthe Ġamount Ġof ĠNetworks Ġin Ġa Ġsingle Ġbatch . ĠB atches Ġare Ġevaluated Ġand Ġbre ded Ġin Ġparallel . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthis Ġ[ Builder ] Ġto Ġallow Ġchaining . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbatch Size ( value : ĠInt ?) Ġ= Ġapply Ġ{ Ġbatch Size Ġ= Ġvalue Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠChanges Ġhow Ġmany Ġbest Ġperforming Ġnetworks Ġwill Ġbe Ġin Ġthe Ġnext Ġgeneration Ġwithout Ġany Ġchanges . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthis Ġ[ Builder ] Ġto Ġallow Ġchaining . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġelit ism ( value : ĠInt ?) Ġ= Ġapply Ġ{ Ġelit ism Ġ= Ġvalue Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠChanges Ġthe Ġchance Ġof Ġperforming Ġa Ġcross over Ġwhen Ġb reed ing Ġthe Ġnext Ġgeneration . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthis Ġ[ Builder ] Ġto Ġallow Ġchaining . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcross over Chance ( value : ĠFloat ?) Ġ= Ġapply Ġ{ Ġcross over Chance Ġ= Ġvalue Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠChanges Ġthe Ġvalue Ġsubtract ed Ġfrom Ġthe Ġ[ fitness ][ Inst inct Network . fitness ] Ġof Ġa Ġnetwork Ġper Ġhidden Ġne uron . ĠThis ĊĠĠĠĠĠĠĠĠ Ġ* Ġis Ġa Ġpenalty Ġwhich Ġaffects Ġthe Ġfinal Ġ[ score ][ Inst inct Network . score ] Ġof Ġeach Ġnetwork . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthis Ġ[ Builder ] Ġto Ġallow Ġchaining . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġnodes Grow th ( value : ĠFloat ?) Ġ= Ġapply Ġ{ Ġnodes Grow th Ġ= Ġvalue Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠChanges Ġthe Ġvalue Ġsubtract ed Ġfrom Ġthe Ġ[ fitness ][ Inst inct Network . fitness ] Ġof Ġa Ġnetwork Ġper Ġconnection . ĠThis ĊĠĠĠĠĠĠĠĠ Ġ* Ġis Ġa Ġpenalty Ġwhich Ġaffects Ġthe Ġfinal Ġ[ score ][ Inst inct Network . score ] Ġof Ġeach Ġnetwork . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthis Ġ[ Builder ] Ġto Ġallow Ġchaining . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġconnections Grow th ( value : ĠFloat ?) Ġ= Ġapply Ġ{ Ġconnections Grow th Ġ= Ġvalue Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠChanges Ġthe Ġvalue Ġsubtract ed Ġfrom Ġthe Ġ[ fitness ][ Inst inct Network . fitness ] Ġof Ġa Ġnetwork Ġper Ġg ated Ġconnection . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġis Ġa Ġpenalty Ġwhich Ġaffects Ġthe Ġfinal Ġ[ score ][ Inst inct Network . score ] Ġof Ġeach Ġnetwork . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthis Ġ[ Builder ] Ġto Ġallow Ġchaining . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġg ates Grow th ( value : ĠFloat ?) Ġ= Ġapply Ġ{ Ġg ates Grow th Ġ= Ġvalue Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠChanges Ġthe Ġ[ Selection Function ] Ġused Ġby Ġdefault Ġwhen Ġ[ bre ed New Generation ] Ġis Ġinvoked . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthis Ġ[ Builder ] Ġto Ġallow Ġchaining . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġselect ( value : ĠSelection Function ?) Ġ= Ġapply Ġ{ Ġselect Ġ= Ġvalue Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġthe Ġ[ growth ][ value ] Ġfor Ġ[ nodes Grow th ], Ġ[ connections Grow th ] Ġand Ġ[ g ates Grow th ] Ġat Ġonce . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthis Ġ[ Builder ] Ġto Ġallow Ġchaining . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġgrowth ( value : ĠFloat ?) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnodes Grow th Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnections Grow th Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg ates Grow th Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠBuilds Ġan Ġ[ Inst inct Pool ] Ġbased Ġon Ġthe Ġproperties Ġof Ġthis Ġ[ Builder ]. ĠUn specified / null Ġproperties Ġwill ĊĠĠĠĠĠĠĠĠ Ġ* Ġhave Ġthe Ġdefault Ġvalues Ġdefined Ġin Ġthe ĠInst inct Pool Ġconstructor . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbuild (): ĠInst inct Pool Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconstructor Ġ= ĠInst inct Pool :: class . construct ors . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= ĠInst inct Pool Builder :: class . declared Member Properties ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Map Ġ= Ġconstructor . value Parameters . associate With Ġ{ Ġparameter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . first OrNull Ġ{ Ġit . name Ġ== Ġparameter . name Ġ} ?. get ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . value Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġconstructor . call By ( value Map ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ