Mathematical optimization is the study of how to make the best possible choice from a set of available alternatives, where "best" is defined by a precise quantitative criterion. The field is built on a deceptively simple formal structure: given an objective function that assigns a numerical value to each candidate solution, and a set of constraints that define which candidates are permissible, find the candidate that minimizes (or maximizes) the objective. This framework is extraordinarily general. It underlies scheduling flights, training neural networks, designing supply chains, allocating investment portfolios, and deciding which chemical reactions to run in a refinery. The central intellectual challenge is not merely to state such problems, but to solve them reliably and efficiently, and to understand when a solution can be found at all.
Every optimization problem has three ingredients: decision variables, an objective function, and constraints. The decision variables are the quantities the optimizer is free to choose, such as the amount of each product to manufacture, the weights in a machine-learning model, or the angles of a robotic arm. The objective function maps those variables to a single number that measures quality, such as cost, profit, error, or energy. Constraints are equations or inequalities that restrict the variables, such as a limited budget, physical laws, or non-negativity requirements. A feasible set is the collection of all variable assignments that satisfy the constraints. The goal is to find a feasible point where the objective attains its smallest (or largest) value, called the optimum.
The field is organized primarily by the mathematical properties of the objective and constraints, because those properties determine which solution methods can work. The most fundamental distinction is between continuous and discrete problems. In continuous optimization, the variables can take any real value, and the objective and constraints are typically smooth functions. In discrete (or combinatorial) optimization, the variables come from a finite or countable set, such as integers, permutations, or graph edges. A second major distinction is convexity. A problem is convex if the feasible set is a convex region and the objective is a convex function—roughly, a function whose graph curves upward. Convex problems have a remarkable property: any local optimum is also the global optimum, and there are algorithms that can find it with guarantees. Nonconvex problems, by contrast, can have many local optima that are not globally best, making them fundamentally harder. A third distinction is whether the problem is deterministic or involves uncertainty, which leads to stochastic optimization and robust optimization.
These distinctions are not merely taxonomic; they determine the entire character of the solution approach. For a convex problem, an algorithm can be designed to converge to the global optimum from any starting point, and the number of steps needed can often be bounded in advance. For a nonconvex problem, no such guarantee is generally possible; the best one can hope for is a good local solution, often found by iterative improvement. For a discrete problem, the challenge is often that the number of possible solutions grows exponentially with the problem size, so exhaustive search is impossible; the art lies in exploiting structure to rule out large regions of the search space.
The earliest roots of optimization lie in calculus. Given a smooth function of one or several variables, the classical method of finding extrema is to set the derivative (or gradient) to zero and solve the resulting equations. This approach, developed in the seventeenth and eighteenth centuries, works well for unconstrained problems where the objective is differentiable. The method of Lagrange multipliers, introduced in the eighteenth century, extends this idea to problems with equality constraints: at an optimum, the gradient of the objective must be a linear combination of the gradients of the constraint functions. These tools remain the foundation for much of continuous optimization, and they are still used directly in many applications.
The modern field of optimization, however, emerged in the mid-twentieth century with the development of linear programming. A linear program has a linear objective function and linear constraints, meaning that all terms are proportional to the variables. The feasible set is a polyhedron—a multi-dimensional shape with flat faces—and the optimum, if it exists, occurs at a vertex of that polyhedron. The simplex method, developed by George Dantzig in the 1940s, exploits this geometry by moving from one vertex to an adjacent one, always improving the objective, until no improvement is possible. The simplex method is remarkably effective in practice, and it became one of the first optimization algorithms to be widely used in industry, particularly for military logistics and economic planning.
A second major development was duality theory. Every linear program has a companion problem, called its dual, which provides a bound on the optimal value of the original (primal) problem. Under mild conditions, the optimal values of the primal and dual are equal. This relationship is not merely a mathematical curiosity; it gives deep insight into the structure of the problem, provides certificates of optimality, and forms the basis for sensitivity analysis—understanding how the optimum changes as the data change. Duality also extends to nonlinear and convex problems, where it plays a central role in both theory and algorithms.
When the objective or constraints are nonlinear, the calculus-based approach of setting derivatives to zero still applies locally, but the global picture becomes more complicated. The field of nonlinear optimization developed a rich theory of optimality conditions, most notably the Karush–Kuhn–Tucker (KKT) conditions, which generalize Lagrange multipliers to handle inequality constraints. These conditions characterize when a point is a local optimum, and they form the basis for many algorithms.
The most important subclass of nonlinear problems is convex optimization. A convex problem has the property that any local minimum is global, and the feasible set is connected and "bowl-shaped." This class includes linear programming as a special case, but also encompasses many problems with quadratic objectives, geometric programs, semidefinite programs, and others. The key algorithmic breakthrough for convex problems came in the 1970s and 1980s with the development of interior-point methods. These methods approach the optimum from the interior of the feasible region, following a central path that is guided by a barrier function that penalizes approaching the boundary. Interior-point methods are polynomial-time—their running time grows as a fixed power of the problem size—and they are highly effective in practice. The recognition that a vast array of engineering, finance, and statistics problems can be formulated as convex problems, and then solved reliably with interior-point methods, transformed the field. Convex optimization became a standard tool in control theory, signal processing, machine learning, and many other disciplines.
Nonconvex problems, by contrast, remain fundamentally harder. They arise naturally in many settings, such as training deep neural networks, fitting models with multiple interacting parameters, or designing molecules. The standard approach is local optimization: start from an initial guess and iteratively move downhill (for minimization) using gradient information. The most basic method is gradient descent, which takes steps in the direction of the negative gradient. More sophisticated methods, such as Newton's method and quasi-Newton methods, use second-derivative information to accelerate convergence. These methods are guaranteed to find a local minimum, but not the global one, and their success depends heavily on the starting point. In practice, for many large-scale problems, local methods work surprisingly well, but there is no general theory explaining why. The study of when nonconvex problems can be solved globally, and when local methods suffice, is an active research area.
Discrete optimization deals with problems where the variables are integers, binary choices, or elements of a finite set. The canonical example is the traveling salesman problem: given a set of cities and distances between them, find the shortest route that visits each city exactly once and returns to the start. The number of possible routes grows factorially with the number of cities, so exhaustive search is impossible for all but tiny instances. Yet many discrete problems have structure that can be exploited.
The central concept in discrete optimization is the distinction between problems that are solvable in polynomial time and those that are NP-hard. A problem is polynomial-time solvable if there is an algorithm whose running time grows as a polynomial function of the input size. Many important discrete problems, such as finding the shortest path in a graph or matching workers to jobs, fall into this category. NP-hard problems, by contrast, are believed to require exponential time in the worst case; no efficient algorithm is known, and a vast body of theory suggests that none exists. The traveling salesman problem, scheduling problems, and many facility-location problems are NP-hard.
For NP-hard problems, the field has developed two complementary strategies. The first is exact methods, which are guaranteed to find the optimal solution but may take exponential time in the worst case. The most powerful exact method is branch and bound, which systematically partitions the feasible set into smaller subsets, computes bounds on the best possible objective value in each subset, and prunes subsets that cannot contain the optimum. This approach is often combined with cutting-plane methods, which add new constraints (cuts) that eliminate parts of the feasible region without excluding the optimum. The second strategy is approximation algorithms, which run in polynomial time and produce a solution that is provably within a certain factor of the optimum. For some problems, such as the knapsack problem, arbitrarily good approximations are possible; for others, such as the traveling salesman problem in its general form, no constant-factor approximation is known. A third practical strategy is heuristic search, which includes methods like simulated annealing, genetic algorithms, and tabu search. These methods have no performance guarantees but often find good solutions quickly on real-world instances.
The relationship between continuous and discrete optimization is deeper than it might appear. Many discrete problems can be relaxed to continuous ones by allowing the integer variables to take real values; the solution to the relaxed problem provides a bound on the discrete optimum. Conversely, many continuous problems are solved by discretizing them. The theory of total unimodularity identifies when a linear program with integer data has an integer optimal solution, which means that the continuous relaxation actually solves the discrete problem. This connection is central to network flow problems, where the constraint matrices have special structure.
Real-world optimization problems rarely have perfectly known data. Demand forecasts are uncertain, machine breakdowns are unpredictable, and prices fluctuate. Stochastic optimization treats the uncertain parameters as random variables with known probability distributions. The objective is then to minimize the expected value of the cost, or to optimize some other statistical measure such as the probability of exceeding a threshold. The most common formulation is the two-stage stochastic program, where decisions are made in two phases: first-stage decisions are made before the uncertainty is revealed, and second-stage (recourse) decisions are made after, at a cost that depends on the realized outcome. Solving such problems is computationally demanding because the expectation involves integrating over many scenarios, but decomposition methods that exploit the problem's structure have made large instances tractable.
Robust optimization takes a different stance. Instead of assuming a probability distribution, it assumes that the uncertain parameters lie in a specified uncertainty set, and it seeks a solution that is feasible for all possible realizations in that set. The objective is typically to minimize the worst-case cost. This approach is more conservative than stochastic optimization, but it requires no distributional assumptions and produces solutions that are guaranteed to work under any scenario in the uncertainty set. Robust optimization has become influential in finance, energy systems, and supply chain management, where worst-case guarantees are valued. The two approaches are not mutually exclusive; hybrid models combine probabilistic information with worst-case constraints.
The current practice of mathematical optimization is shaped by three forces: the availability of powerful general-purpose solvers, the growth of data-driven applications, and the increasing scale of problems.
General-purpose solvers are software packages that implement sophisticated algorithms for large classes of optimization problems. Commercial solvers for linear, mixed-integer, and nonlinear programming are widely used in industry, and open-source alternatives have matured considerably. These solvers are the result of decades of research into algorithmic refinements, numerical linear algebra, and preprocessing techniques. A user typically formulates a problem in a modeling language, and the solver automatically chooses an appropriate algorithm, handles numerical issues, and returns a solution with a certificate of optimality or a bound on the gap to optimality. This abstraction has made optimization accessible to practitioners who are not specialists in the underlying algorithms.
The rise of machine learning has created both new applications and new challenges for optimization. Training a neural network is a large-scale, nonconvex optimization problem, typically solved by stochastic gradient descent, which uses a randomly sampled subset of the data at each step. The success of this approach, despite the nonconvexity, is an active area of research. Conversely, many machine-learning problems, such as support vector machines and regularized regression, are convex and can be solved with the full machinery of convex optimization. The interplay between the two fields is bidirectional: optimization provides the algorithms for learning, and the structure of learning problems motivates new optimization research, particularly in large-scale and distributed settings.
Another major trend is the integration of optimization with decision-making under uncertainty and with dynamic systems. Model predictive control, used in process control and autonomous vehicles, solves an optimization problem at each time step to determine the best control action over a finite horizon, then re-solves as new information arrives. Online optimization considers problems where the data arrive sequentially and decisions must be made before all information is available. These settings push optimization beyond the static, one-shot framework that dominated its early history.
The field also continues to develop new theory and algorithms for increasingly complex problem classes. Semidefinite programming, which optimizes over symmetric matrices subject to positive-semidefiniteness constraints, has become a powerful tool for approximating hard combinatorial problems and for analyzing dynamical systems. Mixed-integer nonlinear programming combines the challenges of discreteness and nonlinearity, and modern solvers for this class integrate branch-and-bound with nonlinear programming techniques. The boundaries between subfields are porous: a single application often requires a blend of continuous, discrete, convex, and stochastic methods, and modern research increasingly focuses on such hybrid approaches.
Mathematical optimization is thus not a single method but a family of interrelated theories and algorithms, unified by a common question—how to make the best choice under constraints—and distinguished by the mathematical structure of the problems they address. Its history shows a steady expansion from the calculus of smooth functions to the discrete world of integers and graphs, from deterministic to uncertain data, and from small academic examples to the massive, data-rich problems of modern engineering and science. The field's enduring value lies in its ability to convert a vague notion of "doing better" into a precise, solvable mathematical statement, and to provide the tools for actually solving it.