Next: Scalars - Used Not Just Up: EMME/2 News 7 May 1989 Previous: Enhanced Network Editor

# Matrices and Related Matters

In the development of Release 4.0, a lot of effort went into enhancements related to the handling of matrices. Here a summary of the main points:

a) Different Number of Matrices per Type

Up to and including Release 3.0, when creating a data base the user had to specify one "number of matrices", which was then taken to be the maximal number of matrices of each type. Since full matrices are by far the most space critical, this usually implied an unnecessary restriction on the number of origin matrices, destination matrices and scalars. Release 4.0 overcomes this problem by allowing, for new data bases, the number of matrices to be specified independently for each type. The question "Enter: Number of matrices=" which is asked at data base creation time has been replaced by the question "Enter: Number of matrices mf, mo, mf, ms=". Thus, the user can now enter four numbers in answer to this question. If, as in previous releases, only one number is specified, it is taken to be the number of full matrices; in this case the number of matrices of the smaller types (mo, md and ms) defaults to the maximum of 99. This is justified by the small amount of storage required to store these matrices, as compared even to a single full matrix.

b) Accessing matrices by name

The "Enter: Matrix =" dialog has been extended to accept also the matrix name instead of the usual mtxx identifier. The following answers are now recognized:

mtxx
Matrix identifier (type and number), as before.

name
Matrix name, name must be unique and not start with mf, mo, md or ms.

mtname
Matrix name preceded by type specifier, name must be unique within type mt, name must not start with a digit.

"name"
Matrix name surrounded by double quotes, name must be unique.

mt"name"
Matrix name surrounded by double quotes and preceded by matrix type, name must be unique within type mt.

When a new matrix is to be created, the formats mtname and mt"name" are now also possible. In this case, the first available number is automatically assigned to the matrix and the subsequent "Enter: Matrix name=" question is skipped.

Note that the matrix naming rules m\emph{tname} and \verbm+t"name" can also be used in the matrix batch entry format used in module 3.11.

c) Matrix protection flag

In order to minimize the risk of loosing valuable matrix information because of a manipulation error, a matrix protection flag is now associated with each matrix. By default this flag is off, i.e. the matrix can be written into or deleted as usual. A matrix can be protected from any write, modify or delete operation by setting its protection flag with a new option in module 3.12. The use of the "init" keyword in a matrix batch input file, as well as the option "initialize matrix directory" of module 3.12 will result in an error message if any of the existing matrices are protected - reducing even further the possibility of inadvertent data loss.

d) Incremental Matrix Batch Input Mode

In module 3.11, "Input Matrices Using Batch Entry", a new incremental input mode can be activated by specifying the "default=increment" on the matrix header card. If this mode is selected, the values on the data card do not replace the existing values in the matrix, but are added to them. This allows, amongst other things, to build up a matrix directly from survey data by directly entering the survey data in the format (from zone) (to zone) (count). After the input is completed, the resulting matrix contains the correctly accumulated trip counts.

e) New Dialog and Report in Matrix Calculator

I a first step to overhaul module 3.21, "Matrix Calculations", the dialog and report formats of this module have been improved. The matrix expression is now validated right after it has been entered. The report now lists all matrices used in the expression and a summary with minimum, maximum, sum and average expression value is displayed at the end, similar to the summary used in the network calculator. Here is an example of the new report format:

EMME/2 Module: 3.21        Date: 89 05 01         User: E001/SPIESS.....HS         Page:   47
Project:       EMME/2 STANDARD DEMONSTRATION AND TEST DATA BASE - WINNIPEG
---------------------------------------------------------------------------------------------

MATRIX CALCULATIONS
*******************

Expression:

mf06 = .0964 * md26 - 2.665 * mo23 - .0236 * md25 + 2.696

Result matrix:                mf06: sesum     combined effect of socio-economic vars

Data matrices:                md26: parkco    parking cost per month
mo23: carown    autos per worker
md25: pmale     percentage of males

Constraint matrix:            none

Submatrix:                     all origins            all destinations

Number of expression evaluations:          23716
Minimum expression value:              -4.515300
Maximum expression value:               3.556427
Average expression value:               -.925468
Sum of expression values:          -21948.400000

f) List several matrices

Often, it is necessary to compare or relate the values of different matrices for the same zones or OD-pairs. Up to now this was a cumbersome task, since each matrix had to be listed separately and the reports had to be scanned by hand to find the corresponding values for one OD-pair. In Release 4.0, a new type of report "list several matrices" has been added to module 3.14 to facilitate this kind of analysis. Up to 12 different matrices can be included in a single report. The following example shows auto demand, auto time, transit demand, transit time, as well as the different transit time components for each OD-pair:

EMME/2 Module: 3.14         Date: 89 05 01        User: E001/SPIESS.....HS         Page:   92
Project:       EMME/2 STANDARD DEMONSTRATION AND TEST DATA BASE - WINNIPEG
---------------------------------------------------------------------------------------------

MATRICES BY ZONES
*****************

Data matrices:                mf01: wod76d/r  1976 observed auto demand (vehicles)
mf04: autim0    auto times scenario 1000
mf02: gpqtr0/r  transit demand dpr0000
mf12: trtim0    transit impedances scenario 1000
mf13: invtim    invehicle times scenario 1000
mf14: auxtim    auxiliary times scenario 1000
mf15: waitim    waiting times scenario 1000
mf03: nboard    no. of boardings scenario 1000

Constraint matrix:            mf11: gtot      total demand (mf1+mf2)
Constraint interval:              10        9999      include

Submatrix:                     all origins            all destinations

origin destin    mf01   mf04   mf02   mf12   mf13   mf14   mf15   mf03
(p)    (q)  wod76d autim0 gpqtr0 trtim0 invtim auxtim waitim nboard

3      1      4  4.254  31.32  26.49   4.69    5.4      3      1
3      2      5  4.206  12.22  26.29   4.07   7.14  1.455      1
3      4      6  2.337  34.25  17.98      0   8.99      0      0
3      5      5    2.9  5.988  25.07   3.67    5.2      3      1
3      6      5  2.845  12.66  27.19      0  13.59      0      0
3      7     18  5.205  5.403  37.31   6.27    6.8  3.705      2
3      8      0  4.685  24.34  31.08   6.41  8.295  1.525      1
3     24     13  6.132  4.556  47.56  10.38  11.43   2.66   1.79
3     47      5  3.362  7.061  34.91   2.01  10.19   3.75      1
3     55      6  11.47  8.642  50.01  12.01  9.145   4.19   2.26
3     59      5  19.39  22.81  56.71  23.12    7.6   3.77   2.16
3     81      5  7.056  5.524  44.71  11.69    8.4  3.095      2
3     84     12  9.336  6.315  48.94  12.31  11.55   1.73      2
3     85      6  11.23  6.772  43.26  14.43  7.135   2.26      2
3     98     26  7.438  10.34   43.8  11.65  8.525  2.535      2
3    103     32  13.93  8.384     51     21    9.8  2.695      1
3    105      5  16.36  6.142  67.82  31.33  8.735    4.5      2
3    112     13  8.856      0   48.3  16.17    7.6  3.455      2
3    114     13  15.07  6.576  62.44  24.55  10.13  3.805      2
3    147      6  1.948  10.21   15.2      0    7.6      0      0

g) Other Enhancements

• The matrix directory generated in modules 3.12 and 3.14 now includes two additional columns. The first one is labeled FLAGS and shows if matrices are protected (/r) or columnwise (/c). The second appears only for scalar matrices and it shows the associates values.
• The question "Same constraint matrix?" has been eliminated since it caused a lot of confusion in the past. Now the question "Constraint matrix, Enter: Matrix=" will always appear directly. This will make it easier to write macros, since the sequence of questions is now stable.
• In module 3.12, it is now possible to transpose a full matrix onto itself. This is done by specifying the same matrix twice in the transpose option (before, this resulted in an error message).
• The "modify matrix" option of module 3.12 now includes the possibility to change the storage class of a full matrix from rowwise to columnwise or vice versa. This is needed when, after an abnormally terminated transit assignment, matrices are left behind with the columnwise flag "/c".

Next: Scalars - Used Not Just Up: EMME/2 News 7 May 1989 Previous: Enhanced Network Editor

Heinz Spiess, EMME/2 Support Center, Thu Jun 6 14:17:23 MET DST 1996