Aya Anas
2013-Feb-18 21:28 UTC
[R] error: Error in if (is.na(f0$objective)) { : argument is of length zero
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]]
Bert Gunter
2013-Feb-18 21:39 UTC
[R] error: Error in if (is.na(f0$objective)) { : argument is of length zero
You're kidding, right?! See ?traceback for browsing the call stack after an error. Also ?browser, ?debug, and ?recover for other debugging options. -- Bert On Mon, Feb 18, 2013 at 1:28 PM, Aya Anas <aanas at feps.edu.eg> wrote:> 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 at 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.-- Bert Gunter Genentech Nonclinical Biostatistics Internal Contact Info: Phone: 467-7374 Website: http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm
jim holtman
2013-Feb-18 21:44 UTC
[R] error: Error in if (is.na(f0$objective)) { : argument is of length zero
Following up on what Bert said, also put options(error=utils::recover) at the start of the script so that on errors you get the traceback printed out and the you can also use the browser to look at the values of the objects at the point of the error. This is debugging 101. On Mon, Feb 18, 2013 at 4:28 PM, Aya Anas <aanas at feps.edu.eg> wrote:> 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 at 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.-- Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it.