Many-Objective Optimization and Applications to Water Engineering