HOME

TheInfoList



OR:

Column generation or delayed column generation is an efficient algorithm for solving large
linear programs Linear programming (LP), also called linear optimization, is a method to achieve the best outcome (such as maximum profit or lowest cost) in a mathematical model whose requirements are represented by linear relationships. Linear programming is ...
. The overarching idea is that many linear programs are too large to consider all the variables explicitly. The idea is thus to start by solving the considered program with only a subset of its variables. Then iteratively, variables that have the potential to improve the
objective function In mathematical optimization and decision theory, a loss function or cost function (sometimes also called an error function) is a function that maps an event or values of one or more variables onto a real number intuitively representing some "cost ...
are added to the program. Once it is possible to demonstrate that adding new variables would no longer improve the value of the objective function, the procedure stops. The hope when applying a column generation algorithm is that only a very small fraction of the variables will be generated. This hope is supported by the fact that in the optimal solution, most variables will be non-basic and assume a value of zero, so the optimal solution can be found without them. In many cases, this method allows to solve large linear programs that would otherwise be intractable. The classical example of a problem where it is successfully used is the
cutting stock problem In operations research, the cutting-stock problem is the problem of cutting standard-sized pieces of stock material, such as paper rolls or sheet metal, into pieces of specified sizes while minimizing material wasted. It is an optimization problem ...
. One particular technique in linear programming which uses this kind of approach is the
Dantzig–Wolfe decomposition Dantzig–Wolfe decomposition is an algorithm for solving linear programming problems with special structure. It was originally developed by George Dantzig and Philip Wolfe and initially published in 1960. Many texts on linear programming have s ...
algorithm. Additionally, column generation has been applied to many problems such as
crew scheduling Crew scheduling is the process of assigning crews to operate transportation systems, such as rail lines or airlines. Complex Most transportation systems use software to manage the crew scheduling process. Crew scheduling becomes more and more c ...
,
vehicle routing The vehicle routing problem (VRP) is a combinatorial optimization and integer programming problem which asks "What is the optimal set of routes for a fleet of vehicles to traverse in order to deliver to a given set of customers?" It generalises t ...
, and the capacitated p-median problem.


Algorithm

The algorithm considers two problems: the master problem and the subproblem. The master problem is the original problem with only a subset of variables being considered. The subproblem is a new problem created to identify an improving variable (''i.e.'' which can improve the
objective function In mathematical optimization and decision theory, a loss function or cost function (sometimes also called an error function) is a function that maps an event or values of one or more variables onto a real number intuitively representing some "cost ...
of the master problem). The algorithm then proceeds as follow: # Initialise the master problem and the subproblem # Solve the master problem # Search for an improving variable with the subproblem # If an improving variable is found: add it to the master problem then go to step 2 # Else: The solution of the master problem is optimal. Stop.


Finding an improving variable

The most difficult part of this procedure is how to find a variable that can improve the
objective function In mathematical optimization and decision theory, a loss function or cost function (sometimes also called an error function) is a function that maps an event or values of one or more variables onto a real number intuitively representing some "cost ...
of the master problem. This can be done by finding the variable with the most negative
reduced cost In linear programming, reduced cost, or opportunity cost, is the amount by which an objective function coefficient would have to improve (so increase for maximization problem, decrease for minimization problem) before it would be possible for a c ...
(assuming
without loss of generality ''Without loss of generality'' (often abbreviated to WOLOG, WLOG or w.l.o.g.; less commonly stated as ''without any loss of generality'' or ''with no loss of generality'') is a frequently used expression in mathematics. The term is used to indicat ...
that the problem is a minimization problem). If no variable has a negative reduced cost, then the current solution of the master problem is optimal. When the number of variables is very large, it is not possible to find an improving variable by calculating all the reduced cost and choosing a variable with a negative reduced cost. Thus, the idea is to compute only the variable having the minimum reduced cost. This can be done using an optimization problem called the pricing subproblem which strongly depends on the structure of the original problem. The objective function of the subproblem is the reduced cost of the searched variable with respect to the current dual variables, and the constraints require that the variable obeys the naturally occurring constraints. The column generation method is particularly efficient when this structure makes it possible to solve the sub-problem with an efficient algorithm, typically a dedicated combinatorial algorithm. We now detail how and why to compute the reduced cost of the variables. Consider the following linear program in standard form: : \begin &\min_ c^T x \\ &\text \\ & A x = b \\ & x \in \mathbb^+ \end which we will call the primal problem as well as its
dual linear program The dual of a given linear program (LP) is another LP that is derived from the original (the primal) LP in the following schematic way: * Each variable in the primal LP becomes a constraint in the dual LP; * Each constraint in the primal LP becomes ...
: : \begin &\max_ u^T b \\ &\text \\ & u^T A \leq c \\ & u \in \mathbb \end Moreover, let x^* and u^* be optimal solutions for these two problems which can be provided by any linear solver. These solutions verify the constraints of their linear program and, by duality, have the same value of objective function (c^T x^* = u^ b) which we will call z^* . This optimal value is a function of the different coefficients of the primal problem: z^* = z^* (c, A, b) . Note that there exists a dual variable u_i^* for each constraint of the primal linear model. It is possible to show that an optimal dual variable u_i^* can be interpreted as the partial derivative of the optimal value z^* of the objective function with respect to the coefficient b_i of the right-hand side of the constraints:u_i^* = \frac ou encore u^* = \frac. More simply put, u_i^* indicates by how much increases locally the optimal value of the objective function when the coefficient b_i increases by one unit. Consider now that a variable y was not considered until then in the primal problem. Note that this is equivalent to saying that the variable y was present in the model but took a zero value. We will now observe the impact on the primal problem of changing the value of y from 0 to \hat . If c_y and A_y are respectively the coefficients associated with the variable y in the objective function and in the constraints then the linear program is modified as follows: : \begin &\min_ c^T x + c_y \hat \\ &\text \\ & A x = b - A_y \hat\\ & x \in \mathbb^+ \end In order to know if it is interesting to add the variable y to the problem (''i.e'' to let it take a non-zero value), we want to know if the value z_^* of the objective function of this new problem decreases as the value \hat of the variable y increases. In other words, we want to know \frac. To do this, note that z_^* can be expressed according to the value of the objective function of the initial primal problem: z_^* = c_y \hat + z^*(c, A, b-A_y \hat). We can then compute the derivative that interests us: : \begin \frac & ~=~ & & \frac + \frac \\ & ~=~ & & c_y + \frac \frac + \frac \frac + \frac \frac \\ & ~=~ & & c_y + \frac \frac \\ & ~=~ & & c_y + u^* (-A_y) \\ & ~=~ & & c_y - u^* A_y \end In other words, the impact of changing the value \hat on the value z _ ^* translates into two terms. First, this change directly impacts the objective function and second, the right-hand side of the constraints is modified which has an impact on the optimal variables x^* whose magnitude is measured using the dual variables u^* . The derivative \frac is generally called the
reduced cost In linear programming, reduced cost, or opportunity cost, is the amount by which an objective function coefficient would have to improve (so increase for maximization problem, decrease for minimization problem) before it would be possible for a c ...
of the variable y and will be denoted by cr_y in the following. Optimization algorithms and methods {{mathapplied-stub