LP definition with bounds
Let’s start by defining a linear programming problem in standard form with bounds:
where:
- is the constraint matrix.
- is the right-hand side vector.
- is the coefficient vector of the objective function.
- are the lower and upper bounds on the variables.
A feasible solution to this problem is a vector that satisfies all the constraints. A feasible solution is optimal if it minimizes the objective function while satisfying the constraints.
Basis
A basis is a set of indices corresponding to a subset of columns of .
We define as , and we assume that is invertible.
If is full rank, then there exists at least one such basis.
Each column corresponds to a basic variable.
The remaining variables are called non-basic variables, and the corresponding indices belong to the set , where is the matrix formed by the non-basic columns of .
Example
Let and . Then, for the following problem we have:
Following the partition of variables into basic and non-basic, we can follow a similar approach for the vectors , and :
Basic Feasible Solution
Given a basis , we can define a basic feasible solution (BFS) as a solution where the basic variables are determined by solving the system . Usually the non-basic variables are set to their bounds or to , if unbounded. Moreover, for the solution to be optimal, we are interested in the following assignments for the non-basic variables:
| Variable Type | Value in BFS |
|---|---|
| Basic Variables | , |
| Bounded Non-Basic Variables | Set to or |
| Unbounded Non-Basic Variables | Set to |
Revised Simplex Method Overview
The Revised Simplex Method is an efficient algorithm for solving linear programming problems. It operates by iteratively improving a basic feasible solution until an optimal solution is found.
Step 1: Initialization
- Choose an initial basis such that the corresponding basic feasible solution is feasible.
- Compute , where are the coefficients of the basic variables in the objective function.
- Compute the reduced costs for the non-basic variables: .
- We first express the basic variables in terms of the non-basic ones:
- Then, we consider the objective function:
- We define the reduced costs vector as: Altering the reduced costs vector will affect the objective function value, e.g., increasing a non-basic variable with a negative reduced cost will decrease the objective function value, moving us closer to the optimum.
- If for all non-basic variables already at their lower bound and for all non-basic variables already at their upper bound, then the current solution is optimal. Stop.
- If there is a non-basic variable with a reduced cost that violates the optimality condition, select one such variable to enter the basis. This is called the entering variable.
- Compute the direction of movement for the basic variables:
where is the column of corresponding to the entering variable
- Let be the new value we want to assign to the entering variable. To keep the system satisfied, we need to adjust the basic variables as follows: From which we get:
- While we would like to increase (or decrease) indefinitely to improve the objective function, we must ensure that and itself remain within their respective bounds. with the first condition leading to:
- In practice, we only care about the strictest bound that limit the increase (or decrease) of .
- Determine the maximum allowable step size for the entering variable without violating any bounds. If no such limit exists (i.e., the entering variable is unbounded in the direction of improvement), then the problem is unbounded. Stop.
- Identify the leaving variable, with index , which is the basic variable that reaches its bound first as we increase (or decrease) to .
- Update the basis by replacing the leaving variable with the entering variable.
- Note that, based on how we made the change, the leaving variable will now be at its bound (either lower or upper).
- Update the basic feasible solution accordingly: and do the same for the sets and .