implement multi-objective optimization