Optimization is the selection of a best element from some set of available alternatives. An optimization problem consists of maximizing or minimizing a real function by systematically choosing input values from within an allowed set and computing the value of the function. The generalization of optimization theory and techniques to other formulations comprises a large area of applied mathematics. Optimization is finding the best available value of some objective function given a defined domain, including a variety of different types of objective functions and different types of domains.

An optimization problem can be represented in the following way:

Given: a function f: A→R from some set A to the real numbers

Sought: an element x0 in A such that f(x0) <= f(x) for all x in A (“minimization”) or such that f(x0) >= f(x) for all x in A (“maximization”).

This formulation is called an optimization problem or mathematical programming problem. Many real world applications are modeled in their general framework. By convention, the standard form of an optimization problem is stated in terms of minimization, unless both of the objective functions and the feasible region are convex in a minimization problem.