[ADOL-C] Evaluating Hessian of Lagrangian
Ingrid Hallen
ingridhallen at hotmail.com
Tue Apr 9 04:11:46 EDT 2013
Ok, I think I kind of understand the idea. However, doesn't it require
that one solves equations of the form f(x) = 0, where f define
some of the constraints, for each iterate x to identify the kernel?
It seems related to the idea of eliminating equality constraints (as
in e.g. p. 132 in Convex Optimization by Boyd and Vandenberge),
which, as I did not mention :), I don't want to do.
Kind regards,
Ingrid
Date: Mon, 8 Apr 2013 13:14:39 -0700
From: normvcr at telus.net
To: ingridhallen at hotmail.com
CC: adol-c at list.coin-or.org
Subject: Re: [ADOL-C] Evaluating Hessian of Lagrangian
For the second point, specially since
there are almost as many
constraints as variables, it may be worthwhile to take the Hessian
with respect to only the directions in the kernel of the
constraints.
For example, if you are working in 20-dimensional Euclidean space,
with 18 constraints, that leaves an essentially 2-dimensional
optimization
problem, and you only really need a 2x2 Hessian, not a 20x20
Hessian.
You can choose two orthogonal directions in the kernel of the
constraints,
and construct the 2x2 Hessian of Lagrangian wrt them, viewing this
either
as directional derivatives or change of coordinates.
I don't know what amount of SW changes this would need, but it
seems it would be generally useful.
Cheers,
Norm
On 04/08/2013 06:38 AM, Ingrid Hallen wrote:
Thanks for the suggestions!
Regarding the first, I think it might not be so efficient for my
problem, having
almost as many constraints as variables. But I might give it a
try. Perhaps
one can modify the code for sparse_hess in some clever way ...
Regarding the second I am unfortunately clueless as to how one
could
exploit that fact.
Kind regards,
Ingrid
Date: Sun, 7 Apr 2013 15:31:50 -0700
From: normvcr at telus.net
To: adol-c at list.coin-or.org
Subject: Re: [ADOL-C] Evaluating Hessian of Lagrangian
Perhaps you can trace L as a
function of both x and lambda.
Then when you need the hessian,
calculate the hessian only with respect to x.
Not sure if this is better/worse than what you suggested.
When using the Hessian of the Lagrangian, you will
eventually be restricting
attention to the kernel of your constraints. Do you know if
this fact
would offer a simplification to how the hessian could be
computed?
Norm
On 04/05/2013 04:02 AM, Ingrid Hallen wrote:
Hi,
I'm doing non-linear optimization with IPOPT. For this,
I'm using ADOL-C
to compute the Hessian of the Lagrangian
L(x,lambda) = f(x) + sum_{i}lambda_{i}h_{i}(x),
where x are the variables, lambda the Lagrange multipliers
and
f(x) and h_{i}(x) objective and constraint functions.
What I'm doing in my code is the following (omitting
details):
// **********************
// Trace Lagrangian function
trace_on(tag);
for(i=0;i<n;i++) {
xad[i] <<= x[i];
}
Lagrangian(xad, lambda);
Lad >>=L;
trace_off();
// Evaluate Hessian of the Lagrangian
repeat = 0;
sparse_hess(tag,n,repeat,x,&nnz,&rind,&cind,&values,&options)
// ***********************
This works fine, but is not so efficient. One reason is
that, since lambda changes,
the Lagrangian function has to be retaped every time the
Hessian is needed and so it
appears that I cannot set repeat = 1 when calling
sparse_hess.
One way to circumvent this problem could perhaps be to
trace the objective
and constraint functions individually and then construct
the Hessian of
the Lagrangian using multiple calls to sparse_hess, but is
there a
more convenient way to do it?
Sincerely,
Ingrid
_______________________________________________
ADOL-C mailing list
ADOL-C at list.coin-or.org
http://list.coin-or.org/mailman/listinfo/adol-c
_______________________________________________
ADOL-C mailing list
ADOL-C at list.coin-or.org
http://list.coin-or.org/mailman/listinfo/adol-c
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/adol-c/attachments/20130409/ab91a5f9/attachment.html>
More information about the ADOL-C
mailing list