我正在实施GA算法。染色体具有 -1,0,1 值的组合。在变异部分,我想用 prob(-1到1)将-1改为1,用 prob(1到-1)将1改为-1。 我不知道R中是否有任何功能可以让我轻松。是否有人告诉我是否有一个函数可以帮助我根据它们的概率替换值?
答案 0 :(得分:1)
你可以扔一个骰子,如果1出现,你将原始值更改为另一个值。您可以为所有转换添加if语句。如果您想在一个步骤中改变整个字符串,可以更好地优化它。
from <- c(1,-1,1,0,-1)
probToMutate <- function(x) {
if (x == 1) {
dice <- rbinom(1, size = 1, prob = 0.1)
if (dice == 1) {
x <- -1
} else {
x <- 1
}
} else {
x
}
}
sapply(from, FUN = probToMutate)