Mathematical Programming techniques in Water Network Optimization