Optimization is a branch of math that aims to find the optimal value of a function (maximum or minimum) given a set of constraints. Linear programming was born in the 40’s when American mathematician George Dantzig began to use mathematical techniques to generate “programs” (workout timetables and schedules) for the Army.

Since then, linear-programming techniques and methods later derived from it are used in a wide variety of problems such as production planning in factories or scheduling of airlines. Nowadays, optimization is applied in order to improve processes and help decision making in practically all industries.

In general, there are typically two kinds of elements in a linear programming problem: resources, which are finite and limited (i.e. the capacity of a production plant, workforce, farm land, etc.); and activities (decisions), which consume or add resources. Some examples of the second group are: increasing the plant’s production capacity, allowing working extra shifts or rent an additional piece of land.

The core of the problem is to determine which decisions maximize (increase the profit) or minimize (total costs), the objective function proposed by the person in charge of the decisions, always satisficing the given constraints.