Reducing the carbon footprint of urban bus fleets using multi-objective optimization