[R] Relatively Simple Maximization Using Optim Doesnt Optimize

Abby Spurdle @purd|e@@ @end|ng |rom gm@||@com
Sat Mar 14 08:58:02 CET 2020

I got that last point wrong as well.
(Each iteration is using five evaluations).

Ignore all my comments on this subject.

On 3/14/20, Abby Spurdle <spurdle.a using gmail.com> wrote:
>> It is correctly signalling that it hasn't converged (look at
>> optim.sol$convergence, which "indicates that the iteration limit maxit
>> had been reached".)  But CG should be taking bigger steps.  On a 1D
>> quadratic objective function with no errors in the derivatives, it
>> should take one step to convergence.  Here we're not quadratic (though
>> it's pretty close), and we don't have exact derivatives (your ripples),
>> so the fact that it is sticking to one step size is a sign that it is
>> not working.   If those ripples are big enough to matter (and I'm not
>> convinced of that), it should take highly variable steps.
> Hi Duncan,
> I need to apologize.
> The problem has nothing to do with little ripples.
> (My bad...)
> I tried approximating the function with a cubic Hermite spline.
> (Essentially smoothing the function).
> However, the optim function still returns the wrong result.
> Which surprised me...
> Then I tried changing the max number of iterations, and found
> something quite interesting:
> ---------
> production.wr <- function(L){
>   cat (L, "\n")
>   budget=100000
>   Lcost=12
>   Kcost=15
>   K=(budget-L*Lcost)/Kcost
>   machines=0.05*L^(2/3)*K^(1/3)
>   return(machines)
> }
> S1=optim(1001,production.wr,method="CG",control=list(fnscale=-1, maxit=1))
> S1=optim(1001,production.wr,method="CG",control=list(fnscale=-1, maxit=2))
> S1=optim(1001,production.wr,method="CG",control=list(fnscale=-1, maxit=3))
> S1=optim(1001,production.wr,method="CG",control=list(fnscale=-1, maxit=4))
> ---------
> The first iteration calls the function (3 + 2) times.
> Subsequent iterations call the function (2 + 2) times.
> In the subset-of-3, the step size is exactly 0.001.
> And in subsequent leading (but not trailing) subsets-of-2, the step
> size is exactly 0.002.
> I was wondering (hypothetically) if the first iteration is
> approximating the second derivative, and subsequent iterations are
> not...???

More information about the R-help mailing list