#r #genetic-algorithm #fitness
#r #genetic-algorithm #Фитнес
Вопрос:
Я пытаюсь минимизировать функцию, а затем отобразить ее, но я получаю отрицательные значения пригодности, и я не знаю, как и почему. Я использую пакет GA, который в основном обрабатывает алгоритм для меня, пока я отправляю ему функцию пригодности. (документацию можно найти здесь . https://cran.r-project.org/web/packages/GA/vignettes/GA.html )
# Objective function for I-beam cross section area
cross <- function(x1, x2, x3, x4) {
2 * x2 * x4 x3 * (x1 - 2 * x4) # Not possible to be negative
}
Параметры генетического алгоритма.
crossGA <- ga(
type = "real-valued",
fitness = function(x)
-cross(x[1], x[2], x[3], x[4]),
lower = c(10, 10, 0.9, 0.9), # Not possible to be negative
upper = c(80, 50, 5, 5), # Not possible to be negative
popSize = 50,
maxiter = 100,
run = 100,
pcrossover = 0.75,
pmutation = .001
)
Вывод.
GA | iter = 1 | Mean = -295.2791 | Best = -104.4886
GA | iter = 2 | Mean = -231.7914 | Best = -104.4886
GA | iter = 3 | Mean = -205.53407 | Best = -82.49887
GA | iter = 4 | Mean = -199.11156 | Best = -82.49887
GA | iter = 5 | Mean = -164.27739 | Best = -82.49887
GA | iter = 6 | Mean = -138.23192 | Best = -82.49887
GA | iter = 7 | Mean = -117.80066 | Best = -72.36154
GA | iter = 8 | Mean = -107.05787 | Best = -72.36154
GA | iter = 9 | Mean = -93.94951 | Best = -72.36154
GA | iter = 10 | Mean = -86.25630 | Best = -72.36154
Ответ №1:
Вы определили свою функцию пригодности -cross(...)
как равную , которая отрицает значение и, следовательно, делает его отрицательным. Другими словами, похоже, что это была опечатка в вашем коде.