Numerical Methods for Solving Semi-infinite Optimization Problems