Hello,
I have recently discovered the Nlopt library and I would like to use it to 
perform shape optimization in order to minimize a given functional (e.g. drag 
reduction).

The idea is to couple the Nlopt library with my CFD(computational fluid 
dynamic) code and use as control points some parametrization of the surface 
mesh of my object.  

When I use a local derivative-free algorithm (like COBYLA or BOBYLA) everything 
works perfectly (with COBYLA also the constraints are perfectly maintained).

But when I use a local-gradietn-based  (like MMA or SLSQP), the optimization 
fails.

The gradient is obtained via the resolution of the direct and Adjoint flow 
field and the evaluation of the "sensitivity" (i.e. gradient) field.
I have checked it, the gradient is correct (at least qualitatively).

What happens is that the first iteration is done correctly, the control points 
are moved in the correct direction and the objective  functional indeed 
decreases, but at the second iteration (although the gradient is very similar 
to the previous one and still "points" in the same direction) the control 
points chosen by the method go back ( to a position between the orginal one and 
the first one). Finally the control points seems to converge to a position 
almost identical to the original one... (while with BOBYLA the shape is very 
different and the objective functional much smaller).

Do you see any reason why the gradient method should not work in this kind of 
problem?
Any indication where the problem may be (I am sure the problem is mine 
somehwere..)

Thank you very much,
best regards,
Matteo
_______________________________________________
NLopt-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/nlopt-discuss

Reply via email to