[Ipopt] Ipopt Digest, Vol 38, Issue 14

Andreas Waechter andreasw at watson.ibm.com
Thu Feb 28 04:17:23 EST 2008


Hi Xiaoming,

Just to add a few things:

I guess you are aware that just storing your Jacobian matrix (in dense 
form) requires 80MB - 8GB, and factorization of such data will take a lot 
of time even if you use dense matrices.

If you want to try to use Ipopt as it is, you should make sure that you 
use a linear solver that exploits BLAS properly, i.e., not MA27.  Best 
would be Pardiso, or maybe WSMP.  Here, make sure that you are using a
version of BLAS that is configured for your particular machine, such as 
Atlas, and not the netlib standard version (or -lblas on Linux, which is 
not very good).

There are no plans from my side to include dense matrix support into 
Ipopt, but of course you can add this feature yourself, since Ipopt is 
open source, and in that case it would be great if we could add it to the 
Ipopt distribution.

Andreas

On Wed, 27 Feb 2008, Damien Hocking wrote:

> Hmmmm.  That's getting big for a dense system, but you could give it a try.
> That's the only way to find out.
>
> Damien
>
> -----Original Message-----
> From: Xiaoming Yu [mailto:xiaoming.yu at mscsoftware.com]
> Sent: Wednesday, February 27, 2008 5:57 PM
> To: Damien Hocking; ipopt at list.coin-or.org
> Subject: RE: [Ipopt] Ipopt Digest, Vol 38, Issue 14
>
> Hi Damien :
>
>
> Hello Damien:
>
> In our typical problems, N (design varaibles) is about in a range  1,000 -
> 10,000 and M (constraints) is 10,000 - 100,000. The Jacobian is 100% dense
> but the Hessians are diagonal. How you think?
>
> Thanks,
>
> Xiaoming
>
> -----Original Message-----
> From: ipopt-bounces at list.coin-or.org [mailto:ipopt-bounces at list.coin-or.org]
> On Behalf Of Damien Hocking
> Sent: Wednesday, February 27, 2008 4:40 PM
> To: ipopt at list.coin-or.org
> Subject: Re: [Ipopt] Ipopt Digest, Vol 38, Issue 14
>
> Xiaoming,
>
> How large is the dense matrix?  Most sparse solvers will solve dense
> problems of moderate size, but they're not as efficient.
>
> Damien
>
> -----Original Message-----
> From: ipopt-bounces at list.coin-or.org [mailto:ipopt-bounces at list.coin-or.org]
> On Behalf Of Xiaoming Yu
> Sent: Wednesday, February 27, 2008 4:34 PM
> To: Carl Laird; ZhangWeizhong
> Cc: ipopt at list.coin-or.org
> Subject: Re: [Ipopt] Ipopt Digest, Vol 38, Issue 14
>
> Hi Dr. Wächter and Carl :
>
> For engineering problems, many design cases have 100% dense jacobian. Using
> IPOPT existing sparsity structure of jacobia requires more computer memory.
> I know IPOPT is designed for the sparsity structure of large NLP. Do you
> have a plan to provide another interface for dense jacobian (so, the user
> can select for either sparsity or dense structure)? Do you expect we can
> save meaningful computer memory by using dense jacobian structure? Is it too
> difficult to make such changes?
>
> Thanks,
>
> Xiaoming
>
> -----Original Message-----
> From: ipopt-bounces at list.coin-or.org [mailto:ipopt-bounces at list.coin-or.org]
> On Behalf Of Carl Laird
> Sent: Wednesday, February 27, 2008 3:20 PM
> To: ZhangWeizhong
> Cc: ipopt at list.coin-or.org
> Subject: Re: [Ipopt] Ipopt Digest, Vol 38, Issue 14
>
> Hello Weizhong Zhang,
>
> The method eval_jac_g is called by Ipopt for two purposes. The first
> is to retrieve the sparsity structure of the matrix (where will the
> non-zeros be). Note, that this structure is fixed throughout the
> optimization and cannot change. The second purpose is to return the
> values of the jacobian at a certain point. Ipopt will call eval_jac_g
> many times to evaluate the jacobian at different points as it solves
> the problem.
>
> Therefore, the first time that Ipopt calls eval_jac_g it will be to
> retrieve the sparsity structure. For this purpose, it does not need
> any values, it just wants to know where the non-zeros will be so it
> can reserve the appropriate memory and data structures. Therefore,
> when you give Ipopt the sparsity structure, you should include every
> (i,j) that may ever have a nonzero value, even if they may be zero at
> the initial point. For this call, Ipopt will have valid pointers for
> iRow and jCol, but NULL for x since it does not care about the actual
> values of the jacobian, but only the structure.
>
> The second time (and every time thereafter) that Ipopt calls
> eval_jac_g, it will be to retrieve the values of the jacobian at a
> particular point x. Here, Ipopt will give NULL pointers for iRow and
> jCol, but a valid pointer in x. During these calls, return the
> derivatives in the "values" array using the same order that you
> specified iRow/jCol in the first call.
>
> I hope this helps,
>
> Cheers,
>
> Carl.
>
> 2008/2/27 ZhangWeizhong <greatzwz at hotmail.com>:
>>
>>  Hi, anyone can help me about my problem?
>>
>>  For eval_jac_g(Index n, const Number* x, bool new_x, Index m, Index
> nele_jac, Index* iRow, Index *jCol, number* values ).
>>  In IPOPT manual p21
>>   " If iRow and jCol arguments are not NULL, then IPOPT wants your to fill
> in the sparsity structure of the Jacobian(the row and column indices only).
> At this time, the x argument and the values argument will be NULL"
>>
>>   I do not understand the following two questions according to the manual
> p21.
>>   How can x be null at any situation? The values are the nonzero elements
> in the jacobian of the constraint functions, how can be null when we specify
> the locations of the nonzero elements?
>>
>>  Thank you.
>>
>>
>>  The attachment is the results from my running program.
>>
>>
>>
>>  I used "derivative checker" to run my program, the result is in the
> following:
>>  "......
>>  * jac_g [   96,  151] =  0.0000000000000000e+00    ~
> 1.8756734988301105e+03  [ 1.000e+00]
>>  * jac_g [   98,  151] =  0.0000000000000000e+00    ~
> 1.9164490083767305e+03  [ 1.000e+00]
>>  * jac_g [  100,  151] =  0.0000000000000000e+00    ~
> 1.9572245150811796e+03  [ 1.000e+00]
>>
>>  Derivative checker detected 935 error(s).
>>
>>  Number of nonzeros in equality constraint Jacobian...:     1000
>>  Number of nonzeros in inequality constraint Jacobian.:        0
>>  Number of nonzeros in Lagrangian Hessian.............:        0
>>
>>  *** Error from MA27AD *** IFLAG = 1 IERROR = 958
>>  The index of a matrix is out of range.
>>  Please check your implementation of the Jabobian and Hessian
> matrices.Exception of type: FATAL_ERROR_IN_LINEAR_SOLVER in file
> "IpStdAugSystemSolver.cpp" at line 219:
>>   Exception message: A fatal error occured in the linear solver.
>>
>>  EXIT: Some uncaught Ipopt exception encountered.
>>
>>
>>  *** The problem FAILED!"
>>
>>  By valgrind:
>>  ==20844== 128199 errors in context 40 of 40:
>>  ==20844== Conditional jump or move depends on uninitialised value(s)
>>
>>
>>
>>  ----------------------------------------
>> > From: ipopt-request at list.coin-or.org
>> > Subject: Ipopt Digest, Vol 38, Issue 14
>> > To: ipopt at list.coin-or.org
>> > Date: Wed, 27 Feb 2008 12:00:02 -0500
>> >
>> > Send Ipopt mailing list submissions to
>> >       ipopt at list.coin-or.org
>> >
>> > To subscribe or unsubscribe via the World Wide Web, visit
>> >       http://list.coin-or.org/mailman/listinfo/ipopt
>> > or, via email, send a message with subject or body 'help' to
>> >       ipopt-request at list.coin-or.org
>> >
>> > You can reach the person managing the list at
>> >       ipopt-owner at list.coin-or.org
>> >
>> > When replying, please edit your Subject line so it is more specific
>> > than "Re: Contents of Ipopt digest..."
>> >
>> >
>> > Today's Topics:
>> >
>> >    1. Re: Ipopt Digest, Vol 38, Issue 8 (ZhangWeizhong)
>> >
>> >
>> > ----------------------------------------------------------------------
>> >
>> > Message: 1
>> > Date: Tue, 26 Feb 2008 16:51:45 -0500
>> > From: ZhangWeizhong
>> > Subject: Re: [Ipopt] Ipopt Digest, Vol 38, Issue 8
>> > To: ZhangWeizhong
>> > Cc: ipopt at list.coin-or.org
>> > Message-ID:
>> > Content-Type: text/plain; charset="gb2312"
>> >
>> >
>> > Hi,all:
>> >      Do we must supply "values" in eval_jac_g manually because IPOPT
> can not provide these automatically?
>> >      It seems that we do not have to provide the values(just index of
> the jacobian matrix is fine) to NAG.
>> >      The two differences between NAG and IPOPT now for me are
>> >       1. IPOPT needs to be provided with the derivative of the
> objective function, which is not required in NAG.
>> >       2. IPOPT needs to be provided with the jacobian of the
> constraints manually, in NAG, just the structure of the jacobian is needed.
>> >      Am I right for these?
>> >      Thank you.
>> >                                  Weizhong Zhang
>> >
>> >
>> > ----------------------------------------
>> >> From: greatzwz at hotmail.com
>> >> To: stefan at math.hu-berlin.de
>> >> Subject: RE: [Ipopt] Ipopt Digest, Vol 38, Issue 8
>> >> Date: Tue, 26 Feb 2008 15:21:14 -0500
>> >>
>> >>
>> >> Hi,Stefan:
>> >>     Thank you so much for your help.
>> >>      I think now I may know where the problem is.
>> >>      It is in
>> >>      eval_jac_g(Index n, const Number* x, bool new_x, Index m, Index
> nele_jac, Index* iRow, Index *jCol, Number* values).
>> >>
>> >>      I have supplied iRow, jCol, but  the values for the Jacobian of
> the constraints at the point x were not provided, I assumed it will be zero
> which is defined as the same as in NAG.
>> >>
>> >>     I will check that, thank you so much.
>> >>                                Weizhong Zhang
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> ----------------------------------------
>> >>> Date: Tue, 26 Feb 2008 20:37:23 +0100
>> >>> From: stefan at math.hu-berlin.de
>> >>> To: ipopt at list.coin-or.org
>> >>> CC: greatzwz at hotmail.com
>> >>> Subject: Re: [Ipopt] Ipopt Digest, Vol 38, Issue 8
>> >>>
>> >>> Hi,
>> >>>
>> >>> ZhangWeizhong wrote:
>> >>>> hI, all:     Now the problem is " Invalid number in NLP function or
> derivative detected"     And  number of iteration is "0"    Can anyone give
> me any suggestions?
>> >>>
>> >>> Probably your code that computes function values and jacobian returns
> an
>> >>> invalid number.
>> >>> From the valgrind message you send I would guess that you might not
> set
>> >>> all values in the arrays that Ipopt provides you when it asks for a
>> >>> function or jacobian evaluation.
>> >>>
>> >>> You should make sure that you implemented the evaluation routines
>> >>> eval_f, eval_grad_f, eval_g, and eval_jac_g such that you return
> correct
>> >>> numbers in obj_value, grad_f, g, and values, repectively.
>> >>> E.g., in the eval_jac_g routine make sure that you have set all
> nele_jac
>> >>> entries of values and did not leave some out.
>> >>> Also you should not assume that values array is initialized with
> 0'th.
>> >>>
>> >>> Adding some printf's in your evaluation routines that tell which
> values
>> >>> you return to Ipopt should help to find the problem.
>> >>>
>> >>> (Andreas, you could make this error message a bit clearer by at least
>> >>> telling whether it was a function value or a gradient :-).)
>> >>>
>> >>> Best,
>> >>> Stefan
>> >>>
>> >>>
>> >>> --
>> >>> Stefan Vigerske
>> >>> Humboldt University Berlin, Numerical Mathematics
>> >>> http://www.math.hu-berlin.de/~stefan
>> >>
>> >> _________________________________________________________________
>> >> ????? MSN ??????????
>> >> http://mobile.msn.com.cn/
>> >
>> > _________________________________________________________________
>> > MSN?????????????????????
>> > http://im.live.cn/emoticons/?ID=18
>> >
>> >
>> > ------------------------------
>> >
>> > _______________________________________________
>> > Ipopt mailing list
>> > Ipopt at list.coin-or.org
>> > http://list.coin-or.org/mailman/listinfo/ipopt
>> >
>> >
>> > End of Ipopt Digest, Vol 38, Issue 14
>> > *************************************
>>
>>  _________________________________________________________________
>>  MSN????????,?????,?????!
>>  http://im.live.cn/emoticons/?ID=18
>>  _______________________________________________
>>  Ipopt mailing list
>>  Ipopt at list.coin-or.org
>>  http://list.coin-or.org/mailman/listinfo/ipopt
>>
>
>
>
> -- 
>
> Carl D. Laird
> Assistant Professor,
> Artie McFerrin Department of Chemical Engineering,
> Texas A&M University
> Ph: (979) 458-4514
> Email: carl.laird at tamu.edu
>
> _______________________________________________
> Ipopt mailing list
> 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
>
>
>
>
> _______________________________________________
> Ipopt mailing list
> 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
>
>


More information about the Ipopt mailing list