[R] Relatively Simple Maximization Using Optim Doesnt Optimize
Duncan Murdoch
murdoch@dunc@n @end|ng |rom gm@||@com
Fri Mar 13 04:13:21 CET 2020
On 12/03/2020 7:25 p.m., Abby Spurdle wrote:
>> There is nothing in that plot to indicate that the result given by
>> optim() should be accepted as optimal. The numerical approximation to
>> the derivative is 0.055851 everywhere in your graph
>
> That wasn't how I intended the plot to be interpreted.
> By default, the step size (in x) is 1e-5, which seems like a moderate step size.
optim() uses a much larger one. You can see it if you run this code
after yours:
production2 <- function(L){
abline(v=L);cat("L=", L, "\n") # Add this in to see L values
budget=100000
Lcost=12
Kcost=15
K=(budget-L*Lcost)/Kcost
machines=0.05*L^(2/3)*K^(1/3)
return(machines)
}
optim.sol <- optim (1001, production2 ,method="CG", control =
list(fnscale=-1) )
You'll get just 3 evaluations within the scale of your plot. They are at
L= 1006.536
L= 1006.537
L= 1006.535
It appears to have chosen step size 0.001, not 0.00001. It should be
getting adequate accuracy in both 1st and 2nd derivatives.
Those little ripples you see in the plot are not relevant.
> However, at that level, the numerical approximation is very badly behaved.
> And if the step size is decreased, things get worse.
>
> I haven't checked all the technical details of the optim function.
> But any reliance on numerical approximations of the derivative, have a
> high chance of running into problems using a function like this.
>
More information about the R-help
mailing list