Access to Index Control Variables

  • EKKNGET - Request Current Values of Index Control Variables
  • Table of Index Control Variables
  • Appendix C. Control Variables
  • Index to Modules
  • Bottom of page

  • EKKNGET - Request Current Start Indices of Information Stored in dspace

    This subroutine provides you with the location of various arrays used to store data within dspace. See "OSL Terms and Concepts" for additional information on dspace.

    Syntax

    FORTRAN  CALL EKKNGET(rtcod,dspace,narray,num
    C  ekknget(&rtcod,dspace,narray,num); 
    On Entry
    dspace
    is the user-provided work area.

    Specified as: a one-dimensional real array of doublewords.
    num
    is the number of control variables to be retrieved.

    Specified as: a fullword integer.
    The value of num must be positive and not greater than the length of the array narray.
    On Return
    rtcod
    is the return code for the subroutine, where:

    If rtcod = 0, the subroutine completed successfully. Only informational messages were issued.
    If rtcod is nonzero, then the value returned is the return code associated with the first occurrence of the highest severity message.
    See "Return Codes" for an explanation of return codes.

    Returned as: a fullword integer.

    dspace
    is the user-provided work area.

    Returned as: a one-dimensional real array of doublewords.
    narray
    is an array of FORTRAN indices for the starts of various arrays in dspace. The nth entry of narray is the nth index control variable, documented in table 17 below.

    Returned as: a one-dimensional integer array of fullwords.

    Notes

    1. The number of control variables returned is the minimum of the number requested, num, and the number available.
    2. If on return, an entry in narray is zero, it means that the corresponding array was not available when EKKNGET was called. E.g., the "row auxilary solve information" array is dynamically allocated, and if this array is nonexistent at a time when EKKNGET is called, then the value returned for the 29th entry in narray will be zero.
    3. If the data array associated with a particular entry of narray is an integer array, then EKKNGET will return a Fortran index into mspace in that entry. Otherwise, EKKNGET will return a Fortran index into dspace. mspace is a user defined fullword integer array that has the same starting location as, and is equivalent to dspace, the floating point workspace. See "Storage Allocation" for more information.
    4. Control variables 17 through 22 are created only if you make a call to EKKCOPY. Otherwise, these control variables remain set to zero.
    5. Control variables Nrowstat and Ncolstat give the locations (in mspace) of the row and column status vectors respectively. These status vectors are one-dimensional integer arrays of fullwords. The numbering of the bits in these vectors follows the bit numbering conventions for VS FORTRAN. All 32 bits are used internally, but only three of them are important to the user:
    6. If one of these bit settings is invalid (for example, if the up bit is set, but the column (variable) is at or above its upper bound), the setting will be ignored.

      In practice this translates into the following.

       
      Note: Superbasic variables (that is, variables that are neither basic, nor at bound) are also allowed, although normally library routines set the bits using the primal solution values.

      You may set up a basis using this information and then call EKKSSLV with init set to a value other than 3.

      When init is set to 3, only the basic bits have meaning. The primal values and bounds bits will be used for other things.

    7. The index control variable Nintinfo is an index to information about each integer variable. For each integer variable there are four fields. For example, information for the sixth integer variable would start at mspace ( Nintinfo + ( 5 * 4 )).
    8. The fields for each integer variable are organized as follows:

    9. The scaling region contains scale factors that are applied to each matrix element, a ij, as follows: scaled a ij = (original a ij * rowscale i ) / colscale j .
    10. Indices Nrowaux and Ncolaux give the location of the auxiliary solve information regions. These regions are only set up if:
      1. Your model is infeasible or unbounded.
      2. EKKSSLV has been stopped at your request and a perturbation is in effect. (Note that this could occur if EKKSSLV was called implicitly during EKKMSLV or EKKBSLV processing. The primal cases are also applicable to EKKNSLV.)
      3. EKKQSLV has encountered indefiniteness in the quadratic matrix Q.
    11. If EKKNGET is called from a program written in C, the indices returned by this routine have to be adjusted by 1 when used to index C arrays. This is because in C the first element of dspace is referred to as dspace[0], while in FORTRAN the first element of dspace is referred to as dspace(1). For more information, see "Sample C Program EXNAME".

    Examples

    Refer to the following sample programs for examples of using EKKNGET:  
     
    [ Top of Page | EKKNGET | Appendix C. Control Variables | Index to Modules ]

    Table 17. Index control variables
     
    sequence
    number
    Variable Name  Description 
     Nrowlower  The Fortran index into  dspace  for the first element of row lower bounds. 
     Nrowacts  The Fortran index into  dspace  for the first element of row activities. 
     Nrowupper  The Fortran index into  dspace  for the first element of row upper bounds. 
     Nrowduals  The Fortran index into  dspace  for the first element of row slacks. 
     Nrowstat  The Fortran index into  mspace  for the first element of the row status vector. 
     Ncollower  The Fortran index into  dspace  for the first element of column lower bounds. 
     Ncolsol  The Fortran index into  dspace  for the first element of the solution (column activities). 
     Ncolupper  The Fortran index into  dspace  for the first element of column upper bounds. 
     Ncolrcosts  The Fortran index into  dspace  for the first element of reduced costs. 
    10   Ncolstat  The Fortran index into  mspace  for the first element of the column status vector. 
    11   Nobjective  The Fortran index into  dspace  for the first element of column costs (objective function coefficients). 
    12   Nrownames  The Fortran index into  dspace  for the first element of row names. 
    13   Ncolnames  The Fortran index into  dspace  for the first element of column names. 
    14   Nrowscales  The Fortran index into  dspace  for the first element of row scale factors. 
    15   Ncolscales  The Fortran index into  dspace  for the first element of column scale factors. 
    16   Npresolve  The Fortran index into  mspace  for the first element of the presolve region. 
    17   Nrowcc  The Fortran index into  mspace  for the first element of rows for matrix (column copy). 
    18   Ncolrc  The Fortran index into  mspace  for the first element of columns for matrix (row copy). 
    19   Nelemcc  The Fortran index into  dspace  for the first element of elements for matrix (column copy). 
    20   Nelemrc  The Fortran index into  dspace  for the first element of columns for matrix (row copy). 
    21   Nrowrc  The Fortran index into  mspace  for the first element of row starts (row copy). 
    22   Ncolcc  The Fortran index into  mspace  for the first element of column starts (column copy). 
    23   Nfirstfree  The Fortran index into  dspace  of the first element of free space. 
    24   Nlastfree  The Fortran index into  dspace  of the last element of free space. 
    25   Nblockcol  The Fortran index into  mspace  for the first element of column entries for the latest block. 
    26   Nblockrow  The Fortran index into  mspace  for the first element of row entries for the latest block. 
    27   Nblockelem  The Fortran index into  dspace  for the first element of elements for the latest block. 
    28   Nintinfo  The Fortran index into  mspace  for the first element of integer information. 
    29   Nrowaux  The Fortran index into  dspace  for the first element of row auxiliary solve information. 
    30   Ncolaux  The Fortran index into  dspace  for the first element of column auxiliary solve information. 
    31   Nsobjupc  The Fortran index into  dspace  created by EKKSOBJ for the first element of the array of cost upper limits. 
    32   Nsobjdnc  The Fortran index into  dspace  created by EKKSOBJ for the first element of the array of cost lower limits. 
    33   Nsobjupv  The Fortran index into  dspace  created by EKKSOBJ for the first element of ranges of the objective function values corresponding to the upper limits on cost coefficients indexed by   Nsobjupc . 
    34   Nsobjdnv  The Fortran index into  dspace  created by EKKSOBJ for the first element of ranges of the objective function values corresponding to the lower limits on cost coefficients indexed by   Nsobjdnc . 
    35   Nsobjupe  The Fortran index into  mspace  created by EKKSOBJ for the first element of the array of entering rows or columns corresponding to the increased cost coefficients indexed by   Nsobjupc . 
    36   Nsobjdne  The Fortran index into  mspace  created by EKKSOBJ for the first element of the array of entering rows or columns corresponding to the decreased cost coefficients indexed by   Nsobjdnc . 
    37   Nsobjupl  The Fortran index into  mspace  created by EKKSOBJ for the first element of the array of leaving rows or columns corresponding to the increased cost coefficients indexed by   Nsobjupc . 
    38   Nsobjdnl  The Fortran index into  mspace  created by EKKSOBJ for the first element of the array of leaving rows or columns corresponding to the decreased cost coefficients indexed by   Nsobjdnc . 
    39   Nsbndcupb  The Fortran index into  dspace  created by EKKSBND for the first element of the upper limits on column bounds. 
    40   Nsbndcdnb  The Fortran index into  dspace  created by EKKSBND for the first element of the lower limits on column bounds. 
    41   Nsbndcupv  The Fortran index into  dspace  created by EKKSBND for the first element of the ranges of the objective function values corresponding to the upper limits on column bounds indexed by  Nsbndcupb . 
    42   Nsbndcdnv  The Fortran index into  dspace  created by EKKSBND for the first element of ranges of the objective function values corresponding to the lower limits on column bounds indexed by   Nsbndcdnb . 
    43   Nsbndcupe  The Fortran index into  mspace  created by EKKSBND for the first element of the array of entering rows or columns corresponding to the upper limits on column bounds indexed by   Nsbndcupb. 
    44   Nsbndcdne  The Fortran index into  mspace  created by EKKSBND for the first element of the array of entering rows or columns corresponding to the lower limits on column bounds indexed by   Nsbndcdnb . 
    45   Nsbndcupl  The Fortran index into  mspace  created by EKKSBND for the first element of the array of leaving rows or columns corresponding to the upper limits on column bounds indexed by   Nsbndcupb . 
    46   Nsbndcdnl  The Fortran index into  mspace  created by EKKSBND for the first element of the array of leaving rows or columns corresponding to the lower limits on column bounds indexed by   Nsbndcdnb . 
    47   Nsbndrupb  The Fortran index into  dspace  created by EKKSBND for the first element of the upper limits on row bounds. 
    48   Nsbndrdnb  The Fortran index into  dspace  created by EKKSBND for the first element of the lower limits on row bounds. 
    49   Nsbndrupv  The Fortran index into  dspace  created by EKKSBND for the first element of the ranges of the objective function values corresponding to the upper limits on row bounds indexed by  Nsbndrupb . 
    50   Nsbndrdnv  The Fortran index into  dspace  created by EKKSBND for the first element of ranges of the objective function values corresponding to the lower limits on row bounds indexed by   Nsbndrdnb . 
    51   Nsbndrupe  The Fortran index into  mspace  created by EKKSBND for the first element of the array of entering rows or columns corresponding to the upper limits on row bounds indexed by   Nsbndrupb . 
    52   Nsbndrdne  The Fortran index into  mspace  created by EKKSBND for the first element of the array of entering rows or columns corresponding to the lower limits on row bounds indexed by   Nsbndrdnb . 
    53   Nsbndrupl  The Fortran index into  mspace  created by EKKSBND for the first element of the array of leaving rows or columns corresponding to the upper limits on row bounds indexed by   Nsbndrupb . 
    54   Nsbndrdnl  The Fortran index into  mspace  created by EKKSBND for the first element of the array of leaving rows or columns corresponding to the lower limits on row bounds indexed by   Nsbndrdnb . 
    55   Nsellistcol  The Fortran index into  mspace  for the column selection list. 
    56   Nsellistrow  The Fortran index into  mspace  for the row selection list. 
    57   Nsparcost  The Fortran index into  dspace  for the parametric cost (objective) change vector created for EKKSPAR. 
    58   Nsparrlo  The Fortran index into  dspace  for the row lower bounds parametric change vector created for EKKSPAR. 
    59   Nsparrup  The Fortran index into  dspace  for the row upper bounds parametric change vector created for EKKSPAR. 
    60   Nsparclo  The Fortran index into  dspace  for the column lower bounds parametric change vector created for EKKSPAR. 
    61   Nsparcup  The Fortran index into  dspace  for the column upper bounds parametric change vector created for EKKSPAR. 
    62   Narcid  The Fortran index into  mspace  for the first element of the indices of the arcs in the basis. 
    63   Nlevel  The Fortran index into  mspace  for the first element of the array of node levels. 
    64   Nparent  The Fortran index into  mspace  for the first element of the array of parent nodes. 
    65   Npreorder  The Fortran index into  mspace  for the first element of the preorder traversal array. 
    66   Nrevpreorder  The Fortran index into  mspace  for the first element of the reverse preorder traversal array. 
    67  Nqrow  The Fortran index into mspace for the first element of rows for quadratic matrix (column copy) or the index into mspace for the first element of row entries for quadratic matrix (index copy). 
    68  Nqcol  The Fortran index into mspace for the first element of column starts for quadratic matrix (column copy) or the Fortran index into mspace for the first element of column entries for quadratic matrix (index copy). 
    69  Nqelem  The Fortran index into dspace for the first element of elements quadratic matrix (column or index copy). 


    [ Top of Page | EKKNGET | Table of Index Control Variables | Index to Modules ]