[R] Non linear optimization with nloptr package fail to produce true optimal result
Duncan Murdoch
murdoch@dunc@n @end|ng |rom gm@||@com
Fri Dec 13 19:45:47 CET 2024
You posted a version of this question on StackOverflow, and were given
advice there that you ignored.
nloptr() clearly indicates that it is quitting without reaching an
optimum, but you are hiding that message. Don't do that.
Duncan Murdoch
On 2024-12-13 12:52 p.m., Daniel Lobo wrote:
> library(nloptr)
>
> set.seed(1)
> A <- 1.34
> B <- 0.5673
> C <- 6.356
> D <- -1.234
> x <- seq(0.5, 20, length.out = 500)
> y <- A + B * x + C * x^2 + D * log(x) + runif(500, 0, 3)
>
> #Objective function
>
> X <- cbind(1, x, x^2, log(x))
> f <- function(theta) {
> sum(abs(X %*% theta - y))
> }
>
> #Constraint
>
> eps <- 1e-4
>
> hin <- function(theta) {
> abs(sum(X %*% theta) - sum(y)) - 1e-3 + eps
> }
>
> Hx <- function(theta) {
> X[100, , drop = FALSE] %*% theta - (120 - eps)
> }
>
> #Optimization with nloptr
>
> Sol = nloptr(rep(0, 4), f, eval_g_ineq = hin, eval_g_eq = Hx, opts =
> list("algorithm" = "NLOPT_LN_COBYLA", "xtol_rel" = 1.0e-8))$solution
> # -0.2186159 -0.5032066 6.4458823 -0.4125948
More information about the R-help
mailing list