[Coin-ipopt] Re: Coin-ipopt Digest, Vol 16, Issue 9
Andreas Waechter
andreasw at watson.ibm.com
Fri Mar 31 15:31:29 EST 2006
Hi Sonia,
The discussion that you refer to was related to the Fortran version of
Ipopt, which is still available and works fine, but it is not longer
actively maintained. This one has the options to approximate second
derivatives, so that no second derivatives have to be provided.
I'm planning to release a new version of the C++ implementation of Ipopt
hopefully by the end of next week, and that one will also have an option
to approximate the Hessian of the Lagrangian function, so that also for
this version there is no need to provide second derivatives.
However, for both the new and the old version of Ipopt it is true that
second derivatives should be provided if possible, since it makes the
algorithm more robust and efficient.
Hope this answers you question,
Andreas
On Fri, 31 Mar 2006, Sonia Singhal wrote:
> Hi Carl,
>
> You mentioned "at least first derivative (need to be estimated)", does
> that mean IPOpt has now the version where the hessian need not be
> provided ?
>
> thanks,
> ~ Sonia
>
>> Send Coin-ipopt mailing list submissions to coin-ipopt at list.coin-or.org
>>
>> To subscribe or unsubscribe via the World Wide Web, visit
>> http://list.coin-or.org/mailman/listinfo/coin-ipopt or, via email, send a
>> message with subject or body 'help' to coin-ipopt-request at list.coin-or.org
>>
>>
>> You can reach the person managing the list at
>> coin-ipopt-owner at list.coin-or.org
>>
>> When replying, please edit your Subject line so it is more specific than
>> "Re: Contents of Coin-ipopt digest..."
>>
>>
>> Today's Topics:
>>
>> 1. a question (zwerhu at graduate.shu.edu.cn) 2. a question
>> (zwerhu at graduate.shu.edu.cn) 3. Re: a question (Carl Damon Laird) 4. Re: a
>> question (damien at khubla.com) 5. explain-my question (zhangwen) 6. Re:
>> explain-my question (Carl Damon Laird)
>>
>>
>> ----------------------------------------------------------------------
>>
>> Message: 1 Date: Fri, 31 Mar 2006 00:04:01 +0800 From:
>> zwerhu at graduate.shu.edu.cn Subject: [Coin-ipopt] a question To:
>> coin-ipopt at list.coin-or.org Message-ID:
>> <YJkIGrKi3n7O$z7fcJeag$OpmQjLXi at zwerhu> Content-Type: text/plain;
>> charset="us-ascii"
>>
>> An HTML attachment was scrubbed... URL:
>> http://list.coin-or.org/pipermail/coin-ipopt/attachments/20060331/d0707e2
>> 9/attachment-0001.html
>>
>> ------------------------------
>>
>> Message: 2 Date: Fri, 31 Mar 2006 08:46:20 +0800 From:
>> zwerhu at graduate.shu.edu.cn Subject: [Coin-ipopt] a question To:
>> "andreasw" <andreasw at watson.ibm.com>,
>> "coin-ipopt" <coin-ipopt at list.coin-or.org> Message-ID:
>> <gd20IyyPxmRH$7I5ma2uG$nTbe35OR at zwerhu> Content-Type: text/plain;
>> charset="us-ascii"
>>
>> An HTML attachment was scrubbed... URL:
>> http://list.coin-or.org/pipermail/coin-ipopt/attachments/20060331/3bc9c50
>> 1/attachment-0001.html
>>
>> ------------------------------
>>
>> Message: 3 Date: Thu, 30 Mar 2006 20:03:21 -0500 (EST) From: Carl Damon
>> Laird <claird at andrew.cmu.edu> Subject: Re: [Coin-ipopt] a question To:
>> zwerhu at graduate.shu.edu.cn Cc: =?GB2312?B?YW5kcmVhc3c=?=
>> <andreasw at watson.ibm.com>, =?GB2312?B?Y29pbi1pcG9wdA==?=
>> <coin-ipopt at list.coin-or.org> Message-ID:
>> <Pine.LNX.4.60-041.0603302000458.17661 at unix50.andrew.cmu.edu>
>> Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
>>
>> I am not sure what you mean by "get the objective function through
>> another iteration". If your objective function is a particular subroutine,
>> then it is certainly possible to use the Fortran interface (or Matlab if
>> it is a Matlab subroutine) to define the problem. If you do not know the
>> form of the objective function however, you will need to find some way to
>> estimate the derivatives (at least first derivatives). This might mean
>> using automatic differentiation or finite difference approximations.
>>
>> Hope this helps,
>>
>> Carl.
>>
>> On Fri, 31 Mar 2006 zwerhu at graduate.shu.edu.cn wrote:
>>
>>>
>>> Hi, all
>>>
>>> I want to ask a question about the entering of the objective function
>>> in using IPOPT. I am faced with the NLP problem in which the objective
>>> function doesn't have a unique or known form. In fact, I must get the
>>> objective function through another iteration which can be realized by a
>>> separated subroutine. I mean, i must use a function "f=f(x1,x2)" to get
>>> the objective function, where x1,x2 are unknown variables of the NLP
>>> problem and the function "f" is an iteration which doesn't have a
>>> unique form. So, I wonder whether this can be realized by IPOPT Matlab
>>> interface or otherwise, in the Fortran interface directly. Thanks a lot!
>>>
>>>
>>>
>>> Best Regards, W. Zhang
>>>
>>>
>>>
>>
>>
>> ------------------------------
>>
>> Message: 4 Date: Thu, 30 Mar 2006 19:04:12 -0700 (MST) From:
>> damien at khubla.com Subject: Re: [Coin-ipopt] a question To: "Carl Damon
>> Laird" <claird at andrew.cmu.edu> Cc: andreasw <andreasw at watson.ibm.com>,
>> coin-ipopt <coin-ipopt at list.coin-or.org> Message-ID:
>> <60542.68.144.53.88.1143770652.squirrel at mail.khubla.com> Content-Type:
>> text/plain;charset=iso-8859-1
>>
>> Do you mean that you have to solve another smaller problem iteratively in
>> order to calculate the objective? If so, you probably will need to use
>> finite differences as Carl suggested to get the gradient. Generally, an
>> optimisation will still solve quite well with finite differences. The
>> only issue will be that it might take a while to solve, because you have
>> to solve for the objective for each finite difference.
>>
>> One very important thing: is your objective a continuous function in x1
>> and x2? If it has lumps or bumps in it, IPOPT might struggle a bit.
>>
>> Damien
>>
>>> I am not sure what you mean by "get the objective function through
>>> another iteration". If your objective function is a particular
>>> subroutine, then it is certainly possible to use the Fortran interface
>>> (or Matlab if it is a Matlab subroutine) to define the problem. If you
>>> do not know the form of the objective function however, you will need to
>>> find some way to estimate the derivatives (at least first derivatives).
>>> This might mean using automatic differentiation or finite difference
>>> approximations.
>>>
>>> Hope this helps,
>>>
>>> Carl.
>>>
>>> On Fri, 31 Mar 2006 zwerhu at graduate.shu.edu.cn wrote:
>>>
>>>>
>>>> Hi, all
>>>>
>>>> I want to ask a question about the entering of the objective function
>>>> in using IPOPT. I am faced with the NLP problem in which the objective
>>>> function doesn't have a unique or known form. In fact, I must get the
>>>> objective function through another iteration which can be realized by
>>>> a separated subroutine. I mean, i must use a function "f=f(x1,x2)" to
>>>> get the objective function, where x1,x2 are unknown variables of the
>>>> NLP problem and the function "f" is an iteration which doesn't have a
>>>> unique form. So, I wonder whether this can be realized by IPOPT Matlab
>>>> interface or otherwise, in the Fortran interface directly. Thanks a
>>>> lot!
>>>>
>>>>
>>>> Best Regards, W. Zhang
>>>>
>>>>
>>>>
>>> _______________________________________________ Coin-ipopt mailing list
>>> Coin-ipopt at list.coin-or.org
>>> http://list.coin-or.org/mailman/listinfo/coin-ipopt
>>>
>>
>>
>>
>>
>> ------------------------------
>>
>> Message: 5 Date: Fri, 31 Mar 2006 12:48:47 +0800 From: "zhangwen"
>> <zwerhu at graduate.shu.edu.cn> Subject: [Coin-ipopt] explain-my question To:
>> "Carl Damon Laird" <claird at andrew.cmu.edu>, "zhangwen"
>> <zhangwen at graduate.shu.edu.cn>, "coin-ipopt" <coin-ipopt at list.coin-or.org>
>> Message-ID: <1143780608$90615$97378552 at zwerhu@graduate.shu.edu.cn>
>> Content-Type: text/plain; charset="gb2312"
>>
>> Hi, Carl, Thank you for your replying for my question! I mean, if
>> "x=(x_1,...,x_n)' " are the n variables of the NLP problem. The objective
>> function has the form "f=f(y_1,...,y_n)", where "y=(y_1,...,y_n)' " and
>> "y" can be got from the subroutine/sub-function "y=subfun(x)". Here, the
>> objective function "f" has a unique form such as "f=y_1*y_1+...+y_n*y_n",
>> but f can't be expressed directly by the vector x. I can get y through
>> the subfunction 'subfun', but all the variables x_1,...,x_n are unknown
>> at the beginning. So, the objective function must include another
>> function "subfun", of which the variables are actually the unknowns of
>> NLP. That may be my problem. Thanks.
>>> I am not sure what you mean by "get the objective function through
>>> another iteration". If your objective function is a particular
>>> subroutine, then it is certainly possible to use the Fortran interface
>>> (or Matlab if it is a Matlab subroutine) to define the problem. If you
>>> do not know the form of the objective function however, you will need to
>>> find some way to estimate the derivatives (at least first derivatives).
>>> This might mean using automatic differentiation or finite difference
>>> approximations.
>>>
>>> Hope this helps,
>>>
>>> Carl.
>>>
>> Best Regards, W. Zhang
>>
>>
>>
>> ------------------------------
>>
>> Message: 6 Date: Fri, 31 Mar 2006 09:33:57 -0500 (EST) From: Carl Damon
>> Laird <claird at andrew.cmu.edu> Subject: [Coin-ipopt] Re: explain-my
>> question To: zhangwen <zwerhu at graduate.shu.edu.cn> Cc: coin-ipopt
>> <coin-ipopt at list.coin-or.org>, zhangwen <zhangwen at graduate.shu.edu.cn>
>> Message-ID: <Pine.LNX.4.60-041.0603310930210.1379 at unix40.andrew.cmu.edu>
>> Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
>>
>> This kind of problem arises whenever someone has existing simulation code
>> for all or part of a model and they want to use this code in
>> optimization. This can be done, but you are likely going to have to
>> approximate the derivatives of the objective function (or more precisely,
>> the derivatives of the y's with respect to the x's - then use chain rule
>> for df/dx).
>>
>> If your subroutine converting from x to y is indeed iterative, then you
>> will need to be very careful with convergence tolerances inside the
>> subroutine and Ipopt.
>>
>> Cheers,
>>
>> Carl.
>>
>> On Fri, 31 Mar 2006, zhangwen wrote:
>>
>>> Hi, Carl, Thank you for your replying for my question! I mean, if
>>> "x=(x_1,...,x_n)' " are the n variables of the NLP problem. The
>>> objective function has the form "f=f(y_1,...,y_n)", where
>>> "y=(y_1,...,y_n)' " and "y" can be got from the subroutine/sub-function
>>> "y=subfun(x)". Here, the objective function "f" has a unique form such
>>> as "f=y_1*y_1+...+y_n*y_n", but f can't be expressed directly by the
>>> vector x. I can get y through the subfunction 'subfun', but all the
>>> variables x_1,...,x_n are unknown at the beginning. So, the objective
>>> function must include another function "subfun", of which the variables
>>> are actually the unknowns of NLP. That may be my problem. Thanks.
>>>> I am not sure what you mean by "get the objective function through
>>>> another iteration". If your objective function is a particular
>>>> subroutine, then it is certainly possible to use the Fortran interface
>>>> (or Matlab if it is a Matlab subroutine) to define the problem. If you
>>>> do not know the form of the objective function however, you will need
>>>> to find some way to estimate the derivatives (at least first
>>>> derivatives). This might mean using automatic differentiation or
>>>> finite difference approximations.
>>>>
>>>> Hope this helps,
>>>>
>>>> Carl.
>>>>
>>> Best Regards, W. Zhang
>>>
>>>
>>>
>>
>>
>> ------------------------------
>>
>> _______________________________________________ Coin-ipopt mailing list
>> Coin-ipopt at list.coin-or.org
>> http://list.coin-or.org/mailman/listinfo/coin-ipopt
>>
>>
>> End of Coin-ipopt Digest, Vol 16, Issue 9
>> *****************************************
>>
>>
>
> _______________________________________________
> Coin-ipopt mailing list
> Coin-ipopt at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/coin-ipopt
>
More information about the Coin-ipopt
mailing list