Semi-infinite Programming: Numerical Methods