楼主: gh1992
1093 6

[问答] 求助,很着急 [推广有奖]

  • 1关注
  • 0粉丝

初中生

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
68 点
帖子
9
精华
0
在线时间
23 小时
注册时间
2015-10-14
最后登录
2017-2-23

楼主
gh1992 发表于 2016-1-14 12:41:15 |AI写论文
2论坛币
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
上面这个函数单独执行每一条语句是对的,但是像后面调用的时候就出现了后面黄色的语句没有执行,这是怎么回事呢?求高人

最佳答案

suimong 查看完整内容

题主提供一下调用sample_candidate函数里要用的那些参数吧,方便别人帮你debug
关键词:candidate function limits Sample Index 求助

沙发
suimong 发表于 2016-1-14 12:41:16
题主提供一下调用sample_candidate函数里要用的那些参数吧,方便别人帮你debug

藤椅
gh1992 发表于 2016-1-14 13:46:35
suimong 发表于 2016-1-14 13:37
题主提供一下调用sample_candidate函数里要用的那些参数吧,方便别人帮你debug
其实我就是想知道为什么后面的不在调用的时候显示呢

板凳
suimong 发表于 2016-1-14 14:10:52
在调用的时候显示什么?你的for循环里是赋值语句,函数体里如果没有print/cat语句的话一般是不会在console上打印任何东西的。

报纸
gh1992 发表于 2016-1-14 14:19:59
suimong 发表于 2016-1-14 14:10
在调用的时候显示什么?你的for循环里是赋值语句,函数体里如果没有print/cat语句的话一般是不会在console上 ...
我知道,就是我把这个函数里面一条一条运行的的时候,加上后面的两句,出来的结果是对的,但是如果我先运行这个函数,再运行后面的两句的时候,出来的结果就不对了

地板
suimong 发表于 2016-1-14 14:51:26
你的意思是你把原来的逻辑作为单独的语句运行得到了正确的结果,但是把它们封装进了一个函数以后用函数调用的话就得出了错误的结果是吧?可是你要让大家能够重现你的问题的话,你得让大家也能够调用到函数吧?没有chain_index, chain_num等等这些参数,我们根本没法调用你的函数啊

7
gh1992 发表于 2016-1-14 16:06:02
suimong 发表于 2016-1-14 14:51
你的意思是你把原来的逻辑作为单独的语句运行得到了正确的结果,但是把它们封装进了一个函数以后用函数调用 ...
chain_index=1,chain_num=4
cr=c(0.3333333, 0.6666667, 1.0000000)
cr_index=1,cr_num=3,gen_index=1,gen_num=20,
jumprate_table
[1] 0.4497777 0.3672420 0.3180409 0.2844644 0.2596793 0.2404163 0.2248889
jumpstep=5
pair_num=7,par_num=7

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 03:26