Lagrangian relaxation

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

In the field of mathematical optimization, Lagrangian relaxation is a relaxation method which approximates a difficult problem of constrained optimization by a simpler problem. A solution to the relaxed problem is an approximate solution to the original problem, and provides useful information.

The method penalizes violations of inequality constraints using a Lagrange multiplier, which imposes a cost on violations. These added costs are used instead of the strict inequality constraints in the optimization. In practice, this relaxed problem can often be solved more easily than the original problem.

The problem of maximizing the Lagrangian function of the dual variables (the Lagrangian multipliers) is the Lagrangian dual problem.

Mathematical description

Given a linear programming problem x\in \mathbb{R}^n and A\in \mathbb{R}^{m,n} of the following form:

max c^T x
s.t.
Ax \le b

If we split the constraints in A such that A_1\in \mathbb{R}^{m_1,n}, A_2\in \mathbb{R}^{m_2,n} and m_1+m_2=m we may write the system:

max c^T x
s.t.
(1) A_1 x \le b_1
(2) A_2 x \le b_2

We may introduce the constraint (2) into the objective:

max c^T x+\lambda^T(b_2-A_2x)
s.t.
(1) A_1 x \le b_1

If we let \lambda=(\lambda_1,\ldots,\lambda_{m_2}) be nonnegative weights, we get penalized if we violate the constraint (2), and we are also rewarded if we satisfy the constraint strictly. The above system is called the Lagrangian Relaxation of our original problem.

The LR solution as a bound

Of particular use is the property that for any fixed set of \tilde{\lambda} values, the optimal result to the Lagrangian Relaxation problem will be no smaller than the optimal result to the original problem. To see this, let \hat{x} be the optimal solution to the original problem, and let \bar{x} be the optimal solution to the Lagrangian Relaxation. We can then see that

c^T \hat{x} \leq c^T  \hat{x} +\tilde{\lambda}^T(b_2-A_2 \hat{x} ) \leq c^T  \bar{x} +\tilde{\lambda}^T(b_2-A_2 \bar{x} )

The first inequality is true because \hat{x} is feasible in the original problem and the second inequality is true because \bar{x} is the optimal solution to the Lagrangian Relaxation.

Iterating towards a solution of the original problem

The above inequality tells us that if we minimize the maximum value we obtain from the relaxed problem, we obtain a tighter limit on the objective value of our original problem. Thus we can address the original problem by instead exploring the partially dualized problem

min P(\lambda) s.t. \lambda \geq 0

where we define P(\lambda) as

max c^T x+\lambda^T(b_2-A_2x)
s.t.
(1) A_1 x \le b_1

A Lagrangian Relaxation algorithm thus proceeds to explore the range of feasible \lambda values while seeking to minimize the result returned by the inner P problem. Each value returned by P is a candidate upper bound to the problem, the smallest of which is kept as the best upper bound. If we additionally employ a heuristic, probably seeded by the \bar{x} values returned by P, to find feasible solutions to the original problem, then we can iterate until the best upper bound and the cost of the best feasible solution converge to a desired tolerance.

Related methods

The Augmented Lagrangian method is quite similar in spirit to the Lagrangian relaxation method, but adds an extra term, and updates the dual parameters \lambda in a more principled manner. It was introduced in the 1970s and has been used extensively.

The Penalty method doesn't use dual variables but rather removes the constraints and instead penalizes deviations from the constraint. The method is conceptually simple but usually Augmented Lagrangian methods are preferred in practice since the penalty method suffers from ill-conditioning issues.

References

Books

  • Lua error in package.lua at line 80: module 'strict' not found.
  • Bertsekas, Dimitri P. (1999). Nonlinear Programming: 2nd Edition. Athena Scientific. ISBN 1-886529-00-0.
  • Lua error in package.lua at line 80: module 'strict' not found.
  • Lua error in package.lua at line 80: module 'strict' not found.
  • Lua error in package.lua at line 80: module 'strict' not found.
  • Lua error in package.lua at line 80: module 'strict' not found.
  • Lua error in package.lua at line 80: module 'strict' not found.
  • Lua error in package.lua at line 80: module 'strict' not found.

Articles

  • Lua error in package.lua at line 80: module 'strict' not found.
  • Lua error in package.lua at line 80: module 'strict' not found.