View source: R/xegaGaReplicate.R
xegaGaReplicateGene | R Documentation |
xegaGaReplicateGene()
replicates a gene
by applying a gene reproduction pipeline
which uses crossover and
mutation and finishes with an acceptance rule.
The control flow starts
by selecting a gene from the population
followed by the case distinction:
Check if the mutation operation should be applied.
(mut
is TRUE
with a probability of lF$MutationRate()
).
Check if the crossover operation should be applied.
(cross
is TRUE
with a probability of lF$CrossRate()
).
The state distinction determines which genetic operations are performed.
xegaGaReplicateGene(pop, fit, lF)
pop |
Population of binary genes. |
fit |
Fitness vector. |
lF |
Local configuration of the genetic algorithm. |
xegaGaReplicateGene()
implements the control flow
by a dynamic definition of the operator pipeline depending
on the random choices for mutation and crossover:
A gene g
is selected and the boolean variables mut
and cross
are set to runif(1)<rate
.
The local function for the operator pipeline OPpip(g, lF)
is defined by the truth values of cross
and mut
:
(cross==FALSE) & (mut==FALSE)
:
Identity function.
(cross==TRUE) & (mut==TRUE)
:
Mate selection, crossover, mutation.
(cross==TRUE) & (mut==FALSE)
:
Mate selection, crossover.
(cross==FALSE) & (mut==TRUE)
:
Mutation.
Perform the operator pipeline and accept the result. The acceptance step allows the combination of a genetic algorithm with other heuristic algorithms like simulated annealing by executing an acceptance rule. For the genetic algorithm, the identity function is used.
A list of one gene.
Other Replication:
xegaGaReplicate2Gene()
lFxegaGaGene$CrossGene<-xegaGaCrossGene
lFxegaGaGene$MutationRate<-function(fit, lF) {0.001}
lFxegaGaGene$Accept<-function(OperatorPipeline, gene, lF) {gene}
pop10<-lapply(rep(0,10), function(x) xegaGaInitGene(lFxegaGaGene))
epop10<-lapply(pop10, lFxegaGaGene$EvalGene, lF=lFxegaGaGene)
fit10<-unlist(lapply(epop10, function(x) {x$fit}))
newgenes<-xegaGaReplicateGene(pop10, fit10, lFxegaGaGene)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.