[R] Relatively Simple Maximization Using Optim Doesnt Optimize

Eric Berger er|cjberger @end|ng |rom gm@||@com
Thu Mar 12 15:17:33 CET 2020


It is possible to work out this problem explicitly. Playing with a few
different calls to optim shows that the method="L-BFGS-B" gives the correct
answer.
I don't have particular insight into why method="CG" is problematic.


On Thu, Mar 12, 2020 at 4:12 PM Jeff Newmiller <jdnewmil using dcn.davis.ca.us>
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 <
> skylerbsaleebyan using 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 using 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.
>
> --
> Sent from my phone. Please excuse my brevity.
>
> ______________________________________________
> R-help using 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.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list