[R] Upper bound vector in Nloptr

Narendra Modi bjpmodi2016 at gmail.com
Wed Jul 20 21:56:21 CEST 2016


Hello Folks,

I am using "nloptr" optimizer in my program as below.

my.data.var <- c(10,0.25,0.25,0.25,0.25,0.25,
                 10,0.25,0.25,0.25,0.25,0.25,
                 10,0.25,0.25,0.25,0.25,0.25,
                 10,0.25,0.25,0.25,0.25,0.25)

#Option for non-linear optimization algorithm NLOPTR
opts = list("algorithm"="NLOPT_LN_COBYLA",
            "xtol_rel"=1.0e-6, "maxeval"= 10000)
lb = vector("numeric",length= length(my.data.var))

#NLOPT_LN_COBYLA

result <- nloptr(my.data.var,eval_f = Error.func,lb=lb,
                 ub =
c(Inf,1,1,1,1,1,Inf,1,1,1,1,1,Inf,1,1,1,1,1,Inf,1,1,1,1,1),eval_g_ineq=constraint.func,
                 opts = opts)

As you can see, I have to explicitly define the "upper bound: ub" as a
long vector in this scenario.

In another case, the number of variables "my.data.var" (24 in the
above example) can go up to 100 and hence. the "upper bound" needs to
be modified. I would like to avoid writing that explicilty in the
"ub".

How can I dynamically do it ?  I am out of ideas here.

Thanks for the help.



More information about the R-help mailing list