Simplex method solver

This webpage essentially just solves a specified linear programme using the simplex method and shows full working. The problem can either be provided in canonical matrix form (with slack variables), or non-matrix form.

Matrix form

Canonical matrix form is:
The various matrices can be entered in using MATLAB notation. In the case of \(A\), semicolons are used to separate rows and commas or spaces to separate individual row elements. \(\mathbf{b}\), \(\mathbf{c}\), \(\mathbf{x}\) and \(x_{\mathbf{B}}\) can have individual elements separated by commas, semicolons or spaces.

Non-matrix form

Problems can also be entered in the more usual format in the final textbox in this webpage. If you wish to do so, you must check the circle next to "Use non-matrix format?" before pressing "Click to solve problem". If you are solving a dual problem, want this fact mentioned in the article body, and you want different dual variable names to be used, click the "Solving a dual?" button.

In the textbox, >= or ≥ is used to denote "greater than or equal to", <= or ≤ to denote "less than or equal to" and = to denote equal to.

"Maximize", "Maximise" or "Max" (case-insensitive) can be used to indicate the problem is a maximization problem, whilst "Minimize", "Minimise" or "Min" (case-insensitive) can be used to indicate it is a minimization problem.

Non-negativity constraints are assumed (and do not need to be specified).

You can include the phrase "Subject to" or "st." (with or without a colon) on a new line before specifying your structural constraints, but you do not need to.

Commas and dots cannot be used to as thousands delimiters. A dot is used to indicate the decimal place.

Fraction coefficients must appear before the variable that they pertain to. For example:
                5/6x1
            
is OK, as is 5/6 x1, but:
                5x1/6
            
will not be read correctly.

All decision variables must appear in the objective function, even if they are just multiplied by 0. In constraints, not all decision variables need to appear.

Sensitivity analysis

For this webpage, sensitivity analysis always uses the input within the matrix section of the form. It assumes the objective function is called "z" and that the aim is to maximize it, so if your initial problem was a minimization problem you should multiply any result it provides by -1 to return your answer to its proper sign.

Add constraint(s)

To add new constraint(s) to the problem after first solving it, you must replace the entry for \(A\) with the new row(s) for \(A\) corresponding to these new constraint(s). You must also replace \(\mathbf{b}\) with the new entry(s) to be added to the problem. Then finally click the circle next to "Add constraint(s)?" and click the "Click to solve problem" button.

Add variable(s)

To add new variable(s) to the problem after the original problem has been solved, just replace \(A\), \(\mathbf{b}\), \(\mathbf{c}\) and \(\mathbf{x}\) with what is to be added to them, then click the circle next to "New variable(s)?" and press "Click to solve problem" button.

Change constraint coefficient(s)

To change the constraint coefficient(s) after the solver has solved the original problem, just change the relevant entries in \(\mathbf{A}\) (remembering that sensitivity analysis can only be performed for coefficients of non-basic variables), then click the circle next to "Constraint LHS change?" and click the "Click to solve problem" button.

Change objective function coefficient(s)

To change objective function coefficient(s) after the solver has solved the original problem, just change the relevant entries in \(\mathbf{c}\), click the circle to the left of "Change objective function coefficient(s)?" and click the "Click to solve problem" button.

Resource change

To change resource value(s) (\(\mathbf{b}\) values) after the solver has solved the original problem, merely change the relevant entries in \(\mathbf{b}\), click the circle next to "Resource change?" and click the "Click to solve problem" button.

Default example

This webpage uses the following default example:
to illustrate how problems should be entered into both forms.
Canonical matrix form
Input Contents
\(A\)
\(\mathbf{b}\)
\(\mathbf{c}\)
\(\mathbf{x}\)
\(x_\mathbf{B}\)
Sensitivity analysis:
Change objective function coefficient(s)? Add constraint(s)? (New non-zero c entries?) Resource change? Constraint LHS change? New variable(s)?
Non-matrix form
Use non-matrix format? Solving a dual?