Aspen SCM‎ > ‎SCM Planning‎ > ‎

1. Required Sets and Tables

The fundamental sets which you configure in Aspen SCM Planning for an LP model are:
  • ROW: generic row identifiers;
  • COL: generic column identifiers;
  • POL: generic “policy” identifiers.
The fundamental tables are:
  • ROWS(ROW,FLD): defines the domains of the generic rows and a pointer to a policy which determines whether the row exists for each combination of elements of the domains;
  • COLS(COL,FLD): as ROWS but for columns;
  • COEF(ROW,COL): defines the coefficients in the LP matrix;
  • POLI(POL,HPO): defines policies for rows and columns.
To get these sets and tables into your case you should copy the tables from a prototype case, e.g. demo.cas. When you do so, you will also inherit the sets ROW, COL, FLD and HPO.

You also need  to copy the following sets and tables into your case:
  • RID: row identifiers used in ROWS(*,FLD1);
  • CID: column identifiers used in COLS(*,FLD1);
  • ROWSI(ROW,FLD): table which holds the data from ROWS(ROW,FLD) in numeric form;
  • COLSI(ROW,FLD): table which holds the data from COLS(ROW,FLD) in numeric form;
  • CLPS(CLP,1): control table for the optimisation.
Of these it is only CLPS which you edit yourself; the others are populated automatically when you generate the matrix.

You also need to ensure that your case contains the sets and tables which will hold the generated matrix. These are normally defined as temporary, which means that they are not stored in the case file when you exit the case. It also means that they are not available to be copied from one case to another unless you first change their Save if Modified attributes to Yes (i.e. tick the Save if Modified box in the Attributes dialog for each table). Once you have done this, you can copy the tables from one case to another.

The tables are:
  • MAROW(MAR,HAT): table which holds the numeric values of the subscripts for each generated row;
  • MACOL(MAC,HAT): table which holds the numeric values of the subscripts for each generated column;
  • MATX(MAR,MAC): sparse table which holds the non-zero coefficients in the generated matrix;
  • SENX(MAR,1): row senses;
  • TYPX(MAC,1): column types (UP,LO, FX, PL, MI, FR);
  • POLX(MAC,HPO): holds bounds and objective function coefficients for the columns which are generated;
  • RHSX(MAR,1): holds the right hand sides of the rows which are generated;
  • OBJX(1,HOB): holds the optimised objective value and the return code (i.e. the status of the optimisation)
  • ROWX(MAR,HRO): holds the activities and shadow prices of the rows;
  • COLX(MAC,HCO): holds the solution values and reduced costs of the columns;
  • MARR(MAR,1): flags to indicate regenerated rows;
  • MACR(MAC,1): flags to indicate regenerated columns.
All of these are required, even if you are not using some of the features (such as matrix regeneration) to which they relate. After copying them, you should change the Save if Modified attribute in both the source and destination cases back to No. If you do not, your case will be much larger than it needs to be.

By copying the tables into your case you also copy into it the sets which index them, including these important ones:
  • MAR: rows in the generated matrix;
  • MAC: columns in the generated matrix.
There are some other standard sets which are optional:
  • CON: user-defined constants;
  • NLF: names of non-linear functions.
If you are regenerating matrices you also need the following tables:
  • MATR(MAR,MAC): corresponds to MATX;
  • POLR(MAC,HPO): corresponds to POLX;
  • RHSR(MAR,1): corresponds to RHSX.

Back                                Next