|
sample_candidate=function(chain_index,chain_num, cr,cr_index,cr_num,gen_index,gen_num,
jumprate_table,jumpstep,limits, pair_num,par_num, z)
{
pair<-vector(mode="numeric")
jump_dim<-vector(mode="numeric")
noise_e<-vector(mode="numeric")
eps<-vector(mode="numeric")
r<-rep(0,2*pair_num)
#Used to calculate E following a uniform distribution on (-B,+B).
#Because B is currently zero, the noise term is suppressed.
b <- 0.0
# Pick pairs of other chains for crossover.
r<-pairs_choose(pair_num, chain_num,chain_index)
#Determine the jump rate.
jumprate_choose( cr, cr_index, cr_num, gen_index, jump_dim, jump_num,
jumprate, jumprate_table, jumpstep, par_num )
#Calculate E in equation 4 of Vrugt.
for (i in 1:par_num)
{
noise_e <- b * ( 2.0 * runif(1) - 1.0 )
}
# Get epsilon value from multinormal distribution
av<- 0.0
sd<- 10^-10
for ( i in 1:par_num)
{
eps <- rnorm(1, av, sd )
}
#Generate the candidate sample ZP based on equation 4 of Vrugt.
diff<-diff_compute(chain_num, gen_index,gen_num, jump_dim, jump_num,
pair_num,par_num,r, z)
zp<-rep(0,par_num)
for ( i in 1:par_num)
{
zp <- z[i+(chain_index-1)*par_num+(gen_index-1)*par_num*chain_num]
}
for ( i in 1:par_num)
{
zp <- zp + ( 1.0 + noise_e ) * jumprate * diff + eps
}
#Enforce limits on the sample ZP.
zp<-sample_limits(limits, par_num,zp)
# rm (zp,diff)
zp
}
zp<-sample_candidate(chain_index,chain_num, cr,cr_index,cr_num,gen_index,gen_num,
jumprate_table,jumpstep,limits, pair_num,par_num, z)
zp
上面这个函数单独执行每一条语句是对的,但是像后面调用的时候就出现了后面黄色的语句没有执行,这是怎么回事呢?求高人
|