我在 R 中遇到了一个包,它有一个名为sann模拟退火的函数。
sann分别使用参数fn和gr优化和选择新点。
对于诸如 max-clique 或 max-stable 集问题之类的问题,fn将是一个求和函数,但不太清楚如何制定gr来修复这些图形计算。在这些情况下,如何gr“选择”?
我在 R 中遇到了一个包,它有一个名为sann模拟退火的函数。
sann分别使用参数fn和gr优化和选择新点。
对于诸如 max-clique 或 max-stable 集问题之类的问题,fn将是一个求和函数,但不太清楚如何制定gr来修复这些图形计算。在这些情况下,如何gr“选择”?
首先,对术语进行一些澄清。
R 中的包是定义明确的格式的 R 函数、数据和编译代码的集合。
SANN ( sann) 不是一个包。根据您使用的包,sann可以是函数,或者更常见的是优化函数中使用的方法。
包含sann包括optim、trustOptim、consPlan和的包constrOptim。
在 packageoptim中,该sann方法实现为:
> func <- function(x){
+ out <- (x[1]-2)^2 + (x[2]-1)^2
+ return <- out
+ }>
> optim(par=c(0,0), fn=func, gr = NULL,
+ method = c("SANN"),
+ lower = -Inf, upper = Inf,
+ control = list(), hessian = T)
正如您所说,对于“SANN”(sann)方法gr用于生成新的候选点。如果它为 NULL,则使用默认的高斯马尔可夫内核。
现在,在您的用例中(图的情况),您可能想要做的是使用par并将value值传递给fnandgr。这是这个 SANN 实现的一个很好的特性,在这个文档页面optim的一半多一点的地方都有介绍。
par是找到的最佳参数集,value是fn对应的值par。