При использовании следующего кода решение в конечном итоге становится 1/0 для параметров ... Но из промежуточных шагов я вижу, что есть промежуточные шаги, где параметры не являются двоичными.
library(GenSA)
myFunction <- function(x) {
A <- matrix(c(4,-3,1,2),nrow=2)
return(-(x %*% A %*% x))
}
set.seed(1234) # The user can use any seed.
dimension <- 2
lower <- rep(0, dimension)
upper <- rep(1, dimension)
out <- GenSA(
lower = lower, upper = upper, fn = myFunction,
control=list(threshold.stop=NULL,
verbose=TRUE,
smooth = FALSE
))
out
Я вижу следующий вывод:
Initializing par with random data inside bounds
It: 1, obj value: -3.999999928
.................................................................................................
It: 1193, obj value: -3.999999992
Есть ли какой-нибудь способ заставить GenSA пересекать только двоичные решения?Если обратите внимание, есть ли какой-то другой метаэвристический алгоритм, который я могу реализовать для этой цели?