WOLFRAM

As of Version 13.0, LinearProgramming has been superseded by LinearOptimization.

LinearProgramming[c,m,b]

finds a vector x that minimizes the quantity c.x subject to the constraints m.xb and x0.

LinearProgramming[c,m,{{b1,s1},{b2,s2},}]

finds a vector x that minimizes c.x subject to x0 and linear constraints specified by the matrix m and the pairs {bi,si}. For each row mi of m, the corresponding constraint is mi.xbi if si==1, or mi.x==bi if si==0, or mi.xbi if si==-1.

LinearProgramming[c,m,b,l]

minimizes c.x subject to the constraints specified by m and b and xl.

LinearProgramming[c,m,b,{l1,l2,}]

minimizes c.x subject to the constraints specified by m and b and xili.

LinearProgramming[c,m,b,{{l1,u1},{l2,u2},}]

minimizes c.x subject to the constraints specified by m and b and lixiui.

LinearProgramming[c,m,b,lu,dom]

takes the elements of x to be in the domain dom, either Reals or Integers.

LinearProgramming[c,m,b,lu,{dom1,dom2,}]

takes xi to be in the domain domi.

Details and Options

  • All entries in the vectors c and b and the matrix m must be real numbers.
  • The bounds li and ui must be real numbers or Infinity or -Infinity.
  • None is equivalent to specifying no bounds.
  • LinearProgramming gives exact rational number or integer results if its input consists of exact rational numbers.
  • LinearProgramming returns unevaluated if no solution can be found.
  • LinearProgramming finds approximate numerical results if its input contains approximate numbers. The option Tolerance specifies the tolerance to be used for internal comparisons. The default is Tolerance->Automatic, which does exact comparisons for exact numbers, and uses tolerance for approximate numbers.
  • SparseArray objects can be used in LinearProgramming.
  • With Method->"InteriorPoint", LinearProgramming uses interior point methods.

Examples

open allclose all

Basic Examples  (3)Summary of the most common use cases

Minimize , subject to constraint and implicit non-negative constraints:

Out[1]=1

LinearProgramming has been superseded by LinearOptimization:

Out[2]=2

Solve the problem with equality constraint and implicit non-negative constraints:

Out[1]=1

Use LinearOptimization to solve the problem:

Out[2]=2

Solve the problem with equality constraint and implicit non-negative constraints:

Out[1]=1

Use LinearOptimization to solve the problem:

Out[2]=2

Scope  (6)Survey of the scope of standard use cases

Minimize , subject to constraint and lower bounds , :

Out[1]=1

Minimize , subject to constraint and bounds , :

Out[1]=1

Minimize , subject to constraint and upper bounds , :

Out[1]=1

Minimize , subject to constraint and implicit non-negative constraints:

Out[1]=1

Minimize subject to bounds and only:

Out[1]=1

Solve the same kind of problem, but with both variables integers:

Out[2]=2

Solve the same problem, but with the first variable an integer:

Out[3]=3

Solve larger LPs, in this case 200,000 variables and 10,000 constraints:

Out[1]=1
Out[2]=2

Options  (2)Common values & functionality for each option

Method  (1)

"InteriorPoint" is faster than "Simplex" or "RevisedSimplex", though it only works for machine-precision problems:

Out[1]=1
Out[2]=2

Tolerance  (1)

If an approximated solution is sufficient, a loose Tolerance option makes the solution process faster:

Out[1]=1
Out[2]=2

Properties & Relations  (2)Properties of the function, and connections to other functions

A linear programming problem can also be solved using Minimize:

Out[1]=1
Out[2]=2

NMinimize or FindMinimum can be used to solve inexact linear programming problems:

Out[1]=1
Out[2]=2

Possible Issues  (4)Common pitfalls and unexpected behavior

The integer programming algorithm is limited to the machine-number problems:

Out[1]=1

The "InteriorPoint" method only works for machine numbers:

Out[1]=1

The "InteriorPoint" method may return a solution in the middle of the optimal solution set:

Out[1]=1

The "Simplex" method always returns a solution at a corner of the optimal solution set:

Out[2]=2

In this case the optimal solution set is the set of all points on the line segment between and :

Out[3]=3

The "InteriorPoint" method may not always be able to tell if a problem is infeasible or unbounded:

Out[1]=1

Neat Examples  (1)Surprising or curious use cases

This expresses the KleeMinty problem of dimension n in LinearProgramming syntax:

Because scaling is applied internally, the simplex algorithm converges very quickly:

Out[2]=2
Wolfram Research (1991), LinearProgramming, Wolfram Language function, https://reference.wolfram.com/language/ref/LinearProgramming.html (updated 2007).
Wolfram Research (1991), LinearProgramming, Wolfram Language function, https://reference.wolfram.com/language/ref/LinearProgramming.html (updated 2007).

Text

Wolfram Research (1991), LinearProgramming, Wolfram Language function, https://reference.wolfram.com/language/ref/LinearProgramming.html (updated 2007).

Wolfram Research (1991), LinearProgramming, Wolfram Language function, https://reference.wolfram.com/language/ref/LinearProgramming.html (updated 2007).

CMS

Wolfram Language. 1991. "LinearProgramming." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2007. https://reference.wolfram.com/language/ref/LinearProgramming.html.

Wolfram Language. 1991. "LinearProgramming." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2007. https://reference.wolfram.com/language/ref/LinearProgramming.html.

APA

Wolfram Language. (1991). LinearProgramming. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/LinearProgramming.html

Wolfram Language. (1991). LinearProgramming. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/LinearProgramming.html

BibTeX

@misc{reference.wolfram_2025_linearprogramming, author="Wolfram Research", title="{LinearProgramming}", year="2007", howpublished="\url{https://reference.wolfram.com/language/ref/LinearProgramming.html}", note=[Accessed: 07-July-2025 ]}

@misc{reference.wolfram_2025_linearprogramming, author="Wolfram Research", title="{LinearProgramming}", year="2007", howpublished="\url{https://reference.wolfram.com/language/ref/LinearProgramming.html}", note=[Accessed: 07-July-2025 ]}

BibLaTeX

@online{reference.wolfram_2025_linearprogramming, organization={Wolfram Research}, title={LinearProgramming}, year={2007}, url={https://reference.wolfram.com/language/ref/LinearProgramming.html}, note=[Accessed: 07-July-2025 ]}

@online{reference.wolfram_2025_linearprogramming, organization={Wolfram Research}, title={LinearProgramming}, year={2007}, url={https://reference.wolfram.com/language/ref/LinearProgramming.html}, note=[Accessed: 07-July-2025 ]}