Dear all, I would need to maximize a self-defined 'target' function(see below) with respect to theta, where v follows a log-normal distribution with mean 'mu(x)' and a constant variance. For each v drawn from its distribution, one maximized value and optimal theta are produced. I'd like to do this repeatedly and store the maximized value and corresponding theta. I wrote the following code that can produce a result. But the problem is that the result doesn't seem to be the optimized one because if I arbitrarily choose theta=c(4,27), I will get much bigger value than those simulated ones. I am not sure where is wrong. Could anyone help me with this? Thank you in advance! Here is the code: rdt<-matrix(0,10,3) for (i in 1:10){ #Define the target function target<-function(theta){ d0=theta[1] T0=theta[2] mu<-function(x,d=d0,ta=23.86,ti=11.067,ppt=1.321,a=-12.31, S=5.62, L=3.83, b=c(0.338,-0.0055,0.113,-0.00466,-0.008,-0.205,-0.044,0.266,1.719,-0.169)){ return(a+sum(b*c(x,x^2,d,d^2,S,L,ta,ti,ppt,ti*ppt)))} v<-function(x,d=d0){ return(rlnorm(1,mean=mu(x),sd=0.835^0.5))} p<-function(x,d=d0){ if(8.179+0.00023*(5.29+0.16*x-0.21*d)^5>45){return(45)} return(8.179+0.00023*(5.29+0.16*x-0.21*d)^5) } Y3<-function(x,d=d0){ return(p(x,d)*v(x,d)) } r<-Y3(T0) return(r) } result<-optim(c(2,10),target,lower=c(0.1,0.5),upper=c(66,50), method="L-BFGS-B",control=list(maxit=100000,fnscale=-1)) rdt[i,1]<-result$value rdt[i,2:3]<-result$par } --------------------------------- [[alternative HTML version deleted]]