Skip to content
Prev 61771 / 63424 Next

feature request: optim() iteration of functions that return multiple values

On Thu, 03 Aug 2023, Sami Tuomivaara writes:
If you only wish to store additional information, you could do
so with an environment, without changing optim.  For instance,
like so (using the first example from ?optim):

    data <- new.env()
    data$i <- 0
    data$fun.value <- numeric(1000)
    
    fr <- function(x, data) {   ## Rosenbrock Banana function
        x1 <- x[1]
        x2 <- x[2]
        ans <- 100 * (x2 - x1 * x1)^2 + (1 - x1)^2
        data$i <- data$i + 1
        data$fun.value[data$i] <- ans
        ans
    }
    optim(c(-1.2,1), fr, data = data)
    ## $par
    ## [1] 1.000260 1.000506
    ## 
    ## $value
    ## [1] 8.825241e-08
    ## 
    ## $counts
    ## function gradient 
    ##      195       NA 
    ## 
    ## ....

    data$i
    ## 195
    
    plot(data$fun.value[1:data$i])
Message-ID: <87cz03nro4.fsf@enricoschumann.net>
In-Reply-To: <PAXP189MB1928AA39727C26A434F8D3FFD608A@PAXP189MB1928.EURP189.PROD.OUTLOOK.COM> (Sami Tuomivaara's message of "Thu, 3 Aug 2023 20:21:33 +0000")