Suggest the next step in the simplex algorithm

MuPAD® notebooks will be removed in a future release. Use MATLAB® live scripts instead.

MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.




linopt::Transparent::suggest(tableau) suggests the next step in the simplex algorithm for the given simplex tableau tableau.

Normally this suggestion will be a pivot element, i.e. a sequence of a basic and a non-basic variable. If a phase I of the 2-phase simplex algorithm was started explicitly (see linopt::Transparent::phaseI_tableau) and the current tableau belongs to a feasible solution the suggestion will be the string "linopt::Transparent::phaseII_tableau". At the end of the calculation the 'suggestion' is the identifier OPTIMAL.

The result of linopt::Transparent::suggest can be influenced if the global identifier OPTIMAL has a value. For this reason the identifier OPTIMAL is protected.


Example 1

We have a look at a linear program where the ordinary simplex tableau of the given problem is not the last tableau during the computation of the simplex algorithm. Looking at the ordinary simplex tableau we see that the element of the slk[2]-labeled row and the x-labeled column is a pivot element:

k := [{3*x + 4*y - 3*z <= 23, 5*x - 4*y - 3*z <= 10, 
       7*x + 4*y + 11*z <= 30}, -x + y + 2*z, NonNegative]:
t := linopt::Transparent(k);

delete k, t:

Example 2

Here the ordinary simplex tableau still contains the solution of the linear program if the linear objective function is to minimize (see linopt::Transparent for more information):

k := [{x+y>=-1, x+y<=3}, x+2*y, NonNegative]:   
t := linopt::Transparent(k);                      

delete k, t:

Example 3

Here we explicitly start the first phase of the simplex algorithm. If we want a solution of the original linear program we have to apply the second phase of the simplex algorithm:

k := [{3*x + 4*y - 3*z <= 23, 5*x -4*y -3*z <= 10,
       7*x + 4*y + 11*z <= 30}, -x + y + 2*z, NonNegative]:
t := linopt::Transparent(k):
t := linopt::Transparent::phaseI_tableau(t):
t := linopt::Transparent::simplex(t):

delete k, t:



A simplex tableau of domain type linopt::Transparent

Return Values

Sequence of 2 identifiers, the identifier OPTIMAL or the string "linopt::Transparent::phaseII_tableau".


Papadimitriou, Christos H; Steiglitz, Kenneth: Combinatorial Optimization; Algorithms and Complexity. Prentice-Hall, 1982.

Nemhauser, George L; Wolsey, Laurence A: Integer and Combinatorial Optimization. New York, Wiley, 1988.

Salkin, Harvey M; Mathur, Kamlesh: Foundations of Integer Programming. North-Holland, 1989.

Neumann, Klaus; Morlock, Martin: Operations-Research. Munich, Hanser, 1993.

Duerr, Walter; Kleibohm, Klaus: Operations Research; Lineare Modelle und ihre Anwendungen. Munich, Hanser, 1992.

Suhl, Uwe H: MOPS - Mathematical OPtimization System. European Journal of Operational Research 72(1994)312-322. North-Holland, 1994.

Suhl, Uwe H; Szymanski, Ralf: Supernode Processing of Mixed Integer Models. Boston, Kluwer Academic Publishers, 1994.