PUNCH and INSERT files

These files provide compatibility with commercial mathematical programming systems.  The PUNCH file from a previous run may be used as an INSERT file for a later run on the same problem.  It may also be possible to modify the INSERT file and/or problem and still obtain a useful advanced basis.

The standard MPS format has been slightly generalized to allow the saving and reloading of nonbasic solutions.  It is illustrated in Figure 2.  Apart from the first and last line, each entry has the following form:

 

Columns   

2-3

5-12

15-22

25-36

Contents  

Key

Name1

Name2

Value

 

The various keys are best defined in terms of the action they cause on input.  It is assumed that the basis is initially set to be the full set of slack variables, and that column variables are initially at their smallest bound in absolute magnitude, or zero for free variables.

 

Key

Action to be taken during INSERT

XL

Make variable Name1 basic and slack Name2 nonbasic at its lower bound.

XU

Make variable Name1 basic and slack Name2 nonbasic at its upper bound.

LL

Make variable Name1  nonbasic at its lower bound.

UL

Make variable Name1  nonbasic at its upper bound.

SB

Make variable Name1 superbasic at the specified Value.

 

Note that Name1 may be a column name or a row name, but on XL and XU lines, Name2 must be a row name.  In all cases, row names indicate the associated slack variable, and if Name1 is a nonlinear variable then its Value is recorded for possible use in defining the initial Jacobian matrix.  The key SB is an addition to the standard MPS format to allow for nonbasic solutions.

Notes on PUNCH data

  1. Variables are output in natural order.  For example, on the first XL or XU line, Name1 will be the first basic column and Name2  will be the first row whose slack is not basic.

  2. LL lines are not output for nonbasic variables if the corresponding lower bound value is zero.

Notes on INSERT data

  1. Before an INSERT file is read, column variables are made nonbasic at their smallest bound in absolute magnitude, and the slack variables are made basic.

  2. Preferably an INSERT  file should be an unmodified PUNCH file from an earlier run on the same problem.  If some rows have been added to the problem, the INSERT  file need not be altered.  (The slacks for the new rows will be in the basis.)

  3. Entries will be ignored if Name1 is already basic or superbasic.  XL and XU lines will be ignored if Name2 is not basic.

  4. SB lines may be added before the ENDATA line, to specify additional superbasic columns or slacks.

  5. An SB line will not alter the status of Name1 if the Superbasics limit has been reached.  However, the associated Value will be retained.