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
