As author of CG (at least the code that was used to build it), I can say I was never happy with that code. Rcgmin is the replacement I wrote, and I believe that could still be improved.
BUT: - you have a 1D optimization. Use Brent method and supply bounds. - I never intended CG (or BFGS or Nelder-Mead or ...) to work for 1D problems - as Jeff points out, you need the gradient. I stop Rcgmin and Rvmmin if user hasn't supplied one, as numerical approximations need to be very good for these gradient methods JN On 2020-03-12 10:03 a.m., Jeff Newmiller wrote: > The help file points out that CG is "fragile" ... and I would expect that > failing to define a gradient function will exacerbate that. > > I think you should use a different algorithm or specify a gradient function. > You might also consider working with the more recent optimr package > contributed by Dr Nash, author of the original optim function in R. > > On March 12, 2020 2:30:26 AM PDT, Skyler Saleebyan > <skylerbsaleeb...@gmail.com> wrote: >> I am trying to familiarize myself with optim() with a relatively simple >> maximization. >> >> Description: >> L and K are two terms which are constrained to add up to a total 100000 >> (with respective weights to each). To map this constraint I plugged K >> into >> the function (to make this as simple as possible.) >> >> Together these two feed into one nonlinear function which is the >> product of >> two monotonic (on the positive interval) functions. Then that numbers >> is >> returned in a function fed to optim, which should maximize the output >> by >> adjusting L. The whole code is: >> >> production1 <- function(L){ >> budget=100000 >> Lcost=12 >> Kcost=15 >> K=(budget-L*Lcost)/Kcost >> machines=0.05*L^(2/3)*K^(1/3) >> return(machines) >> } >> >> # production1(6000) #example of number with much higher output vs optim >> result >> S1=optim(1001,production1,method="CG",control=list(fnscale=-1)) >> S1 >> >> Output: >> $par >> [1] 1006.536 >> >> $value >> [1] 90.54671 >> >> $counts >> function gradient >> 201 101 >> >> $convergence >> [1] 1 >> >> $message >> NULL >> >> >> For some reason this never explores the problem space and just spits >> out >> some answer close to the initial condition. What am I doing wrong? >> >> Thanks, >> Skyler S. >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> 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. > ______________________________________________ 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.