Semi-Infinite Programming: Theory, Methods, and Applications