Updating demand matrices using the least squares method

Besides TFlowFuzzy, Visum provides another effective method for updating matrices: the least squares method. It differs from TFlowFuzzy in the solution procedure, which minimizes the squared distance between the assignment value and the counted value. The structure of the original matrix is maintained as far as possible by simultaneously minimizing the squared distance between old and new matrix values.

The nonlinear optimization problem is:

with

: values of the initial matrix

: corrected matrix values

: volume of network object r as a function of the corrected matrix values

: weighting factor for the difference between volume and count values

: weighting factor for the difference of values between corrected and initial matrix

: count value

Function is multi-linear and the linear factors are listed in flow matrix A,

.

Similar to TFlowFuzzy, flow matrix A is determined as

with

: number of paths that belong to OD relation ij

: 1 if path K contains network object r, otherwise 0

: volume of path K

There are two major advantages of the "least squares" method compared to TFlowFuzzy:

  • It always delivers a solution, which is why the procedure is more robust than TFlowFuzzy. However, this does not necessarily mean that the count values are reached as desired with the found solution.
  • The runtime is considerably less compared to TFlowFuzzy. This means the method can also be used in large models with a large number of count locations and the computation still time remains reasonable.

Nevertheless, both procedures still have their justification since TFlowFuzzy brings about a better match between assignment value and count value, at least for some models.

The "least squares" method requires slightly different input variables than TFlowFuzzy.

  • Instead of defining tolerances for count values, you define different weighting factors. So that large count values are not preferred over small ones on principle, the weighting factors should have a certain basic structure: They should contain the term 1 / root(count value). This term leads approximately to the optimization of GEH², i.e. the square of GEH and thus to a balanced result. GEH is defined as |CV - MV| / √(0.5*(CV + MV)) with CV: count value and MV: model value. If some count locations shall have a stronger effect than others, multiply this term by an appropriate weighting factor. The basic structure of the weighting factors should be strictly adhered to, especially for the count values for total traffic as well as for distribution. Otherwise, these two count values will dominate the entire optimization. However, since the distribution does not have true count values but shares instead, an average value must be assumed for the value of the count value in the formula 1 / root(count value). Here, the average number of trips per interval should be used, so basically the number of total trips / number of intervals.
  • In addition, a further weighting factor must be specified that defines the weight of the matrix deviation (difference between new and old matrix entries) compared to the count value deviations in the objective function. If this factor is small, matrix deviations receive a small weight compared to count value deviations. Unfortunately, there is no rule of thumb as to what magnitude this factor must assume to be sufficiently effective. In our experience, there are models where values in the order of 10-7 have hardly any effect; in other models, even small values lead to noticeable differences. We recommend starting with a weighting factor of 0 and analyzing the difference between the initial and the result matrix. If it is unexpectedly large, the weighting factor should be increased until the deviation is acceptably small.

The iterative solution procedure mostly avoids an unnecessary deviation from the currently assigned matrix. Thus, the weighting factor only has a minor effect as long as the specified original matrix is identical to the currently assigned matrix.

However,, the assigned matrix may differ from the matrix whose structure is to be retained. This is the case, for example, when the "least squares" method is used iteratively, i.e. multiple times in alternation with an assignment. Here you want to avoid that the deviation between the result matrix and the "historical" original matrix becomes larger and larger.

There are two variants of the "least squares" method:

  • Static variant

The static variant corrects a static matrix and always refers to total volumes. It does not correct an existing percentage PuT time series.

  • Dynamic variant

The dynamic variant corrects a matrix time series with reference to the volume per analysis time interval. Thus, the dynamic variant takes the temporal dynamics both in demand and assignment into account. The time intervals on both sides do not have to be identical: The demand time intervals are defined by the time series, the time intervals of the count values by the analysis time intervals.

Note: The dynamic variant is only available in conjunction with the PrT assignment procedure Simulation-based dynamic assignment (SBA) and the timetable-based PuT assignment.

The methodology of both variants is almost identical; the main difference is the additional dimension of time, which essentially only affects the flow matrix. In the dynamic variant, the rows of the flow matrix no longer correspond to the count locations, but to the cross product of count locations and analysis time intervals; the columns of the flow matrix no longer correspond to the quantity of the OD pairs, but to the entire demand time series. An entry in the flow matrix corresponds to the proportion of the demand of an OD pair during a demand time interval that passes a count location during an analysis time interval.

By adding the time dimension, the number of cells in the flow matrix increases considerably and the computing time of the solution procedure increases accordingly. This is why the dynamic variant was not implemented for the slower TFlowFuzzy procedure.