<DIV></DIV>
<DIV></DIV>
<P>Hi Stefan,</P>
<P>Thank you for your help! I noticed the new_x flag after your advise.In every eval_* function,the document said about the new_x flag:</P>
<P>The boolean variable new_x will be false if the last call to any of the evaluation methods(eval_*) used<BR>the same x values.This can be helpful when users have efficient implementations that calculate multiple<BR>outputs at once. Ipopt internally caches results from the TNLP and generally,this flag can be ignored.</P>
<P>I don't understand the meaning of this section very cleary.I guess the meaning is that we can calculate the value,grandient,and hessian for my function in only one of the eval_* function.If so,how should I write my program? Would you please explain the new_x flag in detail?Thank you very much!<BR></P><PRE>在2010-02-24 17:31:21,"Stefan Vigerske" <stefan@math.hu-berlin.de> 写道:
>Hi,
>
>you may use the new_x flag that Ipopt provides for all the eval_*
>functions. That is, if new_x is set to true in any of these routines,
>then you compute value, gradient, and hessian for your function and
>store these values in your TNLP object. As long as new_x is false, you
>can use return this evaluated data in all eval_* functions.
>
>Stefan
>
>lqc234 wrote:
>> Hi everybody:
>> I have had a problem during using the Ipopt-3.6.1.And I have no idea about this problem for several days,I think that you might not think of this situation .
>> Suppose f(x)= x^2+2*x+1/x+3*x+4*x^3. This formula is very simple,however consider this situation: in my application,for example,1/x+3*x+4*x^3 is a very complicated part that I can't write this part of formula directly,in other words I must use some codes to describe this part,for example
>> a set of "for" cycle codes with complicated processing. Now I thought there are two problem.
>> First , the direvative checker tools can't deal with this situation because the complicated part 1/x+3*x+4*x^3 is not described directly.
>> The second problem is not easily to describe somewhat.
>> The variable x changes in every iteration,while I can't write 1/x+3*x+4*x^3 directly.So in every iteration I have to describe the 1/x+3*x+4*x^3 part using some codes every time .However, I found that the excution sequence is "eval_jac_g,eval_grad_f,eval_g,eval_f,eval_h" sometime,sometimes it is not this sequence.Now I don't know which part I should write these codes in,it should be in the eval_f? or eval_g? or in eval_grad_f?eval_jac?eval_h?.
>> I don't know the processing procedure during one iteration in Ipopt,those codes should used only once,I can't used those codes in eval_f ,eval_g,eval_grad_f,eval_jac_g,eval_h all.
>> I don't know if I have described the problem clearly.I hope so.
>> Anyone can give some suggestion?Thank you very much in advance.
>>
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Ipopt mailing list
>> Ipopt@list.coin-or.org
>> http://list.coin-or.org/mailman/listinfo/ipopt
>
>
>--
>Stefan Vigerske
>Humboldt University Berlin, Numerical Mathematics
>http://www.math.hu-berlin.de/~stefan
</PRE><br><br><span title="neteasefooter"/></span>