NEW and OLD BASIS files

We sometimes call these files basis maps.  They contain the most compact representation of the state of each variable.  They are intended for restarting the solution of a problem at a point that was reached by an earlier run on the same problem or a related problem with the same dimensions.  (Perhaps the Iterations limit was previously too small, or some other objective row is to be used.)

As illustrated in Figure 1, the following information is recorded in a NEW BASIS file.

 

1.

A line containing the problem name, the iteration number when the file was created, the status of the solution (Optimal Soln, Infeasible, Unbounded, Excess Itns, Error Condn, or Proceeding), the number of infeasibilities, and the current objective value (or the sum of infeasibilities).

2.

A line containing the OBJECTIVE, RHS, RANGES and BOUNDS names, M = m, the number of rows in the constraint matrix, N = n, the number of columns in the constraint matrix, and SB = the number of superbasic variables.

3.

A set of (n+m-1)/80 + 1  lines indicating the state of the n column variables and the m slack variables in that order.  One character hs(j) is recorded for each j = 1:n+m as follows, written with format(80i1).

 

hs(j)

State of the jth variable

0

Nonbasic at lower bound

1

Nonbasic at upper bound

2

Superbasic

3

Basic

If variable j is nonbasic, it may be fixed (lower bound = upper bound), or free (infinite bounds), or it may be strictly between its bounds.  In such cases, hs(j) = 0.  (Free variables will almost always be basic.)

4.

A set of lines of the form

j        xi

written with format(i8, 1p, e24.14) and terminated by an entry with j=0, where j denotes the jth variable and xi is a real value.  The jth variable is either the jth column or the (j-n)th slack, if j>n.  Typically, hs(j) = 2 (superbasic).  When nonlinear constraints are present, this list of superbasic variables is extended to include all basic nonlinear variables.  The Jacobian matrix can then be reconstructed exactly for a restart.  The list also includes nonbasic variables that lie strictly between their bounds.

 

Loading a NEW BASIS file

A file that has been saved as an OLD BASIS file may be input at the beginning of a later run as a NEW BASIS file.  The following notes are relevant:

  1. The first line is input and printed but otherwise not used.

  2. The values labeled M and N on the second line must agree with m and n for the problem that has just been defined.  The value labeled SB is input and printed but is not used.

  3. The next set of lines must contain exactly m values hs(j) = 3, denoting the basic variables.

  4. The list of j and xj values must include an entry for every variable whose state is hs(j) = 2 (the superbasic variables).

  5. Further j and xj values may be included, in any order.

  6. For any j in this list, if hs(j) = 3 (basic), the value xj will be recorded for nonlinear variables, but the variable will remain basic.

  7. If hs(j) 3, variable j will be initialized at the value xj and its state will be reset to 2 (superbasic).  If the number of superbasic variables has already reached the Superbasics limit, then variable j will be made nonbasic at its current value (even if it is not equal to one of its bounds).