Previous Page Contents

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

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

Changes




Do you have questions or comments?


Copyright © SciFace Software GmbH & Co. KG 2000