The function randomly mutates an individual's genetic code
Arguments
- a
The binary matrix of all individuals
- p
The mutation rate
- seed
Set a seed for comparability. Default is
NULL
See also
Other Genetic Algorithm Functions:
crossover()
,
fitness()
,
genetic_algorithm()
,
init_population()
,
selection()
,
trimton()
,
windfarmGA()
Examples
## Create 4 random individuals with binary values
a <- cbind(bin0 = sample(c(0,1), 20, replace=TRUE, prob = c(70,30)),
bin1 = sample(c(0,1), 20, replace=TRUE, prob = c(30,70)),
bin2 = sample(c(0,1), 20, replace=TRUE, prob = c(30,70)),
bin3 = sample(c(0,1), 20, replace=TRUE, prob = c(30,70)))
a
#> bin0 bin1 bin2 bin3
#> [1,] 0 0 1 1
#> [2,] 0 0 1 1
#> [3,] 0 1 1 0
#> [4,] 1 0 0 0
#> [5,] 1 1 0 1
#> [6,] 0 1 0 1
#> [7,] 0 0 0 0
#> [8,] 0 1 1 0
#> [9,] 1 1 0 1
#> [10,] 0 1 0 1
#> [11,] 0 1 1 0
#> [12,] 0 1 1 1
#> [13,] 0 0 0 0
#> [14,] 1 1 1 1
#> [15,] 0 1 0 1
#> [16,] 1 0 0 1
#> [17,] 0 1 1 0
#> [18,] 0 1 1 1
#> [19,] 1 1 1 0
#> [20,] 0 1 1 1
## Mutate the individuals with a low percentage
aMut <- mutation(a, 0.1, NULL)
## Check which values are not like the originals
a == aMut
#> bin0 bin1 bin2 bin3
#> [1,] TRUE FALSE TRUE TRUE
#> [2,] TRUE TRUE TRUE TRUE
#> [3,] TRUE TRUE TRUE TRUE
#> [4,] TRUE TRUE FALSE TRUE
#> [5,] TRUE TRUE TRUE TRUE
#> [6,] TRUE TRUE TRUE TRUE
#> [7,] TRUE FALSE TRUE TRUE
#> [8,] TRUE TRUE TRUE TRUE
#> [9,] TRUE TRUE TRUE TRUE
#> [10,] TRUE FALSE TRUE TRUE
#> [11,] TRUE TRUE TRUE TRUE
#> [12,] TRUE TRUE TRUE TRUE
#> [13,] TRUE TRUE TRUE TRUE
#> [14,] TRUE TRUE TRUE TRUE
#> [15,] TRUE TRUE TRUE TRUE
#> [16,] TRUE FALSE TRUE TRUE
#> [17,] TRUE TRUE TRUE FALSE
#> [18,] TRUE TRUE TRUE TRUE
#> [19,] FALSE TRUE TRUE TRUE
#> [20,] TRUE TRUE TRUE FALSE
## Mutate the individuals with a high percentage
aMut <- mutation(a, 0.4, NULL)
## Check which values are not like the originals
a == aMut
#> bin0 bin1 bin2 bin3
#> [1,] TRUE TRUE TRUE FALSE
#> [2,] TRUE FALSE TRUE TRUE
#> [3,] FALSE FALSE TRUE FALSE
#> [4,] FALSE TRUE TRUE TRUE
#> [5,] TRUE TRUE TRUE FALSE
#> [6,] FALSE FALSE TRUE TRUE
#> [7,] FALSE TRUE TRUE FALSE
#> [8,] TRUE TRUE TRUE FALSE
#> [9,] TRUE TRUE FALSE TRUE
#> [10,] FALSE FALSE FALSE TRUE
#> [11,] TRUE TRUE TRUE TRUE
#> [12,] TRUE FALSE TRUE TRUE
#> [13,] TRUE FALSE TRUE TRUE
#> [14,] TRUE TRUE FALSE TRUE
#> [15,] FALSE FALSE TRUE TRUE
#> [16,] TRUE FALSE FALSE TRUE
#> [17,] FALSE TRUE FALSE FALSE
#> [18,] FALSE TRUE FALSE FALSE
#> [19,] TRUE TRUE TRUE TRUE
#> [20,] TRUE TRUE FALSE TRUE