Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Column generation

From Wikipedia, the free encyclopedia
(Redirected fromDelayed column generation)
Algorithm for solving linear programs
icon
This articledoes notcite anysources. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged andremoved.
Find sources: "Column generation" – news ·newspapers ·books ·scholar ·JSTOR
(May 2024) (Learn how and when to remove this message)
icon
You can helpexpand this article with text translated fromthe corresponding article in French. (February 2026)Click [show] for important translation instructions.
  • Machine translation, likeDeepL orGoogle Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting machine-translated text into the English Wikipedia.
  • Consideradding a topic to this template: there are already 1,347 articles in themain category, and specifying|topic= will aid in categorization.
  • Do not translate text that appears unreliable or low-quality. If possible, verify the text with references provided in the foreign-language article.
  • Youmust providecopyright attribution in theedit summary accompanying your translation by providing aninterlanguage link to the source of your translation. A model attribution edit summary isContent in this edit is translated from the existing French Wikipedia article at [[:fr:Génération de colonnes]]; see its history for attribution.
  • You may also add the template{{Translated|fr|Génération de colonnes}} to thetalk page.
  • For more guidance, seeWikipedia:Translation.

Column generation ordelayed column generation is an efficient algorithm for solving largelinear programs.

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 theobjective function 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 theoptimal 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 thecutting stock problem. One particular technique in linear programming which uses this kind of approach is theDantzig–Wolfe decomposition algorithm. Additionally, column generation has been applied to many problems such ascrew scheduling,vehicle routing, and thecapacitated p-median problem.

Algorithm

[edit]

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 theobjective function of the master problem).

The algorithm then proceeds as follow:

  1. Initialise the master problem and the subproblem
  2. Solve the master problem
  3. Search for an improving variable with the subproblem
  4. If an improving variable is found: add it to the master problem then go to step 2
  5. Else: The solution of the master problem is optimal. Stop.

Finding an improving variable

[edit]

The most difficult part of this procedure is how to find a variable that can improve theobjective function of the master problem. This can be done by finding the variable with the most negativereduced cost (assumingwithout loss of generality 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 dedicatedcombinatorial algorithm.

We now detail how and why to compute the reduced cost of the variables. Consider the following linear program in standard form:

minxcTxsubject toAx=bxR+{\displaystyle {\begin{aligned}&\min _{x}c^{T}x\\&{\text{subject to}}\\&Ax=b\\&x\in \mathbb {R} ^{+}\end{aligned}}}

which we will call theprimal problem as well as itsdual linear program:

maxuuTbsubject touTAcuR{\displaystyle {\begin{aligned}&\max _{u}u^{T}b\\&{\text{subject to}}\\&u^{T}A\leq c\\&u\in \mathbb {R} \end{aligned}}}

Moreover, letx{\displaystyle x^{*}} andu{\displaystyle 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, byduality, have the same value of objective function (cTx=uTb{\displaystyle c^{T}x^{*}=u^{*T}b}) which we will callz{\displaystyle z^{*}}. This optimal value is a function of the different coefficients of the primal problem:z=z(c,A,b){\displaystyle z^{*}=z^{*}(c,A,b)}. Note that there exists a dual variableui{\displaystyle u_{i}^{*}} for each constraint of the primal linear model. It is possible to show that an optimal dual variableui{\displaystyle u_{i}^{*}} can be interpreted as the partial derivative of the optimal valuez{\displaystyle z^{*}} of the objective function with respect to the coefficientbi{\displaystyle b_{i}} of the right-hand side of the constraints:ui=zbi{\displaystyle u_{i}^{*}={\frac {\partial z^{*}}{\partial b_{i}}}} or otherwiseu=zb{\displaystyle u^{*}={\frac {\partial z^{*}}{\partial b}}}. More simply put,ui{\displaystyle u_{i}^{*}} indicates by how much increases locally the optimal value of the objective function when the coefficientbi{\displaystyle b_{i}} increases by one unit.

Consider now that a variabley{\displaystyle y} was not considered until then in the primal problem. Note that this is equivalent to saying that the variabley{\displaystyle 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 ofy{\displaystyle y} from0{\displaystyle 0} toy^{\displaystyle {\hat {y}}}. Ifcy{\displaystyle c_{y}} andAy{\displaystyle A_{y}} are respectively the coefficients associated with the variabley{\displaystyle y} in the objective function and in the constraints then the linear program is modified as follows:

minxcTx+cyy^subject toAx=bAyy^xR+{\displaystyle {\begin{aligned}&\min _{x}c^{T}x+c_{y}{\hat {y}}\\&{\text{subject to}}\\&Ax=b-A_{y}{\hat {y}}\\&x\in \mathbb {R} ^{+}\end{aligned}}}

In order to know if it is interesting to add the variabley{\displaystyle y} to the problem (i.e to let it take a non-zero value), we want to know if the valuezy^{\displaystyle z_{\hat {y}}^{*}} of the objective function of this new problem decreases as the valuey^{\displaystyle {\hat {y}}} of the variabley{\displaystyle y} increases. In other words, we want to knowzy^y^{\displaystyle {\frac {\partial z_{\hat {y}}^{*}}{\partial {\hat {y}}}}}. To do this, note thatzy^{\displaystyle z_{\hat {y}}^{*}} can be expressed according to the value of the objective function of the initial primal problem:zy^=cyy^+z(c,A,bAyy^){\displaystyle z_{\hat {y}}^{*}=c_{y}{\hat {y}}+z^{*}(c,A,b-A_{y}{\hat {y}})}. We can then compute the derivative that interests us:

zy^y^ = cy+zy^ = cy+zcdcdy^+zAdAdy^+zbdbdy^ = cy+zbdbdy^ = cy+u(Ay) = cyuAy{\displaystyle {\begin{aligned}{\frac {\partial z_{\hat {y}}^{*}}{\partial {\hat {y}}}}&~=~&&c_{y}+{\frac {\partial z^{*}}{\partial {\hat {y}}}}\\&~=~&&c_{y}+{\frac {\partial z^{*}}{\partial c}}{\frac {dc}{d{\hat {y}}}}+{\frac {\partial z^{*}}{\partial A}}{\frac {dA}{d{\hat {y}}}}+{\frac {\partial z^{*}}{\partial b}}{\frac {db}{d{\hat {y}}}}\\&~=~&&c_{y}+{\frac {\partial z^{*}}{\partial b}}{\frac {db}{d{\hat {y}}}}\\&~=~&&c_{y}+u^{*}(-A_{y})\\&~=~&&c_{y}-u^{*}A_{y}\end{aligned}}}

In other words, the impact of changing the valuey^{\displaystyle {\hat {y}}} on the valuezy^{\displaystyle z_{\hat {y}}^{*}} 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 variablesx{\displaystyle x^{*}} whose magnitude is measured using the dual variablesu{\displaystyle u^{*}}. The derivativezy^y^{\displaystyle {\frac {\partial z_{\hat {y}}^{*}}{\partial {\hat {y}}}}} is generally called thereduced cost of the variabley{\displaystyle y} and will be denoted bycry{\displaystyle cr_{y}} in the following.

References

[edit]
Functions
Gradients
Convergence
Quasi–Newton
Other methods
Hessians
Graph of a strictly concave quadratic function with unique maximum.
Optimization computes maxima and minima.
General
Differentiable
Convex
minimization
Linear and
quadratic
Interior point
Basis-exchange
Paradigms
Graph
algorithms
Minimum
spanning tree
Shortest path
Network flows


Stub icon

Thisapplied mathematics–related article is astub. You can help Wikipedia byadding missing information.

Retrieved from "https://en.wikipedia.org/w/index.php?title=Column_generation&oldid=1337043566"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp