On 12/03/2020 8:52 p.m., Abby Spurdle wrote:
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.

I'm impressed.
But you're still wrong.

Try this:
---------
#not good R code!
v = numeric ()

production3 <- function(L){
     #store in vector
     v <<- c (v, L)

    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, production3 ,method="CG", control = list(fnscale=-1) )

n = length (v)
print (n)

plot (1:n ,v, type="l")
---------

After 401 iterations (on my computer), the algorithm hasn't converged.
And I note it's converging extremely slowly, so I don't see any
argument for increasing the number of iterations.

And try this:
(The first 30 steps).
---------
plot (1:30 ,v [1:30], type="l")
---------

Little ripples aren't going anywhere...


That's the bug.

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.

The fact that it doesn't give a warning() when it knows it has failed to converge is also a pretty serious design flaw.

Duncan Murdoch

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to