The world of constrained/unconstrained optimization is sufficiently confusing that several
guides have been created pointing people to the right codes. Particularly nice is Hans Mittlemann's Decision Tree for Optimization Software at http://plato.asu.edu/guide.html.