GA 패키지를 사용하여 유전자 알고리즘을 실행할 때 "TRUE/FALSE needed"오류가 발생합니다. 아래에있는 내 코드에서 6GA 패키지의 TRUE/FALSE가 필요하지 않은 "누락 된 값"오류가 발생했습니다.
library(GA)
y<-c(46,38,49,55)
W<-matrix(c(0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0),ncol=4)
ei<-eigen(W)$values
data<- matrix(c(14691,14150,14607,15140,5337,5386,5207,5178),ncol=2)
like=function(x)
{
co<-c(x[2],x[3])
e<-x[4]*W%*%y-data%*%co-x[1]
L<-30*log(2)-15*log(2*pi)+log(prod(1-x[4]*Re(ei)))-15*log(x[5])+sum(log(pnorm(-x[6]*e/sqrt(x[5]))))
-0.5/x[5]*t(e)%*%e
return(L)
}
GA <- ga(type = "real-valued",
fitness = like,
min=c(-100,0,-50,-10,0.001,0),
max=c(100,100,0,10,100,10),
popSize = 100, maxiter = 200,
optim = TRUE)
결과 및 오류는 다음과 같습니다 like
피트니스위한 기능이며 X
길이의 숫자 벡터이다 :
GA | iter = 1
Mean = -Inf | Best = -2.870387
Error in if (fmin > (sfactor * fave - fmax)/(sfactor - 1)) { :
missing value where TRUE/FALSE needed
함수의 정의에서 sqrt (x [5])를 새로운 x [5]로 변경하면 작동합니다. 음의 무한대는 log (0)으로 인해 발생합니다. 당신의 도움. – ShuangXin