[Ipopt] What if the sparsity structure of Hessian depends on x

Jonathan Hogg jonathan.hogg at stfc.ac.uk
Fri Feb 15 04:10:44 EST 2013


I guess you could modify the linear solver driver to use a drop 
tolerance and rerun the analysis on every iteration.
I'm actually planning to do this in one of the HSL drivers at some stage 
in the future, so if you try it I'd be interested to hear how you get on.

The major cost of changing the sparsity structure is that the ordering 
needs to be recalculated. If you choose a cheaper ordering (minimum 
degree rather than nested dissection based) you'll amortize that cost, 
though your numerical factorization may take longer/be less parallel.

Regards,

Jonathan.

On 14/02/13 22:44, Xin Zhao wrote:
> Thanks, Stefan.
>
> I've tried to set such a number of nonzero elements that every 
> potential nonzero entry can be included, but the performance became 
> unacceptable.
>
> Is there any option to change the sparsity structure at each iteration 
> to work this out?
> Or maybe, it is even slower than setting a large number of nonzero 
> entries to change the sparsity structure at each iteration?
>
>
> Best,
> Xin
>
>
> On Fri, Feb 15, 2013 at 1:17 AM, Stefan Vigerske 
> <stefan at math.hu-berlin.de <mailto:stefan at math.hu-berlin.de>> wrote:
>
>     Hi,
>
>
>     On 02/14/2013 10:48 PM, Xin Zhao wrote:
>
>         So basically I wanna to know:
>
>         At each iteration,
>
>         1. Can we change the sparsity structure of Hessian?
>
>
>     No. During initialization, you should specify a sparsity structure
>     that is valid during the whole solution process. You may then have
>     to put 0 values into the hessian from time to time.
>
>
>         2. eval_h are called with const Ipopt::Number* x = NULL first or
>         Ipopt::Index iRow = NULL first.
>
>
>     At the beginning, Ipopt calls eval_h with x = NULL to get the
>     sparsity structure. Later, it calls with x != NULL to get the
>     values w.r.t. the initially specified sparsity structure.
>
>     Same for the jacobian.
>
>     Stefan
>
>
>
>         Thanks.
>
>
>         Best,
>         Xin
>
>
>         On Thu, Feb 14, 2013 at 11:20 PM, Xin Zhao
>         <sean.null at gmail.com <mailto:sean.null at gmail.com>> wrote:
>
>             Dear all,
>
>             Would anyone like to explain me some details on the
>             sequence how eval_h
>             and eval_jac_g are called?
>
>             At each iteration, are eval_h and eval_jac_g called first
>             with values =
>             NULL or not?
>
>             For my case, the sparsity structure of eval_h and
>             eval_jac_g depends on
>             the variables x. So it matters
>             how eval_h and eval_jac_g are called first. Or maybe there
>             is another
>             workout?
>
>             Thanks.
>
>
>             Best,
>             Xin
>
>
>
>
>         _______________________________________________
>         Ipopt mailing list
>         Ipopt at list.coin-or.org <mailto:Ipopt at list.coin-or.org>
>         http://list.coin-or.org/mailman/listinfo/ipopt
>
>
>
>
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt


-- 
Scanned by iCritical.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/ipopt/attachments/20130215/422c5178/attachment-0001.html>


More information about the Ipopt mailing list