## `linopt::Transparent::userstep` -- perform a user defined simplex step

#### Introduction

`linopt::Transparent::userstep(`tableau, basvar, nonbasbar`)` performs a user defined simplex step in the `tableau` with the pivot element defined by `basvar` and `nonbasvar`.

#### Call(s)

`linopt::Transparent::userstep(tableau, basvar, nonbasbar)`

#### Parameters

`tableau` | - | a simplex tableau of domain type `linopt::Transparent`
`basvar` | - | a basic variable represented by an identifier that has to leave the basis
`nonbasvar` | - | a non-basic variable represented by an identifier that has to enter the basis

#### Returns

a simplex tableau of domain type `linopt::Transparent`.

#### Related Functions

`linopt::Transparent`, `linopt::Transparent::autostep`, `linopt::Transparent::convert`, `linopt::Transparent::dual_prices`, `linopt::Transparent::phaseI_tableau`, `linopt::Transparent::result`, `linopt::Transparent::simplex`, `linopt::Transparent::suggest`

#### Details

- `linopt::Transparent::userstep` returns the next simplex tableau which is calculated by the user defined simplex step.

#### Example 1

We execute the simplex step given by the pivot element `(slk[1],x)`:

    >> k := [[x + y >= 2], x, NonNegative]:
       t:= linopt::Transparent(k);
       linopt::Transparent::userstep(t, slk[1], x)

                      +-                                   -+
                      |  "linopt", "restr", slk[1],  x,  y  |
                      |                                     |
                      |    "obj",     0,       0,    1,  0  |
                      |                                     |
                      |   slk[1],     -2,      1,   -1, -1  |
                      +-                                   -+

                      +-                                  -+
                      |  "linopt", "restr", slk[1], x,  y  |
                      |                                    |
                      |    "obj",     -2,      1,   0, -1  |
                      |                                    |
                      |      x,       2,      -1,   1,  1  |
                      +-                                  -+

#### Example 2

If we specify a wrong pivot element, we will get an error message:

    >> 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);
       linopt::Transparent::userstep(t, x, y)

            +-                                                       -+
            |  "linopt", "restr", slk[1], slk[2], slk[3],  z,  x,  y  |
            |                                                         |
            |    "obj",     0,       0,      0,      0,    2, -1,  1  |
            |                                                         |
            |   slk[1],     30,      1,      0,      0,   11,  7,  4  |
            |                                                         |
            |   slk[2],     10,      0,      1,      0,   -3,  5, -4  |
            |                                                         |
            |   slk[3],     23,      0,      0,      1,   -3,  3,  4  |
            +-                                                       -+
          Error:  No correct pivot element specified  [linopt::Transpare\
          nt::userstep]

    >> delete k, t:

#### Background

- References:

  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.

#### Changes

- new function
- The linopt library was completely rewritten in MuPAD version 2.0.

Do you have questions or comments?
Copyright © SciFace Software GmbH & Co. KG 2000