Linear-fractional programming

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

In mathematical optimization, linear-fractional programming (LFP) is a generalization of linear programming (LP). Whereas the objective function in a linear program is a linear function, the objective function in a linear-fractional program is a ratio of two linear functions. A linear program can be regarded as a special case of a linear-fractional program in which the denominator is the constant function 1.

Formally, a linear-fractional program is defined as the problem of maximizing (or minimizing) a ratio of affine functions over a polyhedron,

maximize𝐜T𝐱+α𝐝T𝐱+βsubject toA𝐱𝐛,

where 𝐱n represents the vector of variables to be determined, 𝐜,𝐝n and 𝐛m are vectors of (known) coefficients, Am×n is a (known) matrix of coefficients and α,β are constants. The constraints have to restrict the feasible region to {𝐱|𝐝T𝐱+β>0}, i.e. the region on which the denominator is positive.[1][2] Alternatively, the denominator of the objective function has to be strictly negative in the entire feasible region.

Motivation by comparison to linear programming

[edit | edit source]

Both linear programming and linear-fractional programming represent optimization problems using linear equations and linear inequalities, which for each problem-instance define a feasible set. Fractional linear programs have a richer set of objective functions. Informally, linear programming computes a policy delivering the best outcome, such as maximum profit or lowest cost. In contrast, a linear-fractional programming is used to achieve the highest ratio of outcome to cost, the ratio representing the highest efficiency. For example, in the context of LP we maximize the objective function profit = income − cost and might obtain maximum profit of $100 (= $1100 of income − $1000 of cost). Thus, in LP we have an efficiency of $100/$1000 = 0.1. Using LFP we might obtain an efficiency of $10/$50 = 0.2 with a profit of only $10, but only requiring $50 of investment.

Transformation to a linear program

[edit | edit source]

Any linear-fractional program can be transformed into a linear program, assuming that the feasible region is non-empty and bounded, using the Charnes–Cooper transformation.[1] The main idea is to introduce a new non-negative variable t to the program which will be used to rescale the constants involved in the program (α,β,𝐛). This allows us to require that the denominator of the objective function (𝐝T𝐱+β) equals 1. (To understand the transformation, it is instructive to consider the simpler special case with α=β=0.)

Formally, the linear program obtained via the Charnes–Cooper transformation uses the transformed variables 𝐲n and t0:

maximize𝐜T𝐲+αtsubject toA𝐲𝐛t𝐝T𝐲+βt=1t0.

A solution 𝐱 to the original linear-fractional program can be translated to a solution of the transformed linear program via the equalities

𝐲=1𝐝T𝐱+β𝐱andt=1𝐝T𝐱+β.

Conversely, a solution for 𝐲 and t of the transformed linear program can be translated to a solution of the original linear-fractional program via

𝐱=1t𝐲.

Duality

[edit | edit source]

Let the dual variables associated with the constraints A𝐲𝐛t𝟎 and 𝐝T𝐲+βt1=0 be denoted by 𝐮 and λ, respectively. Then the dual of the LFP above is [3][4]

minimizeλsubject toAT𝐮+λ𝐝=𝐜𝐛T𝐮+λβα𝐮+m,λ,

which is an LP and which coincides with the dual of the equivalent linear program resulting from the Charnes–Cooper transformation.

Properties and algorithms

[edit | edit source]

The objective function in a linear-fractional problem is both quasiconcave and quasiconvex (hence quasilinear) with a monotone property, pseudoconvexity, which is a stronger property than quasiconvexity. A linear-fractional objective function is both pseudoconvex and pseudoconcave, hence pseudolinear. Since an LFP can be transformed to an LP, it can be solved using any LP solution method, such as the simplex algorithm (of George B. Dantzig),[5][6][7][8] the criss-cross algorithm,[9] or interior-point methods.

Notes

[edit | edit source]
  1. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  5. ^ Chapter five: Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  8. ^ Murty (1983, Chapter 3.20 (pp. 160–164) and pp. 168 and 179)
  9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).

Sources

[edit | edit source]
  • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).

Further reading

[edit | edit source]
  • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  • Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).