This tutorial will consider intelligent search methods for finding good solutions to optimization problems that can be expressed algebraically or combinatorially. We describe algorithms and software available for
finding feasible/good solutions to problems formulated as mathematical programs, giving particular attention to mixed-integer programs and
mixed-integer nonlinear programs. "Mixed" in this context refers to a combination of continuous and integer variables. We also consider structured heuristics such as tabu search, simulated annealing, and genetic algorithms. Time permitting, we will touch on advanced topics such as stochastic programming
and other methods to address uncertainty, enumeration, and constraint programming.