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

Stefan Vigerske stefan at math.hu-berlin.de
Fri Feb 15 16:27:58 EST 2013


Hi,

On 02/15/2013 09:36 PM, Xin Zhao wrote:
> Thank you all.
>
>
> I am trying to do it the following way:
> When changing the sparsity structure, I return false in eval_* function and
> restart the Ipopt.

Restarting an interior point solver... good luck.

> My question now would be what will happen, if false returned? Will
> finalize_solution be called so that I can identify the status and copy the
> data?

Not so sure.
The intermediate_callback method is meant to implement user 
interruption. It would be better if you can use that one.

Stefan

>
> Best,
> Xin
>
>
> On Fri, Feb 15, 2013 at 12:20 PM, Sylvain Auliac <auliac at ann.jussieu.fr>wrote:
>
>> Hi,
>>   if the hessian matrix have too much non-zero elements for being
>> considered a sparse one, you might try using the BFGS approximation. That
>> said, it will also slow the optimization process down, but maybe less than
>> using a full exact hessian?
>>
>> Le 14 févr. 2013 à 23:44, Xin Zhao a écrit :
>>
>> 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
>>> 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> 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
>>>> http://list.coin-or.org/**mailman/listinfo/ipopt<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
>>
>>
>>   Sylvain Auliac
>> Laboratoire Jacques-Louis Lions
>> Université Pierre et Marie Curie
>> mail: auliac at ann.jussieu.fr
>> tel : 01 44 27 71 70
>>
>>
>>
>>
>>
>
>
>
> _______________________________________________
> Ipopt mailing list
> Ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/ipopt
>



More information about the Ipopt mailing list