I m New to R andDM/ML, and I written a small program totries out the optim function.
我使用了SANN方法。 我界定了自己的<条码>gr功能,并与<条码>控制条码>参数混在一起。
问题在于,当我印刷产出时,显示灰色功能的电话数量为gr
,而呼声数量是正确的。
在此,我可操作的法典(我认为,成本功能是不可开发的,因此,我只贴出一个简单的版本):
people = list( Seymour = BOS ,
Franny = DAL ,
Zooey = CAK ,
Walt = MIA ,
Buddy = ORD ,
Les = OMA )
schedulecost <- function(schedule){
return(sum(schedule))
}
annealingOptimize <- function(domains, step=1, T=10000,costf=schedulecost){
solution <- sample(1:9, 2 * length(people), replace=T)
grFunction <- function(sol){
index <- sample(c(1:length(domains$Up)), 1, replace=T)
delta <- as.integer(runif(1,min=-step-1,max=step+1))
newValue <- sol[index] + delta
if (newValue > domains$Up[index]){
newValue <- domains$Up[index]
}
if (newValue < domains$Down[index]){
newValue <- domains$Down[index]
}
sol[index] <- newValue
return(sol)
}
values <- optim(solution,costf,gr=grFunction, method= SANN ,
control=list(temp=T, REPORT=1, maxit=200, tmax=10))
print(values)
return(values$par)
}
domains <- list(Down=rep(1,length(people) * 2), Up=rep(9, length(people) * 2))
schedule <-annealingOptimize(domains)
产出是:
$par
[1] 2 2 6 2 3 5 5 1 9 1 1 7
$value
[1] 44
$counts
function gradient
200 NA
$convergence
[1] 0
$message
NULL
我的理解是,<代码>gr的数值应等于fn
,因为你需要打上<代码>fn。 发送一名新候选人,请上gr
。
Is my understanding incorrect(if yes, what s their relationship) or there s something wrong with my code.
谁能提供帮助?
感谢如此之多!
<>Update:
正如@Dwin所指出的,在帮助文件中,它说:“标准”“SANN”只使用功能价值,但相对缓慢。 “...... 但是,在对参数<代码>gr的说明中,它说:“对于“SANN”方法,它规定了产生新候选人点的职能。 “......
如果你在我的<条码>中添加一些印刷说明,那么你就可以看到,它实际上被非常密集地称作。
此外,如果SANN方法仅使用fn
,而且n t use gr,那么gr/code>的句子实际上指的是?