R GenSA: возможно ли заставить массив par быть двоичными переменными (1/0)? - PullRequest
0 голосов
/ 23 октября 2018

При использовании следующего кода решение в конечном итоге становится 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 пересекать только двоичные решения?Если обратите внимание, есть ли какой-то другой метаэвристический алгоритм, который я могу реализовать для этой цели?

...