Template:SYSU-Software/statics/html/Modeling/EvolutionAlgorithm.html

   <script type="text/x-mathjax-config">
       MathJax.Hub.Config({
       tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}
       });
   </script>
   <script src="https://2018.igem.org/common/MathJax-2.5-latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> </script>


       Modeling
       Evolutionary Algorithm
       Introduction
       Once a model describing the biological circuit system of interest is constructed, many users select to
       validate their circuits by choosing parts with different tensity or optimize product's gene, which both can be
       shown by dynamics parameters in ODE system, so that users can adjust its expression level to fit their desire.
       Therefore, we built this evolution model to help the users determine these parameters.
   <img src="T--SYSU-Software--mdEa.png" style="width: 50%" />
       Algorithm used in the model
       Evolutionary Algorithm(EA)
       EA is a generic population-based metaheuristic optimization algorithm, which uses mechanisms inspired by
       biological evolution, such as reproduction, crossover and mutation. The algorithm simply performs as follows:
  1. Use a population of possible solutions to the search space and each solution can be called a chromosome.
  2. Replace the current population with a new population by applying reproduction, crossover and mutation.
       Fitness
       $F(k) = \frac{1}{|y_{target} - y|}$
       where $y_{target}$ denotes the expected output of specify protein in the circuit while $y$ denotes the real
       output.
       Crossover
       Specify the probability $p_c$ for crossover and then randomly choose two chromosomes and respectively choose
       one position to crossover.
       Mutation
       Randomly choose the $j^{th}$ node in $i^{th}$ chromosome $k_i$ to do this operation.
       $$k_{ij} = k_{ij} + (\textrm{upperbound} – k_{ij}) f(k_i)$$
       if $r > 0.5$
       $$k_{ij} = k_{ij} - (k_{ij} – \textrm{lowerbound}) f(k_i)$$   
       
       if $r \leq 0.5$
       $$f(k_i) = r^{'} * (1 – \frac{F(k_i)}{F_{best}})^2$$
        $F$ is the fitness function,
       $F_{best}$ denotes the best fitness in this generation, $r$ and $r^{'}$ is the random numbers between $[0,1]$,
       upperbound is $k_{ij}$'s upperbound and the $\textrm{lowerbound}$ is $k_{ij}$'s lowerbound.
       We can evaluate the fitness of the chromosomes in each generation and chromosomes that are more fit have high
       probability of surviving. By iterating enough generations, we can finally find the best fit chromosome.