Numerical methods for constrained optimization