Dear all, I tried running the following syntax but it keeps running for about 4 hours and then i got the following errors:
Error in if (is.na(f0$objective)) { : argument is of length zero In addition: Warning message: In is.na(f0$objective) : is.na() applied to non-(list or vector) of type 'NULL' Here is the syntax itself: library('nloptr') library('pracma') # objective function f <- function(x,s) {m<-100 t<-2*m+1 H<-matrix(data=NA,nrow=t,ncol=t) I<-diag(t) delta<-2*x[1]/t z<--x[1]+.5*delta range1<-t for (i in 1:range1){ z_i=-x[1]+(i-.5)*delta for (j in 1:range1){ up<-(((-x[1]+j*delta-(1-x[2])*z_i)/x[2]))-s down<-(((-x[1]+(j-1)*delta-(1-x[2])*z_i)/x[2]))-s H[i,j]<-pnorm(up,mean=0,sd=1)-pnorm(down,mean=0,sd=1)} } K<-solve(I-H) one <- matrix(1,nrow=t,ncol=1) u <- matrix(0,nrow=m,ncol=1) y<-c(u, 1, u) z<-t(y) ARLV<-K%*%one ARLV2<-t(ARLV) return((ARLV2%*%y)/3) } # constraint function eval_g0 <- function(x) {m1<-100 t1<-2*m1+1 H1<-matrix(data=NA,nrow=t1,ncol=t1) I1<-diag(t1) delta1<-2*x[1]/t1 z1<--x[1]+.5*delta1 range11<-t1 for (i1 in 1:range11){ z_i1=-x[1]+(i1-.5)*delta1 for (j1 in 1:range11){ up1<-((-x[1]+j1*delta1-(1-x[2])*z_i1)/x[2]) down1<-((-x[1]+(j1-1)*delta1-(1-x[2])*z_i1)/x[2]) H1[i1,j1]<-pnorm(up1,mean=5,sd=1)-pnorm(down1,mean=5,sd=1)} } K1<-solve(I1-H1) one1 <- matrix(1,nrow=t1,ncol=1) u1 <- matrix(0,nrow=m1,ncol=1) y1<-c(u1, 1, u1) z1<-t(y1) ARLV1<-K1%*%one1 ARLV21<-t(ARLV1) return( abs((ARLV21%*%y1)-500)-1) } eval_f0 <- function(x) romberg(function(s) f(x, s), 0, 6) of <- nloptr( x0=c(0.653,0.09), eval_f=eval_f0, lb = c(0,0), ub = c(6,1), eval_g_ineq = eval_g0, opts = list("algorithm"="NLOPT_LN_COBYLA", "maxeval"=1000), ) print(of) Regards, Aya [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.