[R] Testing optimization solvers with equality constraints

Mark Leeds m@rk|eed@2 @end|ng |rom gm@||@com
Fri May 21 21:31:08 CEST 2021


Hi Hans: I can't help as far as the projection of the gradient onto the
constraint but it may give insight just to see what the value of
the gradient itself is when the optimization stops.

John Nash ( definitely one of THE expeRts when it comes to optimization in
R )
often strongly recommends  to supply gradients so I'm   not sure what those
functions are
doing that don't allow it as an argument. I guess some numerical
approximation.

Hopefully John or Ravi will chime in with their expertise when they see
this posting.


Mark

P.S: You may want to try Rvminb. John wrote that one and it allows for
constraints ( I remember it
working nicely  for me when I had problems with some other ones but I don't
remember which ones ) but
I'm not certain  whether it can handle equalities.






On Fri, May 21, 2021 at 2:06 PM Hans W <hwborchers using gmail.com> wrote:

> Mark, you're right, and it's a bit embarrassing as I thought I had
> looked at it closely enough.
>
> This solves the problem for 'alabama::auglag()' in both cases, but NOT for
>
>   * NlcOptim::solnl     -- with x0
>   * nloptr::auglag      -- both x0, x1
>   * Rsolnp::solnp       -- with x0
>   * Rdonlp::donlp2      -- with x0
>
> as for these solver calls the gradient function g was *not* used.
>
> Actually, 'solnl()' and 'solnp()' do not allow a gradient argument,
> 'nloptr::auglag()' says it does not use a supplied gradient, and
> 'donlp2' again does not provide it.
> Gradients, if needed, are computed internally which in most cases is
> sufficient, anyway.
>
> So the question remains:
> Is the fact that the projection of the gradient onto the constraint is
> zero, is this the reason for the solvers not finding the minimum?
>
> And how to avoid this? Except, maybe, checking the gradient for all
> the given constraints
>
> Thanks  --HW
>
>
>
> On Fri, 21 May 2021 at 17:58, Mark Leeds <markleeds2 using gmail.com> wrote:
> >
> > Hi Hans: I think  that you are missing minus signs in the 2nd and 3rd
> elements of your gradient.
> > Also, I don't know how all of the optimixation functions work as far as
> their arguments but it's best to supply
> > the gradient when possible. I hope it helps.
> >
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list