[Ipopt] periodic boundary condition (modifying variables

Knut Heidemann heidemannknut at gmail.com
Wed Apr 10 07:46:21 EDT 2013


Projecting inside the evaluation routines should be possible and, I 
guess, sufficient.
Where exactly should I modify the variables?

For example

/bool WLCNLP::eval_f( Index n, const Number* x, bool new_x, Number& 
obj_value )
does not let me modify x. How would one usually do that?

Currently I am processing x as follows, in order to get the objective value:
     const Eigen::Map< const Eigen::Matrix< Number, Eigen::Dynamic, 1 > 
 > x_map( x, n );
     obj_value = system.evaluateEnergy(x_map);/

(I apologize for my very limited programming skills.)


Am 02.04.2013 17:53, schrieb Stefan Vigerske:
> Hi,
> I don't think that this is possible without implementation somewhere 
> deep in Ipopt.
> Could you let the variables free and just project their values into 
> [0,L] inside your evaluation routines?
> Stefan
> On 04/02/2013 01:45 PM, Knut Heidemann wrote:
>> Hi everyone,
>> I am searching for the feature in IPOPT, which allows me to modify the
>> optimization variables in between iterations.
>> In particular, I want to apply periodic boundary conditions on my
>> problem, meaning that every time a variable leaves the interval [0,L], I
>> want to do the following:
>> If x < 0 : x+=L
>> If x > L : x-=L
>> Is there a way of realizing this such that none of the values stays
>> outside the interval in between two steps of the "lowest" optimization
>> level (inside the Newton type iteration)?
>> Best,
>> Knut.
>> _______________________________________________
>> Ipopt mailing list
>> Ipopt at list.coin-or.org
>> http://list.coin-or.org/mailman/listinfo/ipopt

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/ipopt/attachments/20130410/f5299781/attachment.html>

More information about the Ipopt mailing list