From 2b7eecb3fe7e553cadcfefbf191ec6e480c3a620 Mon Sep 17 00:00:00 2001 From: caglarcakan Date: Tue, 25 Feb 2020 15:56:29 +0100 Subject: [PATCH] readme: fix evolutionary pipeline plot --- README.md | 2 +- resources/evolutionary-algorithm.png | Bin 0 -> 53225 bytes resources/evolutionary-algorithm.svg | 3 --- 3 files changed, 1 insertion(+), 4 deletions(-) create mode 100644 resources/evolutionary-algorithm.png delete mode 100644 resources/evolutionary-algorithm.svg diff --git a/README.md b/README.md index 483b603c..83b32acb 100644 --- a/README.md +++ b/README.md @@ -189,7 +189,7 @@ A detailed example is available as a [IPython Notebook](examples/example-2-evolu `neurolib` also implements evolutionary parameter optimization, which works particularly well with brain networks. In an evolutionary algorithm, each simulation is represented as an individual and the parameters of the simulation, for example coupling strengths or noise level values, are represented as the genes of each individual. An individual is a part of a population. In each generation, individuals are evaluated and ranked according to a fitness criterion. For whole-brain network simulations, this could be the fit of the simulated activity to empirical data. Then, individuals with a high fitness value are `selected` as parents and `mate` to create offspring. These offspring undergo random `mutations` of their genes. After all offspring are evaluated, the best individuals of the population are selected to transition into the next generation. This process goes on for a given amount generations until a stopping criterion is reached. This could be a predefined maximum number of generations or when a large enough population with high fitness values is found.

- +

`neurolib` makes it very easy to set up your own evolutionary optimization and everything else is handled under the hood. Of course, if you like, you can dig deeper, define your own selection, mutation and mating operators. In the following demonstration, we will simply evaluate the fitness of each individual as the distance to the unit circle. After a couple of generations of mating, mutating and selecting, only individuals who are close to the circle should survive: diff --git a/resources/evolutionary-algorithm.png b/resources/evolutionary-algorithm.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4ac4a1872899b72c9400a88c021d120a205efd GIT binary patch literal 53225 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 SZ2El){?k&^Q>|3C3Hxs?g`%JU literal 0 HcmV?d00001 diff --git a/resources/evolutionary-algorithm.svg b/resources/evolutionary-algorithm.svg deleted file mode 100644 index 032820ab..00000000 --- a/resources/evolutionary-algorithm.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Generate initial population Ninit
Generate initial pop...
Define fitness function
Define fitness funct...
Evaluate initial population
Evaluate initial pop...
Select best Npop
Select best Npop
Initialization
Initialization
Generate Npop offspring
Generate Npop offspr...
Mutate offspring
Mutate offspring
Replace invalid individuals
Replace invalid indi...
Evaluate new individuals
Evaluate new individ...
Rank select parents
Rank select parents
Evolution
Evolution
Stop?
Stop?
Increment
generation counter
Increment...
Valid?
Valid?
Yes
Yes
No
No
Old
Old
New
New
Merge
old and new
individuals
Merge...
No
No
End of evolution
End of evolution
Yes
Yes
Viewer does not support full SVG 1.1
\ No newline at end of file