Introduction to derivative-free optimization