This is a pre-release version (latest).Go to latest (1.18.0)
{ } Raw JSON

bundles / scipy latest / scipy / optimize / _linprog_util / _presolve

function

scipy.optimize._linprog_util:_presolve

source: build-install/usr/lib/python3.14/site-packages/scipy/optimize/_linprog_util.py:477

Signature

def _presolve(lp, rr, rr_method, tol = 1e-09)

Summary

Given inputs for a linear programming problem in preferred format, presolve the problem: identify trivial infeasibilities, redundancies, and unboundedness, tighten bounds where possible, and eliminate fixed variables.

Parameters

lp : A `scipy.optimize._linprog_util._LPProblem` consisting of the following fields:

c

The coefficients of the linear objective function to be minimized.

A_ub

The inequality constraint matrix. Each row of A_ub specifies the coefficients of a linear inequality constraint on x.

b_ub

The inequality constraint vector. Each element represents an upper bound on the corresponding value of A_ub @ x.

A_eq

The equality constraint matrix. Each row of A_eq specifies the coefficients of a linear equality constraint on x.

b_eq

The equality constraint vector. Each element of A_eq @ x must equal the corresponding element of b_eq.

bounds

The bounds of x, as min and max pairs, one for each of the N elements of x. The N x 2 array contains lower bounds in the first column and upper bounds in the 2nd. Unbounded variables have lower bound -np.inf and/or upper bound np.inf.

x0

Guess values of the decision variables, which will be refined by the optimization algorithm. This argument is currently used only by the 'revised simplex' method, and can only be used if x0 represents a basic feasible solution.

rr : bool

If True attempts to eliminate any redundant rows in A_eq. Set False if A_eq is known to be of full row rank, or if you are looking for a potential speedup (at the expense of reliability).

rr_method : str

Method used to identify and remove redundant rows from the equality constraint matrix after presolve.

tol : float

The tolerance which determines when a solution is "close enough" to zero in Phase 1 to be considered a basic feasible solution or close enough to positive to serve as an optimal solution.

Returns

lp : A `scipy.optimize._linprog_util._LPProblem` consisting of the following fields:

c

The coefficients of the linear objective function to be minimized.

A_ub

The inequality constraint matrix. Each row of A_ub specifies the coefficients of a linear inequality constraint on x.

b_ub

The inequality constraint vector. Each element represents an upper bound on the corresponding value of A_ub @ x.

A_eq

The equality constraint matrix. Each row of A_eq specifies the coefficients of a linear equality constraint on x.

b_eq

The equality constraint vector. Each element of A_eq @ x must equal the corresponding element of b_eq.

bounds

The bounds of x, as min and max pairs, possibly tightened.

x0

Guess values of the decision variables, which will be refined by the optimization algorithm. This argument is currently used only by the 'revised simplex' method, and can only be used if x0 represents a basic feasible solution.

c0 : 1D array

Constant term in objective function due to fixed (and eliminated) variables.

x : 1D array

Solution vector (when the solution is trivial and can be determined in presolve)

: revstack: list of functions

the functions in the list reverse the operations of _presolve() the function signature is x_org = f(x_mod), where x_mod is the result of a presolve step and x_org the value at the start of the step (currently, the revstack contains only one function)

: complete: bool

Whether the solution is complete (solved or determined to be infeasible or unbounded in presolve)

status : int

An integer representing the exit status of the optimization

0 : Optimization terminated successfully
1 : Iteration limit reached
2 : Problem appears to be infeasible
3 : Problem appears to be unbounded
4 : Serious numerical difficulties encountered
message : str

A string descriptor of the exit status of the optimization.

Aliases

  • scipy.optimize._linprog._presolve