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]]

