SATURN v11.3.12 Manual (Main) PDF
SATURN v11.3.12 Manual (Main) PDF
SATURN v11.3.12 Manual (Main) PDF
3)
Contents
Simulation and
Assignment of
Traffic in
Urban
Road
Networks
5120257 / Apr 15 i
Master Main Document
SATURN MANUAL (V11.3)
Contents
Contents
Section Page
1. Introduction 1-1
1.1 The Function of SATURN 1-1
1.2 Hardware / Software Requirements 1-3
1.3 Documentation 1-5
1.4 Distribution of SATURN 1-5
1.5 Contents of the Suite 1-6
1.6 Version Control 1-7
2. The SATURN Suite – An Overview 2-1
2.1 The Structure of Assignment Models 2-1
2.2 Trip Matrices in SATURN 2-3
2.3 Networks in SATURN 2-4
2.4 Route Choice in SATURN 2-5
2.5 Analysis in SATURN 2-6
2.6 General Advice on Using SATURN 2-6
2.7 Getting Started; Example Files 2-7
2.8 Text Files, Fixed Columns, Text Editors and Word Processors 2-8
2.9 Errors and Warnings: Fatal, Non-Fatal and Serious 2-10
2.10 Version Control 2-12
3. The Basic SATURN Model 3-1
3.1 The Network Model Structure 3-1
3.2 Data Requirements 3-4
3.3 File Name Conventions 3-5
3.4 32-Bit SATURN Versions 3-8
3.5 Running Programs Under DOS (or Command Prompt) 3-8
3.6 Running Programs under WINDOWS: SATWIN10 and SATWIN11 3-9
3.7 SATWIN10 User Interface 3-10
3.8 SATWIN11 User Interface 3-26
3.9 Version Control 3-35
4. Creating an Origin-Destination Matrix File 4-1
4.1 Trip Matrices using M1 or MXM1 4-1
4.2 Important Trip Matrix Definitions 4-3
4.3 Further Notes on Trip Matrices 4-4
4.4 Alternative Matrix Formats using M1/ MXM1 4-5
4.5 Version Control 4-6
5. Network Coding – A General Description 5-1
5.1 Simulation Networks 5-1
5.2 Buffer Networks 5-14
5.3 Defining the Buffer Network 5-15
5120257 / Apr 15 ii
Master Main Document
SATURN MANUAL (V11.3)
Contents
Contents
5120257 / Apr 15 iv
Master Main Document
SATURN MANUAL (V11.3)
Contents
5120257 / Apr 15 v
Master Main Document
SATURN MANUAL (V11.3)
Contents
5120257 / Apr 15 vi
Master Main Document
SATURN MANUAL (V11.3)
Contents
Contents
Contents
5120257 / Apr 15 ix
Master Main Document
SATURN MANUAL (V11.3)
Introduction
1. Introduction
1.1 The Function of SATURN
SATURN (Simulation and Assignment of Traffic to Urban Road Networks) is a
suite of flexible network analysis programs developed at the Institute for Transport
Studies, University of Leeds and distributed by Atkins Limited since 1982. It has
six basic functions:
i) as a combined traffic simulation and assignment model for the analysis of
road-investment schemes ranging from traffic management schemes over
relatively localised networks (typically of the order of 100 to 200 nodes)
through to major infrastructure improvements where models with over 1000
junctions are not infrequent;
(ii) as a “conventional” traffic assignment model for the analysis of much larger
networks (e.g., up to 7,500 links in the smallest standard PC version,
200,000 in the largest)
(iii) as a simulation model of individual junctions;
(iv) as a network editor, data base and analysis system;
(v) as a matrix manipulation package for the production of, e.g., trip matrices.
(vi) as a trip matrix demand model covering the basic elements of trip
distribution, modal split etc.
As a combined simulation and assignment model - its original function - SATURN
is most suitable for the analysis of relatively minor network changes such as the
introduction of one-way streets, changes to junction controls, bus-only streets, etc.
(which can be loosely categorised as “traffic management measures”) and whose
evaluation requires a detailed analysis of traffic behaviour at junctions.
However from its starting point as a combined simulation and assignment model,
SATURN has been extended in both directions so that it can function both as a
conventional traffic assignment model and as a pure junction simulation model.
As a “conventional” traffic assignment model (with or without simulation) SATURN
can deal with large conurbation, regional or even national models.
These may then interface with smaller localised models using the greater
precision of the junction simulation models.
With both simulation and conventional network representations SATURN provides
a wide range of assignment options such as generalised cost, all-or-nothing,
Wardrop equilibrium, Burrell multiple-route assignment (SUE) and, more recently,
demand-responsive (elastic) assignment to deal with induced traffic. All these are
founded on theoretically consistent modelling frameworks and convergent
algorithms reflecting the academic background of SATURN’s development.
Releases of “major” updates to SATURN occur on a roughly annual basis (see
Section 1.6 below for a list); the latest release, 11.3, first became generally
available in March 2014.
Introduction
Introduction
with all available traffic information, including where possible any prior estimates
of the trip matrix.
Other important features of SATURN include:
♦ special features of Australian and New Zealand rules of the road have been
incorporated
♦ facilities to both “dump” SATURN data into ASCII files for input into, e.g.,
spreadsheets or other suites of transport programs and equally to re-input
data files from these external procedures
Introduction
Introduction
1.3 Documentation
Documentation for SATURN is available at a number of levels
♦ SATURN User Manual (this document)
♦ an On-line Help System
♦ reprints of Journal and Conference Articles
The needs of most users will be provided by the User Manual alone which is
available in both word processed and printed copy available from Atkins and
included on the SATURN Installation CD as standard Adobe PDF documents.
They may also be downloaded from the SATURN WEBSITE
http://www.saturnsoftware.co.uk; or see Appendix C for a list of various relevant
publications and background technical files, many of which are included within the
PDF Appendices.
Introduction
Introduction
The above structure is of course perfectly general and may be applied to any suite
of network analysis programs, not just SATURN. What distinguishes different
suites is, e.g., the precise manner in which data must be prepared for input, the
options that are available to undertake route choice or to analyse the results, etc.
However one important common strand is to note that errors in the outputs can
arise from four general sources
The important point is that you should not necessarily blame the program if the
results are not to your liking - the universal computing principle of “Garbage in,
Garbage out” applies very much to the use of SATURN. This is not to say that the
SATURN programs are perfect - far from it, as you shall no doubt find out! - but it
is important to realise that there are a host of reasons why models fail and to learn
- from experience, largely - how to minimise them.
A second important point to appreciate is that the programs in the SATURN suite
are only tools capable of carrying out certain well-defined functions and it is the
user who must specify how these tools are to be used. If you treat SATURN as a
black box which operates in whatever default mode seems appropriate to us, the
designers, then it may very well not do what you want it to do. You are the boss
and the more you understand the underlying modelling principles which SATURN
follows then the better your results will be.
The following sections explain in greater detail how the various components in
Figure 2.1 are handled within SATURN and where relevant questions are treated
in the documentation.
♦ that they should be obtained (as far as possible) from direct observation such
as in-vehicle interviews or number-plate matching surveys;
♦ that they should be derived from some form of demand modelling process,
e.g. trip distribution, modal split etc
A related issue is how one obtains future year forecasts given a validated base
year matrix. Again there are two extreme solutions, simple growthing-up or
factoring methods or cost-related demand models (as discussed in Section 7.4).
In practice of course the techniques used in studies will incorporate elements of all
the above procedures.
Every organisation using SATURN must therefore develop their own procedures
for matrix estimation, e.g., from vehicle surveys, home interviews, and/or demand
models. This, it must be stressed, is never an easy task and may involve even
more resources, and possibly even more computing resources, than the network-
based tasks.
Facilities within the SATURN Suite may be used to a greater or lesser extent in
the estimation of matrices. At one extreme SATURN may be run with fixed trip
matrices derived totally independently of SATURN. On the other hand there are a
large number of matrix-based programs within SATURN which can assist in the
derivation of trip matrices. Thus the general matrix manipulation program MX
(see Section 10) contains virtually all the standard operations required to create
trip matrices, for example matrix factoring routines to model growth in particular
zones. In addition the SATME2 program, described in detail in Section 13, uses
link count data to estimate the “most likely” trip matrix. The elastic assignment
options (see Sections 7.4 and beyond) also allow the basic assignment function
within SATURN to be interfaced with more general demand models such that
SATURN can include, e.g., modal split or distribution facilities.
However for most users the creation of a trip matrix will involve the use of the
“matrix build” procedure M1 which converts a data file of individual o-d trips
prepared by the user into a file suitable for handling within SATURN. How to use
M1 in this manner is described in Section 4.
We note, in passing, that is important to remember that the recommended units
for flows in SATURN are pcus/hr, not vehicles/hr (although it is possible to use
vehicles if desired; see 15.17.1), so that it may be necessary to convert observed
vehicle trip matrices into pcu matrices prior to running SATURN.
Finally, let us re-emphasise the point made in 2.1 that errors in trip matrices can
have a significant effect on the overall accuracy of the full assignment procedure
and that they should not be either ignored or under-estimated
Note firstly that SATURN networks may be coded at two levels of detail:
Finally, you will find a slightly warped sense of humour and a knowledge of who’s
who on The Muppets to be useful assets! Oh yes, and don’t get upset by the
insults.
to assign the trip matrix to the Epsom98net network (see Section 3.1).
This process is also described in Section 3.6 where the facilities for running
SATURN modules from SATWIN are detailed.
When the above run is complete, you will find that a number of files have been
created, e.g., a file Epsom98net.lpn which is a line printer output file from the
SATURN program SATNET which converts the Epsom98net network data file into
a “binary file” Epsom98net.ufn and a Epsom98net.lpt output file from SATALL.
Line printer files may be either printed or viewed in a standard text editor. File
name conventions are described in Section 3.3.
All essential outputs from the assignment are now stored in the file liv97.ufs and
the results may be analysed by a set of analysis programs. To experiment try the
following commands
P1X Epsom98net
SATLOOK Epsom98net
MX Epsom98mat
Details on the functions of the above programs may be found elsewhere in the
manual.
Please note however that the Epsom98net file is NOT intended as an illustration
of good coding practice; merely an example of some network coding. Equally,
although superficially similar to the Epsom town centre from which it was derived,
the actual data is almost totally artificial.
2.8 Text Files, Fixed Columns, Text Editors and Word Processors
SATURN programs make extensive use of “ascii” or “text” files which users need
to prepare in order to run SATURN programs, e.g. the network .dat files used to
define network structure as input to SATNET.
2.8.3 FORTRAN Conventions for Reading “Real” Data Fields: Variable Decimal
Places
Within FORTRAN numerical variables may be either “integer” or “real”; e.g., 1, 2, 3
as opposed to 1.25, 3.14159, etc. etc. It is important in preparing SATURN .dat
files that when an integer-only variable is to be set, e.g., in a fixed range of
columns, that it is written as an integer (i.e., without a decimal), otherwise a
“FORTRAN Read Error” will result and, most likely, the program will terminate. For
example, writing 1.0 instead of 1 will cause such an error, even if it is within the
correct columns.
On the other hand the FORTRAN input conventions for real numbers are more
forgiving so that either 1 or 1.0 will be correctly read as “one” as long as it is within
the correct columns. In addition, the number of decimal places to be included is
generally defined within the program for a real input field but need not be strictly
adhered to. Thus a Fortran format of F5.2 would imply that a real value is required
within a block of 5 columns with 2 characters after the decimal point; e.g., 1.23,
not 1.234. And certainly if F5.2 were used as an output format 1.23 would always
be output, never 1.234. However if 1.234 were to be input under Format F5.2 the
third decimal place would be correctly read; equally 123.4 would be correctly read
even though it only has one decimal place, and 123 would be read as 123.0 even
though it doesn’t have an explicit decimal.
Note, however, that the field “width” must always be strictly adhered to so that, for
example, with F5.2 it would not be possible to input a value such as 123.45 which
requires 6 columns, or indeed any value greater than 99999.0.
In very old versions of SATURN which were supplied to users as source code for
the users to compile with their own compilers life was more complicated in that
certain compilers would require that, with a format F5.2, the decimal place must
appear in column 3 whereas others would be more forgiving as above. Therefore
the Manual tends very often to specify a fixed decimal place whereas, with
current .exe programs, the input formats are flexible as above.
In brief, you can input real numbers in virtually any format you like as long as you
stay within the correct “width” of the input field.
Finally we note that there are a number of instances of inputs which are generally
input as integers but which are stored as reals and therefore, strictly speaking,
may be input as either an integer or a real. For example, traffic signal stage times
(see Record Type 3, 6.4.1) are generally specified with sufficient precision as
integer seconds but may, if desired, be input as a real value in order to achieve
greater precision. Similarly counts, which are stored as reals, are generally input
♦ Fatal errors.
♦ Semi-fatal
♦ Non-fatal errors.
♦ Serious warnings.
♦ Warnings.
Generally speaking these are applied to the processing and validation of input
data files such as network files but they are also used in interactive programs.
Fatal errors, as the name implies, cause the program to terminate abnormally.
This does not necessarily imply that the program itself cannot continue at that
point; it may be that at a later point in that program or even in another program life
would become impossible. In some situations a program may continue even after
a fatal error has been encountered; for example, SATNET will continue to process
data after a fatal error in order to detect other errors later on in data sets.
However it would not carry on to the very end.
Semi-fatal errors were first introduced in SATURN 10.1. They are applied to
errors in SATNET, which would prevent (or are expected to prevent) the
assignment - simulation procedures from running normally but would not prevent
the map network as required to P1X to be set up. Networks with semi-fatal errors
may therefore be processed within P1X and the errors corrected interactively so
that they may be processed by the assignment/simulation stages.
Non-fatal errors result from input which SATURN can handle without subsequent
numerical problems but which, in the program's opinion, is almost certain to
produce nonsensical results. Thus defining a free-flow speed of 0 kph would be a
fatal (or semi-fatal) error if it would ultimately cause a program to divide by zero; a
speed of 0.001 would be a non-fatal error since the program could cope
numerically.
Clearly all fatal errors need to be corrected before continuing, and all non-fatal
errors should at least be thoroughly checked and confirmed that they are
deliberate.
Certain Non-Fatal Errors (plus certain Serious Warnings – see below) are
optionally upgraded to Semi-Fatal status if a network parameter WRIGHT is set
equal to T. This convention is strongly recommended. See Section 6.12.2.
Serious warnings are similar to non-fatal errors, but less obviously bound to
produce nonsense, while warnings refer to input which looks strange but may be
OK. Verification of both is recommended but not, if you like, mandatory.
However, it is worth bearing in mind that a warning at any level may not reflect the
“true” error. For example, if a user wishes to define data for a link A,B and they
accidentally input A,C then this may generate a warning if the input does not make
much sense at C but simply correcting the input so that the data makes sense at
C does not correct the basic problem of having input the wrong node number.
Thus even warnings may be evidence of much more serious problems.
Summary statistics of all five types of errors are given at the end of each program
plus, in SATNET, at intermediate stages. The same information may also be
accessed within P1X under Information.
Note that non-fatal errors and warnings may be suppressed in SATNET by setting
a parameter ERRYES(n) to F in the &PARAM inputs to SATNET to suppress error
n. Alternatively, in a limited number of cases, setting ERRYES(n) = F may convert
a semi-fatal error into a serious warning; e.g., setting ERRYES(437) = F allows
unidentified links to appear in the 77777 count data without creating semi-fatal
errors.
A range of error messages may be set in a single Namelist statement by using a
colon; e.g., ERRYES(33:66) = F “turns off” all warnings in the range 33 to 66. See
Appendix A.
In addition a count of the number of each category of errors detected per
simulation node is included in the uf* files and may be displayed as part of the
node print outs or node graphics. For information on which error numbers are
which please see Appendix L (or, less conveniently, list the file SATTIT.DAT).
♦ the Network Build program, SATNET, which checks network data input and
sets up the files required by:
♦ the Assignment, SATEASY, which assigns traffic on the basis of the delays
given by the simulation.
♦ the Simulation, SATSIM, which models in detail the passage of traffic through
the network and the resulting delays.
The ‘analysis’ and display programs comprise:
♦ the network general analysis and plot program P1X which displays link-based
data either to a terminal or on a hard-copy device (and includes virtually all
the functions contained in the following three original programs).
♦ the data base analysis program SATDB which allows an essentially free-
format manipulation and display of data.
Figure 3.1 and Figure 3.2 illustrate the inter-relationships of these functions
represented by discrete programs. Programs are enclosed by boxes and the files
passed between the programs and/or inputs to them are also indicated. Section
3.3 describes the file name conventions.
How to create the trip matrix file to be assigned, trips.ufm in Figure 3.1 and Figure
3.2, is dealt with in Section 4.
(as governed by the parameters NITA and NITS described in 6.3) for the
individual programs to converge.
Figure 3.2 – Running the Basic SATURN Model using separate programs; the original
methodology
♦ Input/output files,
1
♦ “Unformatted binary” vrs. “text” or “ascii”,
♦ Network data,
♦ Trip matrices
The filename conventions should try to reflect these differences.
File names differ considerably between different computers and different
operating systems. SATURN follows standard DOS and WINDOWS conventions
whereby every file must have
* As far as the normal user is concerned the essential difference between text and binary files is
that a text file may be created using the keyboard and/or viewed on the screen, (e.g., using a
standard edit program such as Notepad), whereas a binary file is passed between programs and is
only “intelligible” to a program. Thus if you try to “type” a binary file on the screen you will get - at
best - gobbledygook and - at worst - a “stalled” computer. You have been warned!
Thus a network “named” LIVNET might spawn a number of files with extensions
such as LPA denoting the Line Printer output from the Assignment, UFS indicating
the “Unformatted” output from the Simulation, etc. etc. The documentation
assumes the DOS/WINDOWS “dot” convention, e.g. LIVNET.UFS.
3.3.2 Extensions
The following rules govern the standard or “default” files extensions:
All unformatted binary files have extensions beginning with UF. In particular:
UFN An unformatted file output (only) by SATNET
UFS An unformatted file produced by SATSIM or SATALL
UFA “ “ “ “ SATEASY
UFM An unformatted matrix file
UFP A file containing “pija” factors as passed from SATPIJA to SATME2
UFT An unformatted file output by SATSUMA; see 17.5
UFX Scratch files.
UFC An unformatted file of costs used to re construct routes see 15.23.
“Text” files used as control or data files:
DAT All basic data or control files created by the user, e.g., using a text editor such
as Notepad or Wordpad (not MS Word) and used as input
KP A “card punch” file output by a program.
HLP Help files used by all interactive programs.
LOG A file containing a list of all terminal input commands from the run of an
interactive program; see 14.5.1.
KEY A “dummy” terminal file used to run an interactive program; see 14.5.1.
VDU A “dummy” terminal output file from an interactive program; see 14.5.1.
XY A supplementary node co
GIS A supplementary “Geographical Data” file; see 5.7.
MCC A supplementary file containing link counts.
BUS A supplementary file containing bus route data.
DBD A “Data Base Dump” file output/input by SATDB.
Conventionally, all the above files might be assigned the extension “.txt”, e.g. by a
word processor such as Microsoft Word.
All output line printer files have extensions “LP-” with the third letter/number
indicating the program that produced it as follows:
LPN SATNET
LPA SATEASY
LPS SATSIM
LPT SATALL
LPL SATLOOK
LPG SATPIG
LPP P1X
LPD SATDB
LPM SATME2
LPU SATU2
LPF SATOFF
LPC SATCH
LPX MX
The “standard” extensions above are used by the programs themselves to create
new files and/or to suggest extensions to the user on input. They are also
frequently used as a convenient shorthand to refer to files; e.g., the “LPN file”
would imply the line printer file produced by SATNET, a “DAT” file implies a
control file prepared by the user, etc. “UF files” refer in general to all UF*
unformatted files, while UFA/S refers to either UFA or UFS which may, in a
number of circumstances, be used interchangeably.
In addition there are a number of “system” files within the Suite itself which should
in some sense be inaccessible to users (i.e., they should not be accidentally
erased!). These will have conventional extensions as well as indicated below:
3.3.3 Pathnames
Every file has a full “pathname” associated with it. Thus the file net3.ufs on your
working directory may have the full name c:\SATURN\NEWTOWN\2005\net3.ufs.
In certain circumstances net3.ufs (or even net3 if SATURN expects the extension
.ufs) may be enough to identify it; in other circumstances the full pathname may
be required.
SATURN binary files store both filenames and pathnames and use both when
trying to open files.
Path/filenames may contain up to 256 characters. (Versions prior to 10.1 were
limited to 96.)
would run the program SATLOOK in order to analyse data for a “LIVNET”
network. To look at another network you would type:
SATLOOK EVERTON
The precise file to be analysed in the first case would be LIVNET.UFS, the
extension .UFS being implied. Output files are automatically created as
necessary with standard extensions as well. Thus the line printer output file
above would be LIVNET.LPL.
Note that simply typing the name of the program prints a brief “help file” to the
screen with instructions how to use that procedure:
In addition to .bat files that run individual programs there is also a set of “special
purpose” bat files (termed “batch procedures”, section 14.7) that perform specific
“one-off” functions. For example, the procedure SATCOST (15.27.4) uses the
program SATLOOK in order to produce a matrix of o-d costs. Similarly there are a
number of procedures based on the matrix manipulation program MX which, e.g.,
add two matrices together or factor a single matrix; see 10.20.
The big advantage of batch procedures is that they allow the user to run certain
standard “bread and butter” operations based on programs which are normally run
interactively but in a totally off-line or batch mode. In addition the user may then
create their own “super-bat” files which string together a sequence of calls to
individual .bat files in order to run a series of operations off-line (e.g., overnight).
Full instructions for running both styles of batch procedures are found in Section
14.
♦ Setup.exe
You will be led through a series of install screens which will allow you either to
accept the standard folder setup or to select your own.
With the release of SATURN v10.9, the installation may also be undertaken using
the Microsoft Installer (ie .MSI) package – these are available on request
From SATURN 10.2 onwards, users may, if they prefer, install SATWIN10 under
\Program files\ rather than the default \satwin folder. This, and indeed installation
under any folder containing a space, was previously prohibited but this limitation
has now been corrected.
However, once a suitable home has been chosen, program executables and
assorted DLLs, bat and control files, help and PDF-based documentation will be
automatically installed on your hard disk. You can then run SATURN as
previously from a Command prompt (remembering to set the Path to the directory
chosen for EXE and BAT file, \SATWIN\XEXES\ by default and check preferences
in SAT10KEY.DAT), or to use SATWIN10 which can be accessed through the
desktop icon.
If you have a previous version of SATURN, this will be overwritten during the
installation process. However, users can keep previous versions of SATURN
(before installing the current version) by renaming the existing XEXES folder. This
could be renamed to say “XEXES 10.7.10” (where 10.7.10 indicates the version
number).
If multiple versions of SATURN are detected when SATWIN10 is launched, the
dialog box below will appear, enabling you to select the version to use in the
current session.
From SATURN 11.2 onwards, the user also has the option to install the newer
SATWIN11 front-end in preference to SATWIN10 - SATWIN10 is described in
section 3.7 whilst information for SATWIN11 is available in section 3.8.
3.7.1 Overview
SATWIN10 is a front end for SATURN with six principle functions:
The File menu is used to exit from SATWIN, for consistency with other Windows-
based software.
♦ the “Program folder” where the .exe and .bat files etc. are stored,
Once files have been selected, click on Run and the module executes. Upon
completion you have the option to view the output LP file or to run further
modules.
You can also run modules directly from the Events log in one of three ways:
1) Click and existing command in the Events log to highlight it, then press the
F2 or Insert key to enter Edit mode, then type a new command or edit the
existing command and press the ENTER key to stop editing. (Alternatively,
click the command to highlight it, then click it again to enter Edit mode.
Note that this is not the same as double-click, there is a pause between
clicks).
2) Click the entry <Click Here To Select, Then Press F2 Key or Click
Again To Enter A New Command> in the Events Log to highlight it, then
press the F2 or Insert key to enter Edit mode, then type a new command
and press the ENTER key to stop editing. Alternative is similar to option 1
above.
3) Drag a batch file (from the Desktop, Windows Explorer, etc.) and drop it on
the Events log.
4) After entering a command you can Double-click it, click the Run Items(s)
button, or press the F4 key to run it
Note: the Events Log now indicates the Program Folder (see below, fourth
column) containing the version of SATURN used to execute a command (in
addition to the Working Folder where data files reside, see below third column).
♦ The first command SATNET CNET uses CNET data file from “Working
Folder” C:\SATWIN\TEST\CORDONSRN and SATNET v10.8.22 from
“Program Folder” C:\SATWIN\XEXES 10.8.22.
♦ The second command SATURN LIV10 LIVTRIPS uses data files from
“Working Folder” C:\SATWIN\TEST and SATURN (i.e. SATNET/SATALL
v10.8.22) from “Program Folder” C:\SATWIN\XEXES 10.8.22.
♦ The third command SATURN LIV10 LIVTRIPS uses data files from “Working
Folder” C:\SATWIN\TEST and SATURN (i.e. SATNET/SATALL v10.9.10)
from “Program Folder” C:\SATWIN\XEXES 10.9.10.
♦ The last entry in the Event Log indicate the current “Working Folder” (i.e.
D:\TEMP\SATURN MULTI-CORE\DMB312) and “Program Folder” (i.e.
C:\SATWIN\XEXES 10.8.22. This means that any commands issued within
SATWIN will use data files and SATURN modules from the respective folders.
You can change “Working Folder” and “Program Folder” at any time via the
Settings/Folders menu option.
Double-clicking a SATURN module category from the displayed list will reveal the
available modules, a subsequent click to the module will select it. The “Set Module
Parameters” and “Module Help” buttons will also be enabled.
Resting the mouse button inside the box with the list of SATURN modules will
provide a one line description of the selected module.
Clicking the “Set Module Parameters” button will set the required parameters for
the selected module with the “Module Help” button provide additional supporting
information on that module.
After setting the module parameters, the command line will be displayed in the
editable batch file contents box. Further modules may be manually added to the
batch file contents text box.
The ‘Run’ button will start the module(s) in the batch file contents text box whilst
the ‘Save’ button will save the contents to a batch file for later re-use. The ‘Edit’
button will open the batch file in Notepad and the ‘Clear’ button to remove
information from the text box.
Previously created batch files may also be used by selecting via the “Select Other
Batch Files” button.
Note: instead of using the Batch Run menu, you may also drag batch files or the
SATURN executables (from Windows Explorer) and drop them into the Events log
to run them automatically.
SATURN commands can be typed directly into the command line box or individual
modules and input files may be selected from pull down menus using the Select
Command and Select Parameter buttons respectively. This approach can be used
for interactive runs of modules e.g. MX I
To get help on supported DOS commands, press the F2 key on the keyboard.
Help on a selected SATURN command is automatically displayed on a side box to
the right of the Command Line dialog box. Using the Hide button will conceal the
help box. Pressing the F2 key after selecting a command will display the
command’s help information in a separate Help dialog box. You can press the
up/down arrow keys on the keyboard to step through previous commands if the
cursor is on the command entry box or use the ‘Previous Commands’ button to
display the list of previously used commands.
Test Network 1 will run MXM1 to build trip matrix HAT, followed by SATNET,
SATALL and P1X for network HEADE, leaving you in P1X interactive mode.
Upon exit from P1X, the following screen will allow you to view any of the LP files
generated
Test Network 2 will run SATNET, SATALL and P1X for network N10, leaving you
in P1X interactive mode, which in this example will show a background bitmap of
the network.
If the full or demo version of DRACULA is included with SATURN, the menu
option DRACWIN will appear on the SATWIN menu bar (see above). This
provides access to DRACULA through its front-end program DRACWIN.
When several runs are displayed on the event log, you can delete selected runs.
The options are available to remove all commands in the log or a set of cursor
selected commands. Individual commands can also be deselected as above.
Detailed SATURN version information (shown in the dialog box below) is available
through “SATURN Version Info” from the Help menu or by double-clicking the
version information area indicated above.
If the user wishes to Detailed SATURN version information (shown in the dialog
box below) is available through “SATURN Version Info” from the Help menu or by
double-clicking the version information area indicated above.
If “Version Unknown” appears in the selection box, SATWIN 10 was unable to
identify the specific version (eg a version of SATURN previously installed under
the XEXES directory).
The reference to the “SATURN Version Unknown” may be removed by the user
by:
♦ Determining the SATURN version and level in use. This may be readily
achieved by viewing any output Line Printer file using the executables – the
version and level in use will be reported at the top of the file (eg Version
‘10.5.12’ and Level ‘N3’); and
♦ Creating a new text file called “SATURN.VER”, in the same directory as the
executables, containing at least one line of text that says “SATURN <version>
Level <level>” – for example “SATURN v10.5.12 Level N3”
This will bring up the dialog box below. You can add paths containing other
programs you wish to have access to in the “Paths Containing User Programs”
text box by copy and paste or selecting a path through “Add Path” button.
The list can be cleared via the “Settings/Clear Recent Command List” menu
option
3.8.1 Overview
SATWIN11 provides an updated front end for SATURN, replacing the existing
time honoured SATWIN10 application.
SATWIN11 enables the user to undertake the following tasks:
♦ Quick search for any module, e.g., SATNET or P1X by name or by keyword;
The first time SATWIN is started you will see the Quick Start menu prompting you
to:
1) Restore the last session (using the auto saved session model complex
from the previous use)
2) Open the last used Model Complex (will be different to above option if the
user did not save at the end of last session).
3) Open an existing Model Complex. Let the user browse to a previously
saved Model Complex.
4) Create a new Model Complex with default values (same as clicking X).
The user can tick a box to automatically start the next SATWIN session where it
was left on last exit. This will mean that the quick start menu is not displayed. This
setting can be changed in the Tools tab.
The Settings menu is also used to select two standard folders where SATURN
files are stored:
♦ Program Folder – the path for the.EXE and .BAT files related to the SATURN
version.
Two other folders are automatically updated:
♦ Manual Folder – automatically set to the \DOCS folder under the SATWIN 11
install directory,
These are defined during the initial installation routine either by default or by
explicit choice. Any later changes made are “remembered” by SATWIN 11 the
next time it is used.
The current working folder is displayed on the main SATWIN 11 screen at all
times as is the current SATURN version.
A new module-specific template will be displayed allowing the user to select the
necessary files. For example, if the module SATURN (which runs SATNET
followed by SATALL) is selected, the template enables the user to select the
network .dat file and a matrix .ufm file as shown below (plus, optionally, UPDATE
and/or PASSQ files if required).
Once files have been selected, click on Run and the module executes.
Each Module parameter window has options to keep the command prompt open
and apply either Quick and/or Quiet options. By default, the forms will remember
the previously selected files.
This behaviour may be changed – select the Tools User Interface Clear
Parameters check box. To clear the parameters, click the reset button.
All the Module Parameter forms have a feedback button allowing the user to share
their ideas with the SATURN development team via email. All the feedback
received will assist in the development of the future releases.
Upon completion of the module, the user has the option to view the output LP file
or to run further modules.
The user may need to refresh the file list before the newly created LP files are
available. To view the selected file in the user-defined text editor, click Show. To
review the errors in the Error Manager, click the exclamation icon.
♦ the Headingley Test will run MXM1 to build trip matrix HAT, followed by
SATNET then SATALL and finally P1X for network HEAD leaving the user in
the P1X interactive mode; whilst
♦ the Epsom Test will repeat the same process for the N10 Network but this
time with a background bitmap of Epsom.
More detailed information about the SATURN version (as shown in the dialog box
below) is available either through Support tab Support Info SATURN
Version Info or by hovering the mouse over the SATURN Version in the settings
panel.
If the selection box states Version Unknown’, SATWIN 11 was unable to identify
the specific version (e.g. a version of SATURN previously installed under the
XEXES directory but without the SATURN.VER being created). The reference to
the ‘Version Unknown’ may be removed by the user by:
♦ Identifying the SATURN version and Level in use by viewing any of the output
Line Printer file using the executables. The SATURN Version and Level in
use will always be reported at the top of the text file (e.g. Version ‘10.9.24’
and Level ‘N3’); and then
♦ Creating a new text file called SATURN.VER in the same directory as the
executables, containing at least one line of text that says ‘SATURN <version>
Level <level>’ – for example ’SATURN v10.9.24 Level N3’
3.8.6.6 Using Other Programs via the SATURN DOS Command Shell
Access to other non-SATURN (user) programs from the SATURN Command Shell
may be undertaken by specifying the full paths containing the User programs via
SATURN Command Shell Paths from the Tools tab. Once selected, the dialog
box will enable the user to add extra path(s) containing other programs to be
used. They may be added to the Additional User Programmes Paths area by
selecting the path(s) via the ’Browse ...’ button.
or (more simply):
M1 trips
where MXM1 or M1 are simply .bat files which run the program MX in a particular
way. (Previously M1 was a separate program.)
By default the extension of the input file is assumed to be “.dat”; i.e., in the above
example the input file would be trips.dat as illustrated in Figure 4.1. However it is
possible to use other extensions (the modern trend would be to use .txt) by
commands such as:
MXM1 trips.txt
The ASCII file (TRIPS.DAT etc.) is formatted (see 10.5.1) as zone-to-zone flows
ordered (as is usual) first by origin and second by destination. However preceding
this data are four (sets of) header records:
1) RUN runname
2) &PARAM NROWS=nc,NCOLS=nc,MPNEXT=T, &END
3) TRIPS PCUH
4) matrixname
TRIPS.DAT
M1
TRIPS.UFM
Note:
♦ Capital letters above denote mandatory input; lower case letters denote
inputs which must be chosen by the user.
♦ Record (1) begins in col 1; runname should be chosen by the user and
begins in column 5.
♦ Record (3) must begin in col. 1 and have three blanks between the S and
the P. This record defines the matrix as a trip matrix in units of pcus per
hour.
♦ Full details of the above “standard” format are given in Section 10.5.1,
although certain alternative formats, described in 4.4 below, were introduced
in SATURN 10.6.
Following the header records, each individual cell in the O-D matrix is given (by
default – see below) with up to 15 entries on each record in cols 1-5, 6-10, ...., 71-
75. (Fortran format 15I5). A new record is begun for each origin. The first entry
for each new origin, i.e., cols. 1 to 5 on the first record, contains the “name” of that
zone, followed by nc entries for trips to destinations 1, 2, 3,..nc. Hence the first
record contains trips for up to 14 destinations, whereas subsequent records
contain up to 15 destination trips, starting in cols. 1 to 5. The origin records MUST
appear in order of increasing zone names; i.e., the lowest origin first, the second
lowest next, etc., etc.
A fuller description of what is meant by “zone names” is given in 5.1.6 and 10.2.2.
An alternative “long” format is also available under which the matrix elements are
specified as real’s; see 10.5.1 for details.
In fact virtually any input format is acceptable by the program MX using interactive
commands; see Section 10.5.2 to 10.5.6. For example, the data may be contained
in a CSV-formatted file as produced by a Windows program such as EXCEL. In
addition, post release 10.6, the “batch” procedures M1 and MXM1 will also accept
various alternatively formatted files including CSV as explained in Section 4.4.
Hence transferring matrices from other suites of programs should not constitute a
problem.
The following sample file lists the beginning of the trip file for a network with 10
zones (so that only one record per origin zone is required).
RUN SECOND SATURNVILLE O-D RUN
&PARAM
NROWS=10,
NCOLS=10,
MPNEXT=T, &END
TRIPS PCUH
SATURNVILLE O-D
1 0 0 0 0 0 0 0 0 3
3
2 3 0 0 3 0 3 0 0 3
0
3 112 5 19 6 22 24 34 6 2
0
5.1.1 Junctions/Nodes
Each junction is represented by a node in the simulation network. These are sub-
divided into ‘internal’ and ‘external’ nodes.
Internal simulation nodes must be specified in full as described in 6.4.1. They may
be further subdivided into 4 “types”: traffic signals, priority junctions, roundabouts
and ‘dummy’ nodes. Traffic signals should be self-explanatory and includes
pelican crossings. A ‘priority’ junction includes all form of ‘give-way’ junctions
including, for example, merges and uncontrolled junctions. Roundabouts are sub-
divided into two sub-types: those where U-turns are explicitly allowed (type 5) and
those where they are not (type 2).
They do, however, have their uses. Dummy nodes need to be defined where
there would otherwise be two distinct links between the same two nodes in order
that the two links have separate identities. This occurs, for example, where an
exclusive bus lane is to be distinguished from the normal link. They may also be
used to identify the access point of a centroid connector more precisely, e.g., on a
very long link, or to represent points where new intersections are to be introduced
in modified networks.
They are also often used to indicate intermediate points on curved links (a
previous recommendation) but the use of the GIS files (see 5.7) to describe link
shapes is highly preferable.
Further information on how dummy nodes are simulated is given in 8.1.1 and how
they are used in conjunction with link capacity-restraint curves in Section 8.4.4.
5.1.3 Roads
Roads between intersections are represented by “links”, which are numbered
sequentially in a clockwise direction about successive nodes. The actual link
numbers are calculated by the computer and remain largely invisible to the user,
to whom a link is specified by the nodes A and B at its upstream and downstream
ends respectively (A-node and B-node). However the user must ensure that the
links at each junction are correctly input in clockwise order (or counter-clockwise if
drive on the right - Section 15.6); otherwise largely uncheckable errors result.
As with nodes links may also have “alpha-numeric” names, e.g., link (1512,1513)
might be “Grosvenor Terrace”. These names are contained within the GIS file
(optionally) associated with each network file. See Section 5.7 for general details
and Appendix Z for specific format details.
Both directions of a “road” must be coded, even if the road is one-way. One-way
links are represented by specifying zero lanes (LANES below) to the non-existent
direction. For example a one-way road from node A to node B must be included
as a link at A from B (with positive lanes) and also as a link at B from A (with zero
lanes).
Generally speaking travel times on simulation links are assumed to be fixed at
their “free flow” values and link capacities, to be, in effect, “infinite”; i.e. much
greater than the junction capacities at their downstream end. However this
assumption may be relaxed and link speed-flow curves and explicit link capacities
modelled; see 8.4.4.
The minimum data required by the simulation stage for a road (e.g. times,
distances) is coded on the “Link Description Records”, Section 6.4. However note
that additional link data, e.g., a capacity index, which is not needed for the
simulation may also be defined using the buffer data records described in Section
6.6. See Sections 15.13 and 15.14 for a more complete description.
5.1.4 Turns
In addition each potential turning movement (including banned turns - see below)
is explicitly represented in the (simulation) network. Turns are assigned sequential
numbers which, like link numbers, are essentially invisible to the user who refers
to turns by a sequence of three node numbers A-B-C. It is essential that turns be
defined in strict clockwise order from each link, starting with the first turn to the left
(or counter-clockwise starting with the first turn to the right for drive on the right -
see Section 15.7.2).
The user must define a saturation flow (6.4.6) for each simulation turn; banned
turns are therefore coded by setting this turn capacity to 0.
U-turns are generally banned at simulation nodes and therefore need not be
explicitly coded EXCEPT for roundabouts coded as junction type 5 where they are
automatically generated. N.B. U-turns may also crop up in the slightly different
context of the border between simulation and buffer networks as explained in
Sections 18.9.1 and 16.6.4.
Unlike links turns have flow-dependent delays and flow-dependent capacities
determined by the simulation process. Further details may be found in Section 8.
Turning movements which must give way to other streams of traffic, for example
turns from a minor road giving way to the major arms at priority junctions, are
indicated by a series of ‘priority markers’. The degree to which these turns are
impeded depends on both the ‘major’ flow and the ‘acceptance gap’ defined by
the user. Detailed equations are given in Section 8.2.2. The main features of the
relationship between the ‘minor’ and ‘major’ flows are qualitatively illustrated in
Figure 5.1 which plots the minor road capacity C as a function of the major road
flow V for two different GAP values.
Figure 5.1 – Minor Road Capacity C versus major road flow V
SAT is the ‘saturation flow’ from the minor arm with zero opposing traffic. Clearly
as traffic on the major arm increases the flow from the minor arm decreases, and
as the required gap increases the minor arm capacity decreases as well.
only”; i.e. buses following fixed routes may use these turns/links but the vehicles
which are assigned routes within the assignment may not.
For detailed coding instructions please see 6.4.4 for bus-only restrictions or 6.7
(the 44444 data) for more general restrictions within simulation networks which
include bus-only as a special case.
Restrictions also include “penalties” where a penalty is an extra perceived cost
associated with using a particular link or turn and applied to the definition of
generalised cost within route choice. Penalties may be either “notional”, e.g. an
extra cost levied on uninformed drivers using a non-signposted rat run, or “real” in
the sense of a monetary toll imposed on drivers or an extra time added to lorries
travelling down a windy road. As with bans they are very often user-class specific.
In addition penalties may either be defined in pure time units (seconds) or in
monetary units (e.g., pence), in which case they represent tolls imposed on
(certain classes of) drivers as with road charges; see section 20. In either case
they are included as an element within the “fixed” link costs for assignment
purposes as opposed to the variable “time” component. Time penalties are
converted into generalised cost units as and when necessary using PPM
(although, since most of the time, generalised cost works in units of generalised
seconds, no explicit conversion is required). See 7.11.1.
Under certain circumstances it may be desirable to explicitly include time penalties
as part of “normal” time, e.g., for the purposes of skimming O-D times (15.27). On
the other hand, if the penalty times are more “notional” than “real”, they may be
excluded from, e.g., time skims. See 15.24.2 and 15.24.4.
There is, however, (post SATURN 10.3) one exception to this rule which is when
the user sets NO333C and/or NOXYC = T in &PARAM. In these cases MAXZN is
used to distinguish when a node number used within, respectively, the 33333 or
55555 data records is a zone or a node and therefore the value defined in
&PARAM must be correct in the first place. See 6.8, note 11).
Zone numbers may normally have up to 5 digits (i.e., be numbered up to 99999)
although the use of 5 digits is not normally recommended. It may, for example,
create problems with certain data input fields (see 6.8) where a C followed by the
zone number is used to distinguish between zones and nodes and the complete
field must be contained within 5 columns (although these problems are not
insurmountable). In addition the matrix manipulation program MX generally uses
5-column fields for the input of zone numbers and in output formats. With buffer-
only networks with DUTCH = T (implying 8-digit node names) 8-digit zone names
may, strictly speaking, also be accepted within network programs but matrix
manipulation would still be extremely difficult.
Zero or negative zone numbers are definitely not allowed in networks (fatal errors)
although, strictly speaking, it may be possible to introduce them into matrices.
However the practice is certainly not recommended and will be made fatal ASAP;
see 10.2.2.
The total number of zones is limited to, e.g., 400 (see 15.28) within certain matrix
programs although the main simulation-assignment programs are not restricted in
this way.
Zone numbers or “names” must also be defined on the trip matrix data input
described in Sections 4 and 10.2.2. Thus if the lowest zone number is 5 this
information should be included as the first input number for the first row.
Clearly it is best if both network and matrix adopt the same system of either
sequential or named zones to avoid any possible confusion. However SATURN
programs which use both a network and a trip matrix (e.g., SATALL) will overlook
certain differences but not all.
For example, it is permissible to have “names” in one and sequential numbering
in the other (as long, of course as the number of zones is the same in both);
SATURN assumes that the two sets correspond one-to-one. Equally, it is (just)
acceptable for both to have “names” but a different “system” of names in each
case (e.g., 1, 3, 5 in one, 10, 20, 30 in the other) - although highly questionable
and it should provoke a Serious Warning at least.
However, a Fatal or Semi-Fatal error will result if the same zone name appears in
different positions in both network and matrix. For example, if the network zones
are 1,3,4,5 … and the matrix zones are 1,2,3,5… then zone 3 appears as either
the 2nd or the 3rd zone. Highly suspicious! And new in 10.6.
It is possible to change the zone names in a trip matrix to match those in a
network by using MX as explained in 10.3.3.
As with nodes zones may also be given an “alpha-numeric” name, e.g., zone 5
might be “Mayfair”. These names are contained within the GIS file (optionally)
associated with each network file. See Section 5.7 for general details and
Appendix Z for specific format details.
5.1.7.1 Sectors
A further optional level of zonal definition, “sectors” which are aggregates of
zones, was introduced with SATURN 8.2 and later extended, by implication, to
apply to nodes as well. Although the number and hence the size of the sectors is
arbitrary the basic intention is that they should NOT be “large” such that the study
area should be divided into 10 or fewer sectors. With more than 12 sectors it is
sometimes difficult to print full sector-to-sector matrices on terminal screens.
Unlike nodes or centroids in SATURN sector values of 0 are permitted (and, see
below, is used as a default). The normal program array limits permit sector
numbers in the range 0 to 20; hence a total of 21 sectors but not sector 21 itself.
Sectors may be defined most easily if you use a “hierarchical” zone numbering
system, e.g. such that zone 680 is by definition in sector 6, zone 564 in sector 5,
etc. Thus a single parameter IROCKY (pronounced “hierarchy”!) - 100 in the
above example - is sufficient to define the conversion of sector to zones. Note
here that, e.g., zone 50 would be in sector 0.
Otherwise the correspondence may be explicitly defined using either the ‘555’
network data records - see Section 6.8 - or the GIS file - see Section 5.7.
In either case all zones whose sectors have not been explicitly defined will be
assigned the default sector of zero. This may cause some confusion if you are
explicitly assigning sector 0 to some zones since the explicit and default settings
may be confused; this practice is not recommended and generates a warning
message in SATNET.
As with zones, sectors cover both buffer and simulation networks - and indeed are
independent of the level of network definition. The only explicit property
associated with sectors, apart from their constituent zones, are co-ordinates - see
6.8. These are used by P1X in plotting sector row and column totals.
Note as well that the concept of sectors applies to both network and matrices so
that the matrix program MX may also use sector definitions for both display and
manipulation, e.g. factoring; see 10.2.5. In addition the use of both TFL rules
and/or IROCKY may be applied to both network and matrix files.
numbers). Similar rules apply to node numbers with 5 or more digits. (It is
assumed that if a zone/node has less than 5 digits then the TfL rules do not apply
and that zone/node would be allocated to borough/sector 0.)
We further note that traffic borough numbers are grouped together in sets of two
thousand, i.e., node/zone numbers 10xxx and 11xxx are both in the same traffic
borough 1, the City of London, (since there should be no node numbers less than
10,000), as are 12xxx and 13xxx in traffic borough 2, Westminster, etc. etc. Thus,
in total, there are 45 possible traffic boroughs with numbers in the first ranging
from 10,000 to 11,999, in the second from 12,000 to 13,999, etc., and in the last
(45th) from 98,000 to 99,999..
In general traffic boroughs should be geographically “self-contained” in that nodes
in any particular borough should: (a) only be connected to other nodes in the
same borough or (b), if they lie on the boundary, to at least one other “interior”
node in addition to their external connections. Thus a node which is entirely
surrounded by nodes in different traffic boroughs has (probably) been numbered
incorrectly.
A similar error may arise with zones which are in traffic borough N (according to
their first two digits) but which are entirely connected to nodes which lie in different
traffic boroughs.
Traffic boroughs may be used either to automatically aggregate zonal trip matrices
to a borough-to-borough matrix (see 10.4.4, 10.16.2 and 10.20.24) or to output
network summary statistics disaggregated by borough (see 11.11.4 and 15.59.1).
Figure 5.2(c) illustrates a 2-way link into a roundabout which, near the point of
entry, has been split into two short one-way links to represent the physical
separation of the entry and exit points at the roundabout. In this case Z-B-A
represents a chain as does R-B-Z.
Figure 5.2(d) a 4-arm junction at B which basically boils down to two straight-
through chains A-B-D and C-B-E.
In addition combinations of all the above examples may be created “in series” to
create sets of “super-chains”.
Note that chains are always a set of directional links even if the individual links
themselves are not one-way. Thus in Figure 5.2(a) we could have one chain from
Z to A and another from A to Z if all the links were 2-way (having a combination of
1-way and 2-way links between A and Z would be a fatal error). Note also that a
chain may not have any centroid connectors to intermediate links.
In order to help identify such possible adverse modelling conditions post 10.9 a
routine has been included within the network build program SATNET to identify in
advance any presumed occurrences of chains so that they may be consistently
handled within the later simulation and assignment phases of the model. A list of
all chains located is included within the .LPN file.
Applications of chains to blocking back are referred to in Section 8.5.5 and to
random delays in 8.6.4. Chained links may be displayed as a link data item via
P1X.
who have started with a conventional network and coded part of it as a simulation
network will find it necessary to “expand” the simulation zones into a series of finer
‘sub-zones’. In these cases it will also be necessary to “expand” the trip matrix for
these zones; this can be done using procedures within MX, see 10.16.3 and 10.4.
There are limits placed on the size of the buffer network which depend on the size
of the simulation network as well as the actual array dimensions within the
programs. If your network exceeds one of the limits this may be corrected most
easily by changing certain array dimensions within the program. See 15.28.
Problems may arise in coding a joint simulation/buffer network; further useful
information is contained in Section 15.11.
which point they increase rapidly to the congested values. On the other hand with
a low value of n, say 1 or 2, the transition is much more gradual. In general terms
high values of n are appropriate to high-capacity links without junctions at the end
to limit capacity, e.g., motorways, while lower values are more appropriate to low-
capacity urban roads where the effects of congestion are mainly associated with
the junctions. It should also be stressed that the choice of n values can strongly
influence the assignment results and that some care should be exercised in
setting them.
While the above relationship is essentially a link-based curve there is no reason
why it should not reflect delays at intersections as well, in so far as that it is
possible using a power curve. Thus the travel times input should include the
times to traverse the junction at the end of each link in addition to the link travel
time. (They therefore differ in that respect from the link travel times defined for
simulation links.) In addition the shape of the curve above capacity is specifically
set to represent the queuing behaviour on an over-capacity link, assuming that the
queue builds up linearly over the time period (LTP) simulated.
Section 15.9 describes ways in which existing speed-flow curves may be
converted into the “best” values of n.
We note that the V<C component of the cost-flow curve, eq. (5.1a), may also be
written in a “parametric” form as:
t(V) = t o + (t c – t o ) (V/C)n (5.2)
where t c = t o + ACn is the travel time at capacity. This form is sometimes easier
for user manipulation since it uses only basic variables and removes the necessity
to calculate the value of the coefficient A.
network level of detail may be perfectly adequate. However, for heavily congested
networks (or for heavily congested sections of network), the simulation approach
is recommended.
The problem of double-counting may be reduced, though not completely removed,
by the use of the “UNIQUE” parameter described in Section 15.48. UNIQUE was
first introduced in release 10.7.
♦ buffer nodes
♦ centroid connectors
♦ buffer links
♦ simulation links
♦ simulation turns
Thus within the simulation network each simulation node is “expanded” in order to
create a set of “mini links”, one per permitted turning movements, which connect
the assignment node at the end of the entry link to the assignment node at the
head of the exit link. See Figure 5.2 where 8 “mini-nodes” are created at a 4-arm
node with (up to) 12 “mini-links”. Only the 3 turning movements (assuming no U-
turns) from arm A are illustrated.
Banned simulation turns therefore do not appear within the assignment network.
Various arrays and/or procedures exist in order to map assignment nodes and
links with their counterparts in the simulation network and vice-versa.
Figure 5.3 – A 4 arm node N and its expanded assignment network representation
♦ Zones
♦ Buffer nodes
while each map link joins two map nodes. They therefore correspond to the
“lines” plotted on a PIX network and represent roads and centroid connectors
directly.
For technical reasons all map links are two-way whether or not the road they
represent is one-way or not. Various matching arrays are also included within the
map definitions in order to provide the correspondence between map links and
assignment links and vice versa. Map links may therefore be matched to
simulation links via the assignment network.
Note that simulation turns are not directly included within the map network
although clearly if, say, a route is traced in the map network from nodes A to B to
C then it is possible to identify the simulation turn A-B-C.
SATURN map networks may be “dumped” into text files consisting of node and
link data for potential transfer into other model systems; see 11.4.2.2 and
11.4.2.3.
Where newnet.DAT will become your new network file on exit from PMAKE. (Just
to confuse you, PMAKE will actually take you into P1X but PMAKE is used to
differentiate the commands between building from scratch and modifying existing
networks - see also later.)
You will be asked to define maximum and minimum screen co-ordinates and
whether you wish to import a bitmap as a back-screen to network building, or just
proceed with a blank screen. Continue takes you to the network building screen.
Here you can set both &Option and &Param parameter values (Section 6.3) which
will control the operation of the model and subsequent runs. More importantly, you
can start to build your network.
The philosophy adopted in SATURN network building is for the structure to be
defined initially at Buffer level, where nodes exist only as places at which links
join, with detail for nodes added subsequently by converting them from Buffer to
Simulation. Both activities are accomplished using PMAKE/P1X, but we must as a
first step define the structure of the network purely in terms of node positions and
their connectivity.
Click on Node Edits in the banner. The choice will be to define Nodes or (Buffer)
Zones. Choosing nodes allows you to position nodes with a single click. Active
options are shown in capitals in the banner, and you may switch between user
defined node names and the Auto-definition of names as required. A further option
allows links to be defined automatically between successive nodes, but see also
link definition options below.
Clicking on the Zone option in the banner allows the placement of zones in an
identical fashion. If you now continue, you will find that further options are now
open to you, including the ability to delete, re-number and re-position nodes and
zones. You will also be able to add further areas of network in future sessions
using these tools.
delete and change link directions. Splitting links is possible from both link and
node sub-menus.
Two options, in particular, are of interest. The first, conVert buffer, allows any of
the already defined nodes to be converted into simulation and applies equally to
networks just constructed in PMAKE as it does to imported networks. The second
allows structural changes to be made using the node and link definition and edit
options described above as part of PMAKE. The operations available under each
option are described below.
until the stage is defined, whereupon following stages can be defined. If a mistake
is made, stages can be edited once input is complete.
Once all stages have been defined, continue and you will be faced by the node-
editing menu in the banner. Here, you can select to edit node variables, such as
minimum gaps and modelling steps, link values, such as distance or number of
lanes, or turn details, such as lane allocations, priority markers and saturation
flows. Where links or turns are involved, the active one is always shown
highlighted on the junction plan in centre-screen, as shown below.
When complete, Quit and Save the node data (remembering also to Save the
node to an internal data file) and continue to the next. Note that by clicking on
Print you can view the node coding at any time.
where netname.dat is the name of the saved network data file. The most likely
thing to go wrong at this stage is that, with new simulation nodes created, you will
have connections straight from buffer nodes to simulation nodes without
intervening Externals. The easy way round this, as described earlier, is to set
AUTOX = T in the PARAM namelist section at the head of the netname.dat file.
Once a successful network build has been achieved, you are ready to assign your
trip matrix, although creating the trip matrix may be a bit more complicated than
simply drawing on the screen.
GIS files (where GIS stands for Geographical Information Systems *) are
supplementary files which contain essentially “background” data to be included,
for example, in network plots. Thus GIS files describe both “topological” data
such as political boundaries, geographical features such as rivers, railway lines,
* GIS files in SATURN should not be confused with “proper” GIS files as in MAP - INFO or ARC-
INFO. In fact a more accurate, if less impressive, acronym would be something like BIF for
Background Information File.
stations, etc. and “text” data such as names to be associated with nodes or links.
Their use enables plots to more closely resemble actual maps rather than
idealised representations of road networks - and hence more acceptable for
presentations.
The precise definition and specification of what GIS files contain is still somewhat
fluid but certain broad principles have been established. Thus:
♦ GIS files refer to areas, not to specific networks. You do not need to create a
new GIS file each time you add a new link to your network or change from a
“do nothing” to a “do something”.
♦ The data in GIS files is applicable to matrices as well as to networks, e.g., the
alpha-numeric zone names.
♦ GIS files are “text” or “ascii” files as opposed to “binary” files. It follows that
data can also be “translated” from other data sources by essentially “re-
formatting” without going through a SATURN program.
♦ Data has a “hierarchical” structure which controls the order in which the data
is displayed in P1X plots. Hence text is displayed AFTER in-filled areas so
that the name of a zone will over-print the coloured area.
Although primarily intended to be used by P1X the data within a GIS file is also
relevant to a number of other programs; thus SATLOOK, SATED, SATDB and
MX can all access GIS files.
More precisely the following sets of data can be included within a GIS file (such
that (a) is at the bottom of the hierarchy and is plotted first);
a) Closed “polygons” which enclose an area; e.g. a zone
b) Sets of contiguous straight lines - “polylines” - used to represent rivers or
railways, etc;
c) “Ikons”, i.e. standard symbols such as the BR symbol to represent a
railway station;
d) Text;
e) Alphanumeric link, node, zone and sector “names”;
f) Polyline data to display links as “curves” or as “arcs” of a circle rather than
straight line segments (see 5.7.3);
Node co-ordinates (which are also stored on network files but are included on GIS
files partly for convenience and partly so as to be accessible for matrix
applications).
Data sets (a) to (d) have certain “characteristics” associated with them. Thus they
have a choice of colour, areas can be in-filled or not, lines can have a width
(defined either in mm on the screen or in metres “on the ground” which is
translated into an equivalent width “on the screen” when displayed), and ikons and
text can have a size and colours. And of course all of them have spatial
coordinates. All of these are set by the user on the GIS file.
GIS files are “formatted” - thus fixed columns are used to define each
characteristic; the current conventions are specified in Appendix Z.
The filename of the GIS file to be associated with a network may be defined within
the network or matrix .dat file using the Namelist parameter FILGIS and that name
is then carried forward on the UF* files. Thus those programs which require data
from the GIS file can open the file automatically. Alternatively interactive
programs allow a GIS file to be defined from the Files Menu.
Within P1X the GIS data to be included in the plot may be selectively requested
(11.6.10); e.g., you can have the polygons but not the polylines, but you then get
all the polygons.
When curved links are created interactively within P1X three options are provided:
poly-lines, (single) arcs and circles.
♦ vehicle type;
♦ network restrictions;
♦ Similar problems may also arise within the demand (elastic) models
interfaced with SATURN assignments where (7.9) we may wish to distinguish
between two or more groups of trip makers who respond differently to costs in
terms of whether to travel by road or not but who may be identical in terms of
route choice.
♦ The number of user classes is set by the parameter NOMADS with the default
value of 1 for a single user class and an upper limit of 32. Their rules for
route choice are specified within the network specifications, e.g. sections 6.7
(link restrictions) and 6.11 (generalised costs).
Note that user classes, although normally referred to by their sequential numbers
1, 2, 3… NOMADS, may also have short (up to 40 character) text names
associated with them via the namelist parameters UCNAME ( ) input to SATNET
(6.3.4). These are used in, e.g., output LP files.
User class specific link flows may be displayed, e,g., within P1X, by using the
normal menus. They may also be obtained by using a “trick” involving DA codes
such as 3808; see Section 15.21.4.
Vehicle classes may be defined for each user class (within the 88888 network
data records; see 6.11) or bus company (see IBUSVC, 6.9.3) and multiple user
classes may be assigned to the same vehicle class. For example, if a user has
defined 5 user classes – say, cars (resident), cars (non-resident), taxis, LGVs and
HGVs then it might be natural to define 3 vehicle classes where class 1 would
include both car user classes plus taxis, class 2 would include (and be
synonymous with) LGVs and class 3 would be HGVs. Buses could be included
with either of the 3 vehicle classes above or assigned their own vehicle class
(e.g., class 4)
The number of vehicle classes used is not defined by an input parameter - as are
user classes by NOMAD - but is determined by the highest value used (up to a
maximum of 32). Like user classes they may be given text names - VCNAME( ) in
6.3.4 - of up to 40 characters to be used within outputs.
The long-term intention is that different vehicle classes will have different emission
and fuel consumption characteristics and some development work on the former
is now included in SATURN; see 15.33. Equally they may be used in the
calculation of tolls - see 20.4.1 – and in the updating of matrices within SATME2 –
see 13.4.6.
Note that it is not possible to have more than one vehicle classes per user class.
For example, if all car drivers are assumed to be identical in terms of their
generalised cost but drive a mix of vehicles then, in terms of assignment, it is most
efficient to define them as a single user class. On the other hand, in order to
model the different emission characteristics of different vehicles, it would be useful
to be able to split them into different vehicle classes. However, disaggregation into
vehicle classes may be only done by disaggregating the user classes as well -
which is not particularly efficient in terms of assignments. A compromise solution
would be to define car drivers as a single vehicle class but to define their emission
and fuel consumption coefficients by an appropriate weighted average.
Vehicle classes (and hence, indirectly, user classes) may also be assigned PCU
factors VCPCU (see 6.3.3 and 15.17.2), i.e., the values of pcu’s per vehicle which
are used as required to convert flows in pcu’s per hour into vehicles per hours.
[Recall that all trip matrices and therefore link flows in SATURN are defined in
units of pcu’s or pcu/hr so that VCPCU is used to convert them to vehicles when
required] VCPCU values are used, for example, in the calculation of total toll
revenues from pcu flows since, one assumes, tolls are levied per vehicle rather
than per pcu; see 20.4.1.
We note that the same PCU factors should also have been used if trip matrices
originally obtained in units of vehicles per hour had been factored into matrices of
PCUs per hour; see 4.3
Segments 6 and 7 also differ from all others in that a “title” may be included
following the opening 66666 or 77777 text; see 6.9.3 and note (3), 6.10.
Sub-Sections 6.1 to 6.11 give the format specifications for each of the 11 possible
data segments, followed by an example of a network file in 6.14.
Note that in certain instances the required format differs if the “DUTCH” option,
which allows buffer node numbers of up to 8 digits, is invoked. Places where the
alternative format is applicable are indicated below but the specification of the
DUTCH alternatives is given fully in Section 15.20.
In common with other input data files any record commencing with a * in column 1
is treated as a comment card; see Section 15-29. In addition all data segments
(apart from 2) may all refer to secondary files using the ‘$INCLUDE’ facility
described in Section 15.30.
This record * (or records) requests the major options available within SATNET.
The specification of options is via the FORTRAN namelist facility. The user
unfamiliar with this is referred to Appendix A. Essentially namelist provides a form
of free format input for defining values of variables within the program.
Parameters not explicitly mentioned take a default value. Namelist input runs to
as many records as necessary but it must always be preceded by (in this case)
&OPTION and terminated by &END.
Note that repeated variables (i.e., the same name is defined more than once)
generate semi-fatal errors since it is not clear which of the two (or more)
definitions is the correct one.
The following parameters may be defined by &OPTION; the first eight of which are
all LOGICAL and default to .FALSE., the last set are all character variables
(mostly file names) which default to “blank”:
UPDATE .TRUE. if a new network is being built which is very similar to a previous
network, in which case the previous network will be used to provide good
initial estimate of flow-delay parameters. N.B. If you wish to set WSTART
= T then UPDATE should also be set to T. See Sections 15.3 and 22.3.
PASSQ .TRUE. if queues are to be passed over from a previous time period. See
Section 17.3.
PLOD If .TRUE. the assigned flows from an input SATURN UF file are “Pre-
LOaDed” as fixed flows onto this network. See Section 15.5.
PLODFF If .TRUE. the pre-load data file uses free or CSV formats. See Section
15.5.4.
PLFF3 If .TRUE. 3 fields (A, B and C with C = 0) are required to define a link as
opposed to a turn for a free format pre-load data file. See Section 15.5.4.
WSTART If .TRUE. the assignment uses a “Warm Start” on its first assignment. N.B.
If WSTART = T then UPDATE should also = T. See Sections 21.3 and
22.3.
DIADEM If .TRUE. and the file named under UPFILE does not exist then setting
either UPDATE or WSTART to T does not result in a semi-fatal error. See
15.51.
CASINI If .TRUE. the internal CASSINI steps to over-ride various settings within
SATNET are invoked. See 15.54 and 15.54.6.1 for a full list of the
Namelist variables which may be over-written. (N.B. the variable name
CASINI has only a single S in order to confirm with the rule that all
namelist variables have to have 6 or fewer characters.)
UPFILE The name of the network (.ufs) file which is to be used under the UPDATE
and/or WSTART options. See 15.3 and 21.3.
PQFILE The name of the network (.ufs) file which is to be used under the PASSQ
option. See 17.3.
FILPLD The name of the network (.ufs) file which is to be “pre-loaded”. See 15.5
FILERL The name of the input .ERL file used to monitor errors. See 15.58.
FILCAS The name of the CASSINI Control file defining the convergence strategy
to be applied. See 15.54.6.
FILGAP The name of the ASCII CSV file reporting the convergence of the demand
model. See 15.54.6
CASTXT The CASSINI file which specifies the type of demand model used and the
file format (and other operations) that CASSINI will expect. See 15.54.6.
Thus the OPTION records might be specified by the following set of records which
explicitly sets UPDATE to .TRUE., PASSQ to .FALSE. and, by default, PLOD to
.FALSE.:
&OPTION
UPDATE=T,
PASSQ=F,
UPFILE = ‘LASTNET.UFS’
&END
For users preparing a new network file the default values set for all of these
parameters are those required and therefore we need not be concerned with them
at this stage. Thus you need only include a ‘null’ namelist record:
&OPTION
&END
Note that both UPDATE and PASSQ allow initial estimates of the cost-flow curves
to be extracted from a previous run; see 15.3. However if both are set to T the
data is taken from UPFILE in preference to PQFILE. UPFILE and PQFILE are
totally separate files, either/both needs to be defined as required by
UPDATE/PASSQ and they cannot both be the same file.
COMPAS If .TRUE. links from a common buffer node are sorted so that they
appear in the listings in clockwise order (counter–clockwise if
LEFTDR=F).
Default: .FALSE.
CROWCC If .TRUE. buffer centroid connectors with an input distance of zero are
replaced by a crow-fly distance. See 15.10.3.
Default: .FALSE.
DCSV If .TRUE. default speed-flow curves under 33333 (i.e., those with a D in
column 1; see 6.6 and 15.9.5) may be defined as free format (CSV)
rather than fixed columns.
Default: .FALSE.
DIDDLE If .TRUE. each assignment after the first commences with the final set of
flows from the previous assignment; if .FALSE. it starts with an all-or-
nothing load. See 9.4.
Default: .TRUE.
DOUBLE If .TRUE. and TOPUP = T certain rules for “over-writing” data apply. See
6.15.3.
Default: .TRUE.
DUTCH If .TRUE. node numbers in the buffer network may have up to 8 digits,
otherwise they are limited to 5. (N.B. If .TRUE. certain input formats
throughout the Suite are altered – see Section 15.20.)
Default: .FALSE.
ERRYES(I) Controls the listing of error messages: if ERRYES(I)=T then message I
will be printed; if F it will be suppressed. Range of I from 1 to 499. By
convention ERRYES(I:J) = T sets all values in the range I to J to T. See
Sections 2.9 and 6.12.2.
Default: .TRUE.
ERRNO(I) If ERRNO(I) = T then Warning/Serious Warning/Non-fatal Error I is
upgraded to a Semi-Fatal error. See 6.12.3.
Default: .FALSE.
ERTM (For Eastern Region Traffic Model). If .TRUE. then negative elements in
the trip matrix are assigned (Definitely NOT recommended for normal
use!) See Note 6, Section 4.3.
Default: .FALSE.
EXPERT If .TRUE. the level of print out generally is such that only an “expert”
would fully appreciate it.
Default: .FALSE.
EZBUS (Pronounced EASY-BUS!) If .TRUE. the bus route data on the 66666
data records (see 6.9.2) are in “free format”; if .FALSE. they are in fixed
column format.
Default: .FALSE.
FIFO If .TRUE., if and when a data item appears twice, the first data entry is
discarded and the last one used; if .FALSE. the first entry is always
used. See 6.15.
Default: .TRUE.
FOZZY If .TRUE. the program will try to “interpolate” unconnected nodes in bus
routes. See Sections 6.9.2 and 15.18
Default: .FALSE. (RECOMMENDED .TRUE.)
FREDDY If .TRUE. an output .rgs file containing a listing of all signal settings is
created. See 6.4.3.5 and 11.9.14.
Default: .FALSE.
FREEKY If .TRUE. then the extra KNOBS data records in the 33333 records are
input as “free format”; see 6.6.
Default: .FALSE.
FREEXY If .TRUE. then the supplementary node data in the 55555 records (i.e. X,
Y co-ordinates) are input as “free format”; see 6.8.
Default: .FALSE. (but recommended TRUE)
FREE77 If .TRUE. counts under 77777 are read as free format. See note 13),
6.10.
Default: .FALSE.
FREE88 If .TRUE. PPM etc. weights per user class under 88888 are read in a
free format as opposed to fixed columns. See 6.11.
Default: .FALSE.
FREEKN If .TRUE. the link data contained in an external KNOBS data file FILKNB
are entirely in free format, i.e., node specification as well as data. See
15.14.5.
Default: .FALSE.
FUNNEL If .TRUE. turns coded with a single Priority Marker M are assumed to
“funnel” into a single exit lane with their “major” turn. See 6.4.2.3 and
8.8.4.
Default: .TRUE.
ICING If .TRUE. elastic assignment uses a frozen trip matrix (which may be
defined here by FILICE). See 7.5.6.
Default: .FALSE.
ILOVEU If .FALSE. U-turns are allowed at external simulation nodes; if .TRUE.
they are (virtually) banned. See 18.9.1. N.B. Earlier versions of the
documentation had the T/F definitions confused and reversed; see
Appendix E.4
Default: .TRUE.
KERMIT (KilomEtRes and MInuTes!)
If .TRUE. the travel distances and times input on buffer link records are
Default: .FALSE.
PARTAN If .TRUE. use the PARTAN option within single user class Wardrop
assignment; see 7.11.7.
Default: .FALSE.
PHILIP If .TRUE. use Phil Barrett’s suggested formula for the flow reduction W-
factor in link weaving; see 15.40.3.
Default: .FALSE.
PRINT If .TRUE. descriptions of the simulation, buffer and/or assignment
networks are printed by SATNET in the LPN file.
Default: .FALSE.
PRINTF If .TRUE. flows are printed for the assignment network by SATEASY.
Default: .FALSE.
PRSFD If .TRUE. SATSIM prints full flow-delay parameters for each simulation
turn.
Default: .FALSE.
QUEEN If .TRUE. blocking back calculations are based on the value of the link
QUEue at the End of the simulated time period, if .FALSE. it is based on
the average queue. See 8.5.
Default: .FALSE.
Q105 If .TRUE. certain new rules introduced in 10.5 for calculating delays in
highly congested circumstances will be used; see 8.4.7. (In fact, post
10.9, the default value of T is always taken,)
Default: .TRUE.
RAGS “Random delays At Give-wayS” The additional delays due to “random”
effects are applied to “give-way” or “minor” traffic movements as well as
“major”; see 8.6.2.
Default: .FALSE. (Recommended .TRUE.)
RB106 New rules for the simulation of roundabouts as introduced in 10.6 are
applied; see 8.7.3. In fact, post 10.9, the default value of T is always
taken,)
Default: .TRUE. (.FALSE. pre 10.8)
REDMEN Elastic Assignment Parameter; if .TRUE. an initial estimate of the road
trip matrix (file FILRED) is used under elastic assignment; see 7.5.3.2.
Default: .FALSE. (Recommended .TRUE.)
REFFUB If .TRUE. calculate buffer turn (geddit?) flows post assignment (but only
if SAVEIT = T)
Default: .FALSE.
ROSIE If .TRUE. time-flow curves for turns in shared lanes are calculated as a
function of the total shared flow, not the individual turning flow. See
8.4.3 and 7.1.3.
Default: .TRUE.
UNIQUE If .TRUE. only a single queue is allowed to form on a set of over-
capacity buffer links which are in series. See 15.48
Default: .FALSE.
UPBUS If .TRUE. then bus routes start/end at the top/bottom and of simulation
links. See 6.9.2 and 11.7.2.1.
Default: .FALSE.
USEUFO If .TRUE. analysis programs such as P1X, SATCH and/or SATLOOK
use .UFO files in preference to .UFC by default (if they exist – see
SAVUFO above). See 22.5.3.
Default: .FALSE.
WHATHO If .TRUE., a system optimal assignment is carried out as opposed to a
user optimal; See Section 7.11.9.
Default: .FALSE.
WINDY If .TRUE. use the modern window-style terminal display which does not
“scroll”.
Default: .TRUE.
WRIGHT If .TRUE. certain warnings etc. are upgraded to semi-fatal errors. See
6.12.2.
Default: .TRUE.
ZILCH If .TRUE. no trip matrix is assigned prior to carrying out a one-off
simulation. See 9.12.13
Default: .FALSE.
Default: 1
INKS_S The number of incremental assignment steps to be applied at the start of
a SAVEIT assignment as opposed to a single all-or-nothing. See
7.11.13, 15.23.2 and 15.57.6.
Default: 0
IPERT Control of perturbation/Warm Start mode under path-based and OBA
assignment. 1 – Perturbation used; 0 – Not. See 21.3 and 21.7.
Default: 0
IROCKY By default the sector corresponding to a zone may be derived by
dividing the zone number by IROCKY (a very bad spelling of
HIERARCHY!). If 0 it does not apply. See 5.1.7.
Default: 0
ISTOP Used in the test for convergence of the assignment/simulation loops.
The loops stop automatically if ISTOP % of the link flows change by less
than “PCNEAR” percent (default 1%) from one assignment to the next.
See also RSTOP which now effectively replaces ISTOP: any integer
values of ISTOP which are explicitly input are automatically converted to
real values of RSTOP. Section 9.1.2, 9.2.5 and 9.2.6.
Default: 98 % (Changed from 90% in 10.5 and 95% in 11.3)
IXSHFT Adjustment used in converting from SATURN coordinate system to
EPSG system. See 6.8.
Default: 0
IYSHFT Adjustment used in converting from SATURN coordinate system to
EPSG system. See 6.8.
Default: 0
KANGA A “wild card” number used within bus routes to enable a route to exit
from one (coded) network node and re-enter at another node. See note
12, 6.9.2.
Default: 9999
KARL Maximum number of certain repeated error messages (e.g., coded
distances different from cow-fly distances) which are printed, after which
they are suppressed.
Default: 50
KDF(u) Choice of a cumulative density function under KOB = 3 for User Class u.
See 7.2.3.3.
Defaults: 1
KLUNK Choice of method for variable speeds under CLICKS with values 0, 1 or
2. See 15.47.2
Default: 0
KNOBS Number of extra data fields included on the buffer data records – see
Sections 6.6 and 15.14.
Default: 0
KOB “Kontrol of Burrell” – sets the type of random link cost distribution used
under SUE: 0 – Rectangular 1 – Normal 2 – Modified Normal 3 – Input
density function. See Section 7.2.3.1.
Default: 0
KOMBI After “KOMBI” assignment/simulation loops the assigned flows are
averaged with those from the previous assignment in order to avoid
oscillations. A value of 0 implies that averaging never takes place (the
default). See Section 9.3.
Default: 0
KONSTP “KONtrol of SToPping Criteria”. The stopping criteria for assignment –
simulation loops are based on either: ISTOP (KONSTP = 0); %GAP
value (1); CPU time (2); ISTOP and/or CPU (3); %GAP and/or CPU (4);
%GAP and ISTOP (5); %GAP or %ISTOP (6). See Section 9.2.3
Default: 5 (Changed from 0 in 11.3)
KORN “Kontrol of Random Numbers” – the seed value for the series generation
of random numbers used in SUE. See Section 7.2.4.
Default: 0
KPHMIN / Simulation link speeds and free flow speeds on buffer links with speeds
KPHMAX outside the range KPHMIN to KPHMAX generate warning messages in
SATNET.
Defaults: 10 and 100 kph respectively.
LCY Duration of the common traffic signal cycle time in seconds. See
Section 8.1.2 and 15.15.3.
Default: 75 seconds.
LRTP Length of the “Random” Time Period as used for calculating random
delays at traffic signals and/or major arms at priority junctions. See
Section 8.6.1.
Default: 0 (But positive values are recommended, e.g., equal to LTP)
LTP Duration of the simulated time period (in minutes). See 8.1.2 and 8.4.5.
Default: 30 minutes.
MANOFF The signalised simulation node number used as the reference point for
all optimum offsets set by SATOFF. See 12.2.3.
Default: 0.
MASL Maximum number of assignment/simulation loops. See 9.1 and/or 9.2.3.
Default: 15.
MASL_F The number of simulation assignment loops over which the input trip
matrix is kept fixed under elastic assignment; see 7.5.3.4.
Default: 0
MASL_M The minimum number of assignment-simulation loops to be undertaken
Default: 0.5
AK_MIN Minimum value for averaging flows under AUTOK. See 9.3.2.
Default: 0.0 (i.e., does nothing although a value of 0.20 is tentatively
recommended)
ALEX Average Length of a vehicle (Externally) in a queue; used to estimate
the actual length of a queue from the number of vehicles. See 8.5.
Primarily used to model blocking back.
Default: 5.75 (metres per pcu).
APRESV “Apres Vous” controls the default “weight” assigned to merging traffic in
terms of the lane choice by the “major” traffic for turn priority markers M
– See Section 8.8.3.1. Link-specific values may be set later; see 6.4.14
and/or 6.13.4.
Default: 1.0
BBKING Minimum queue/stack ratio at which blocking back is applied (Blocking
Back Kicks IN – Geddit?) See 8.5.6. (N.B. Only applied if BB109 = T.)
Default: 1.0
BCRP “Buffer Capacity Restraint Power” – used to define a default “power” for
speed-flow curves in the buffer network – See Sections 5.4 and 6.6, note
(4).
Default: 5.0
BETA(u) Elastic assignment elasticity parameter (for user class ‘u’) as used under
MCGILL = 1, 3 10 or 11. N.B. Units of inverse seconds. See 7.7.1 and
7.7.6.
Default: 0.1 (units of inverse generalised seconds)
BETA_2 (u) As BETA but for nested logit models. See 7.6.3 /7.6.4.
Default: 0.1
BETA_D (u) As BETA but for distribution models. See 7.10.2.
Default: 0.1
BETA_T (u) As BETA but for time-choice models. See App-V.
Default: 0.1
BTKNOB(b,k) Bus Times (in seconds) per KNOB data field k for all routes within bus
company b. See 15.44.
Default: 0.0
BUSPCU(b) Factor to convert bus flows for company ‘b’ into P.C.U.’s. See 6.9.1,
and, in particular, 6.9.3 for subscripted values of BUSPCU.
Default: 3.0
BUSSPK(b) Bus Stop Seconds Per Kilometre for all routes within bus company b.
See 15.44.
Default: 0.0
CAPMIN Minimum capacity to be expected for any (give-way) turn; any junction
with lower capacities will be factored up to CAPMIN (pcu/hr). See 8.2.
Default: 30.0
CLICKS(n) Maximum free-flow speed in KPH for user class n. See 15.47.
Defaults: 0.0
COBAF Factor to be applied to link flows under the SATCOBA facility. See
15.42.
Default: 1.0
DEFCAP Default capacity per lane of a link which is “out-bound” to an external
simulation node.
Default: 1250 pcu/hr.
FISTOP Wardrop assignment stopping parameter monitoring the fractional
improvements in the objective function. See 7.1.5.
Default: 0.05 %
FLAREF The default number of PCUs which, by default, are able to queue in an
extra near-side (Filter) flared lane at either signals or priority junctions if
an F is coded in the lane field. See 6.4.9.3, 6.4.14 (for link-specific
inputs), and 8.2.6.
Default: 2.0
FLAREX The default number of PCUs which, by default, are able to queue in an
extra off-side flared (X-) lane at either signals or priority junctions if an F
is coded in the lane field. See 6.4.9.3, 6.4.14 (for link-specific inputs),
8.2.5.2 and 8.2.6.
Default: 2.0
FLPK Fuel consumption per pcu in litres per kilometre. See 15.32.
Default: 0.07
FLPH Fuel consumption per pcu in litres per hour. See 15.32.
Default: 1.2
FLPPS Fuel consumption per pcu in litres per primary stop. See 15.32.
Default: 0.016
FLPSS Fuel consumption per pcu in litres per secondary stop. See 15.32.
Default: 0.005
FRED An initial estimate of the effect of elastic assignment on the total number
of trips (for incremental demand models only). See 7.5.3.2.
Default: 1.0
GAP Minimum gap (in seconds) accepted by a vehicle which gives way at
priority junctions or traffic signals. N.B. This sets the universal default
value which may be over-ridden at individual nodes; see 6.4.1.
Default: 5.0 seconds (NB: historical default value)
XFSTOP Wardrop assignment stopping parameter for minimum step length. See
7.1.5.
Default: 0.05 %
XYFACT Adjustment used in converting from SATURN coordinate system to
EPSG system. See 6.8.
Default: 1.0
XYUNIT Number of metres corresponding to an integer value of 1 as used to
define SATURN node/zone co-ordinates. See 6.8.
Default: 1.0
N.B. Most namelist parameter names representing files have alternative spellings
so that, e.g., FILTIJ is also recognised by TIJFIL, FILCIJ by CIJFIL etc. etc.
In addition (post 10.9) the five data columns following directly on from the last
possible set of turn data (e.g., columns 76-80 if there were 5 turns) may contain a
value for TAX for that link; see 6.4.14 for precise formatting conventions.
(N.B. The following record, 2B, is only needed if a ‘*’ was coded in column 11
above AND LANES > 0, in which case an extra line containing link speed-flow
and/or other parameters is inserted. This option is relatively rarely used for short
links in central area but may be extremely useful for modelling motorway-type
links. See 6.4.12 and 6.4.14 for how to include extra data such as flares on
record 2B.)
N.B.
♦ If more than 5 movements are required they are continued onto a second
record with the 6th A-node appearing in cols. 26-30 of the second
record, etc
♦ STAGL and INTG (stage duration and inter-green) are normally input as
integer seconds but it also permissible to define them as real quantities
(i.e., 16.84 as opposed to 17) as long as the numbers fit within the
allocated column limits. See 2.8.3.
G A turn which must give way (from a minor road) at a priority junction.
X Opposed right turn from a major road at a priority junction which needs to
cross the major flow in the opposite direction, OR an opposed right turn at
traffic signals which must cross the major flow from opposite arms.
M A turn which “merges” with another turning movement at a priority junction.
F A permanent filter at traffic signals with 100% green (generally to the left but
occasionally to the right).
W A weaving movement between traffic entering and leaving (typically) a
motorway.
Q A downstream motorway merge; see Appendix Q.
BLANK No opposing flow.
While the modifiers (which are used relatively infrequently) must be one of:
C To denote a “Clear” or reserved exit lane used after G or X;
D A “Diamond Cross”, i.e., to convert hooked into non-hooked or vice-versa;
used after G or X;
E Both C and D apply.
FURTHER NOTES:
6.4.2.1 Giveways (G)
The G priority marker indicates either a “give-way” or a “sharing” manoeuvre
whereby a turn marked G gives way to all “major” turning movements (i.e. those
without any priority marker or an X) but “shares” with other give-way movements.
The movements which affect a G-turn are either those which it crosses or those
with which it shares an exit; these are determined by SATURN from the geometry
of the junction.
Thus in the above figure if the turn S-O-E were coded G it would give way to the
major road flows W-O-E and E-O-W but would “share” with movements N-O-S
(crossing) and N-O-E (shared exit). On the other hand it is unaffected by turn W-
O-N which it neither crosses nor shares an exit with.
If movement 1 “gives way” to movement 2 this means that the capacity for
movement 1 goes from its (otherwise) maximum value down to zero as the flow
Since an M turn only gives way to traffic in one lane of one movement it is less
restrictive than a G marker.
Merge markers may occur either on their own (a “single-M merge) or in pairs for
two turning movements from different junction arms (a “double-M” or Y-merge).
The distinction is explained in the next two sub-sections.
The detailed modelling of merges is discussed further in Sections 8.2.2, 8.8.3 and
8.8.4. Appendix M discusses some of the issues involved in modelling merges
while the Q-marker is closely related to merges on motorways (see Appendix Q)
The following rule is used to determine the “major” turning movement with which a
turn coded M merges. The opposing turn must (a) share the same exit arm, and
(b) be the first turn from an “off-side” link (in a counter-clockwise direction for drive
on the left) to do so. In virtually all cases the turn marked M will be the first turn
out of a link and will merge with the second turn from the previous link. Thus, in
the above diagram, D-B-C marked M is the first turn out of D-B and it merges
(“near-side”) with the second turn A-B-C out of link A-B.
However more complicated merges may also be modelled under the above rule.
For example, a turn may merge with a major “near-side” flow provided that no
suitable “off-side” flow is detected first. (A near-side merge is found by the
program working its way through off-side roads until it comes to the near-side;
hence the reason that there must be no off-side flows.)
Thus in the schematic diagram below (where all roads are one-way, A to N, B to N
and N to C) if turn B-N-C were coded M it would merge as the minor road with A-
N-C as the major flow, i.e., on its “off-side”. However, if A-N-C were coded as M it
would be the minor arm merging with B-N-C as the major arm on its near-side.
If, given the one-way roads in the above figure, the M-marker is on B-N-C then the
lane into which B-N-C would merge would be the inside lane on A-N. However, it
is possible to use an M-marker on B-N-C if B-N were two-way and there were a
left-hand turn A-N-B. In this situation the choice-of-lane rule is modified so that B-
N-C merges with the inside lane used by A-N-C. So if A-N-B had an exclusive
inside lane the merge would be with traffic in the second lane on A-N.
Prior to release 10.8 merges into outside lanes were NOT correctly recognised
and so the above configuration would have resulted in strange results. See Note
12 in Appendix E-4.
(2) The merging operation is more a question of two parallel streams being
brought into lateral contact without any significant restriction on total exit flow.
This distinction – and possible consequences – are discussed in greater detail in
Section 8.8.4.
Thus, with a “funnel”, there is a definite presumption that (all) the traffic from the
turn marked with the M and the single lane of traffic from the “major” turn with
which it merges both exit the junction via the same single lane Into which they are
“squeezed” or “funnelled”. Thus, in the above example of a slip road onto a major
road, both the slip road traffic and the inner lane of the major road should exit onto
the inner lane. If not, e.g., if the M-turn has an exclusive exit lane, then an M
marker may not be appropriate.
The choice of two forms of options was first introduced in release version 10.8
Several parameters are available to distinguish between funnel and lateral
merges. Thus set the “global” &PARAM FUNNEL to T to set all merges to funnels
(default F). Alternatively the C priority modifier (see 6.4.2.6) defines a merge as a
lateral merge (C = “clear exit”) independent of FUNNEL. And, finally, setting M108
= F ignores the distinction totally and the modelling of merges reverts back to pre
10.8 calculations.
Finally, note that the choice may not be made purely and simply on the physical
configuration of the merge but on how the user wishes to model it. For example,
the capacity restriction effects of a funnel may also be modelled by creating a “Q-
node” or a “stopper node” immediately downstream of the merge point, in which
case defining the merge as a funnel could be effectively double-counting.
6.4.2.4 Filters at Signals (F)
Turns coded F at traffic signals “give way” (in the same way that G movements
give way) to traffic in their exit road (during those stages where there is other
traffic into the exit road) but are assumed to have 100% green time and therefore
they need not be mentioned explicitly in the stage definition records. F turns
would generally be expected to have an exclusive lane, as illustrated in the
diagram below, but this is not absolutely compulsory. They may be either left or
right turns (although left - nearside - is most common) but must be either the first
turn to left or right.
Here A-E-D represents a 2-lane motorway and B-E-D a 2 lane parallel slip road.
Four turning movements are possible:
A-E-D Stay on the motorway
A-E-C Exit the motorway
B-E-D Join the motorway
B-E-C Stay on the slip road
Lane allocations are not shown in the diagram and are of course set by the user
but for the sake of illustration we shall assume that the “straight on” movements A-
E-D and B-E-C can use both lanes while A-E-C may only use the single nearside
lane and B-E-D, the single offside lane.
Movements A-E-C and B-E-D are linked together via a weaving section and both
would need to be coded with a priority marker W. This produces the following
potential give-way and/or sharing rules.
A-E-D: Unopposed
A-E-C: Shares with its co-weaving movement B-E-D and gives way to any B-E-C
flow which uses the offside slip road lane.
B-E-D: Shares with its co-weaving movement A-E-C and gives way to any A-E-D
flow which uses the nearside motorway lane.
B-E-C: Unopposed
NOTES
In addition to give-way and/or sharing reductions in capacity there may also be
reductions due to lane sharing: e.g. A-E-C and A-E-D may both share the
nearside lane.
W priority markers must always appear in pairs with, for fairly clear reasons which
are difficult to specify succinctly, certain geometrical rules. Pragmatically this boils
down to the rule that the W’s must appear in the same column on two successive
link records
Weaving may also take place between two junctions, e.g., on a motorway, which
are separated by a finite distance; see Section 6.4.9.4 for coding inputs and
Section 15.40 - and 15.40.7 in particular - for a discussion of the differences (and
similarities) between the two methods. Note that both are indicated by a W marker
but in different locations.
6.4.2.6 Clear Exits [C]
An example of a turn with a “Clear Exit” - turn modifier C - is given below
Here the S to E movement, indicated by a and coded with a turn priority marker G
and a modifier C, has its own exclusive exit lane and therefore need not give way
to ‘b’ vehicles on the major road W-E. However they do give way to the W-S
vehicles (indicated by d) and the E to W movements (indicated by c) since they
must cross these movements.
Hence any movement with turn modifier C only gives way/shares with movements
that it must cross but not with movements with which it simply shares an exit.
In the above example had S-E only been coded as G it would have had to give
way to the W-E movements as well.
C markers may follow an X or a G and may be used for any turn except the first
(since the first turn can only share its exit, by definition it cannot cross any
movements).
In addition, post 10.8, they may also follow an M-marker to indicate that the turn
has a clear exit and does not “funnel”; see 6.4.2.3. Plus, post 10.9, they may also
follow a F priority marker at signals indicating that the filter turn has its own clear
exit lane and does not have to merge with or give-way to other traffic entering the
same link at the same time.
A further post 10.9 feature is that SATNET checks whether, given the number of
(downstream) lanes on an exit arm and the number of entry lanes used by turns
entering that arm, there appears to be available lanes for a clear exit. For
example, in the above diagram, there are two exit lanes to E but the turn W-E only
has one lane at its entry, suggesting that there is one lane available to S to enter
the exit to E. Had there been just one lane to E this would not be the case.
Warning 98 detects such instances and prints appropriate messages. N.B.
Warning 98 is only a suggestion, nothing more.
The default situation is as set by NOTUK; hence with the “UK” default value
NOTUK = 0 interference as in (b) is assumed; coding a turn priority modifier of D
would convert the situation into no interference as in (a). Equally if NOTUK = 1 or
3 (see 15.7) then the default is (a) and a D for an individual turn converts to (b).
Hence the D modifier is essentially a “toggle” which switches between the two
possibilities.
Logically both turns should be coded as D’s or neither, but there is no absolute
requirement that this is coded (apart from Serious Warning 167 resulting).
Users should be made aware that situation (a), no interference, is preferable in
the sense that it makes overall convergence easier. Therefore, if the situation is
likely to occur at one or more junctions, it is worth checking that it has been
coded, e.g., by the use of markers X and D. Warning 97 prompts.
6.4.2.8 Hooked & Clear Exit Lanes (E)
This indicates that both the C and D modifiers apply, e.g. a hooked/unhooked
movement with a clear exit lane.
The durations of the stage time and the inter-green period are defined in fields 1
and 2 on Record Type 3, i.e., columns 11-15 and 16-20 respectively. See also
6.4.13 for how to define upper and/or lower limits on the stage green times.
6.4.3.1 Continuous Green Movements
Under certain circumstances the inter-green period is set equal to zero. For
example, if on a particular arm a left filter arrow is displayed, say, 10 seconds after
the “main” green phase begins this would be coded by having one stage of length
10 seconds and zero inter-green followed by another stage in which the left turn is
added to the list of green movements.
Zero-length inter-greens therefore imply that movements which are green in two
successive stages must be continuously green over both stages.
The same also applies, in general, to two successive greens with non-zero inter-
greens. For example the inter-green period might represent the gap between the
display of straight-ahead and left arrows in the first stage and of straight-ahead
and right arrows in the second, in which case the straight-ahead movement
continues as green during the inter-green.
The general rule is therefore that movements which are green during two
consecutive stages are also green during the inter-green, with certain exceptions:
(i) If the signals have only one stage (in which case every possible movement
must be coded as green during that stage) it is assumed that all movements
are red during the inter-green. This situation commonly occurs in the
representation of pedestrian signals at a node in the middle of the block.
(ii) Similarly at junctions with only two arms (e.g., pedestrian crossings again)
but multiple stages all inter-green periods are red for all movements. This
allows for pedestrian signals to be “double-phased”.
(iii) Right turners which are coded with an X priority marker but are (unusually?)
green in every stage are assumed to be red during every (positive) inter-
green period.
(iv) If the inter-green time is coded by a negative number, in which case the
absolute value gives the true inter-green time. This facility is introduced to
deal with any possible ambiguities.
Criteria (ii) and (iii) were first introduced in release 10.6.
6.4.3.2 Amber Phases
Note that, as implied above, we do not explicitly model amber phases - signals are
considered to be either “red” or “green” - although it is possible for the coder to
allow for vehicles “stealing” a certain amount (typically about 1 or 2 seconds) of
the post-green amber phase by artificially extending the green phase.
6.4.3.3 Stage Times
The input values for stage and inter green durations need not add up to the total
cycle time (LCY). If they do not, stage times will be factored by the program so
that the sum = LCY. Inter-green times, however, remain as input on the
of the flows, depending far more, for example, on whether the road is residential,
shopping, divided highway, etc. This is not to say that TOTAL travel times are
independent of flows, but that the main relationship between flows and delays
occurs at intersections, and it is these relationships that SATURN seeks to model
in depth. Conventional link-based speed-flow relationships are therefore generally
not part of the simulation network unless one explicitly uses the link speed flow
facility described in 6.4.12. (See also Section 15.13).
In most cases therefore the times or speeds may be thought of as “free-flow”
times or speeds. However an example of a case where they might not be free-
flow would be a motorway-style road with grade-separated access and exit points
where intersection delays would be minimal but the effect of flow on cruising
speeds might be significant. In such cases observed speeds would probably be
the most reliable input (unless of course link speed-flow curves were used -
6.4.12).
Link distances should be coded from the centre of one junction to the centre of the
next (but coding them as entry to exit lines would make virtually no difference).
♦ Number of lanes
♦ Lane widths
♦ Visibility
♦ Turning angle (e.g., straight ahead vrs 90° right or left, sometimes
measured in terms of a “turning radius of curvature”)
We would strongly recommend organisations to set up their own sets of tables
and/or formulae, cross-classified by one or more of the above criteria, such that a
modeller, having “measured” the essential parameters above, may simply look up
/ calculate the appropriate saturation flow.
One major advantage of having standard procedures as above is that two different
coders, given the same junction to code, will come up with saturation flows which,
if not identical, will at least be close.
6.4.6.3 Consistent Saturation Flows by Lane
Of the various factors listed under 6.4.6.2 above all are effectively independent of
the individual turn being considered apart from viii), the turning angle (or turn
radius). Qualitatively one would expect that the saturation flow for vehicles going
straight ahead would be greater than, say, for vehicles turning at right angles
either to the left or to the right. It is, however, difficult to specify the exact form of
the relationship; different modellers will have their own personal or in-house rules.
It follows that it is very difficult for a computer program to say that if a straight
ahead saturation flow has been coded as 2,000 pcu/hr then a turn saturation flow
of only 500 for a 90° turn out of the same lane is “wrong”.
Nevertheless it is important to be able to at least warn users when input values
appear to be inconsistent. In order to do so SATURN adopts the arbitrary formula
that a turn through an angle θ (where θ = 0 implies straight ahead) will have its
saturation flow reduced by cos (θ/2) relative to straight ahead. Thus the saturation
flow for a right angle turn is reduced by a factor of cos(45°) = 0.707.
SATNET applies a consistency check by:
♦ Calculating a saturation flow per lane for each turn equal to its input
saturation flow divided by by the number of lanes;
(Note: the above layout represents the use of the right turn FLAREX lane but also
equally applies to the left-turn FLAREF lane).
A represents the ahead movement in the “main lane” while F represents the flared
movement which diverges from the main lane into the flared lane.
With flared lanes (nearside and/or offside) defined the position on the link at which
lanes are defined has shifted upstream away from the stop line such that the
number of lanes defined for each input arm should equal the number of upstream
lanes at the point where the flare(s) begin. Thus, in the above diagram, the link
would be defined as having two lanes, not three as at the stopline.
In addition the allocation of turns to lane is also defined at the point where the
flare begins. In the above diagram the ahead movement would be allocated to
lanes 1 and 2 whereas the F movement would be allocated to lane 2 only (the
offside lane).
Thus a flared lane is definitely modelled as an added lane at the stop lane but one
which does not go the full length of the link as opposed to modelling flared lanes
as being definitely present at the stop line but subtracted at some point
upstream. The reason for choosing this (somewhat arbitrary) definition of the
number of lanes and the allocation of lanes by turn is to be able to correctly model
the choice of lanes by turns and the capacity reduction effects within shared
lanes.
In part, flared lanes deal with the problems of cars “squeezing around” blocked
lanes even if an extra lane is not explicitly marked “on the ground”. Using flared
lanes the potential need to code “artificial” extra lanes (as recommended pre
10.9.20; see above) has therefore become less acute. Thus the post 10.9 advice
is not to code extra lanes when in doubt but to code explicit flares.
Users should also note that:
♦ Length of the flared lanes: practical testing has shown that if the
length of the flared lane is more than 10 pcus, a full lane should be
coded.
The methods by which flared lanes are defined within a network .dat file are
described in sections 6.4.9.3 and 6.4.14
LANE NUMBERING
Note that SATURN lane numbers are counted from the nearside or kerb-side out
so that lane 1 is the “innermost” lane nearest to the kerb-side and the highest lane
(equal to the number of lanes as defined above) is the “outermost” lane nearest to
the centre of the road. Note, therefore, that any flared lanes are not explicitly
assigned extra lane numbers, their lane numbers are defined at the point of
flaring.
Successive turns (starting with the left turn for drive-on-the-left, right for drive-on-
the-right, and progressing clockwise/counter-clockwise) must obey certain fairly
basic traffic engineering rules. Thus there can be no empty lanes. Equally (drive
on the left) a right-turn cannot use lanes 1 and 2 while the straight-ahead can only
use lane 2 since that would imply that the right turns from lane 1 would need to
“cut-across” straight ahead traffic in lane 2.
Less urgently one should not have, say, a right-hand turn and a left hand turn
both assigned to lanes 1 and 2 since that would mean there could be traffic
turning right from the left hand lane having to weave with traffic turning left from
the right hand lane.
Violations of the former rule result in a Semi-Fatal Error whereas the latter is only
a Serious Warning.
6.4.9.2 Bus Lanes (B, S or T)
It is also possible to include bus-only lanes as part of the link simulation record by
including one or more B’s within columns 12-15; see Section 15.39 for full details
of how bus-only lanes are modelled in SATURN.
Briefly a bus-only lane is defined to be a “full-length” lane from the upstream entry
to the downstream stop lane exclusively used by buses (where “buses” in fact
includes any form of public transport vehicle as coded on the 66666 records;
6.9.1). Thus at the moment bus lanes with set-backs cannot be explicitly
modelled.
To define, say, a road with a total of three lanes, two for normal traffic and the
nearside lane reserved for buses, columns 12-15 should be coded ‘ B2’; if the bus
lane were down the centre of a 2-way road (e.g. a tram line) or in the offside lane
of a 1-way road then it would be coded ‘ 2B’. Similarly ‘ B2B’ would represent
four total entry lanes with bus lanes in both the nearside and offside of the
roadway.
N.B. Serious Warning 165 is no longer applied (post release 11.3.05) if the traffic
in the shared lane has alternative (further inside) lanes that it may use if it is
being blocked in the shared lane.
Similarly coding two outside lanes both of which are shared between X-turners
and straight aheads is strongly not recommended on the grounds that it implies
internal weaving of traffic. See Serious Warning 142 which, see Section 6.12.2,
may be converted to a NAFF error under WRIGHT = T.
6.4.9.6 Shared Lanes
Following on from the last point in the previous sub-section if two different turning
movements share two or more lanes (e.g., left-turners are allocated to lanes 1 and
2 and so are right-turners) then this implies that a right-turner from lane 1 would
have to cross in front of a left-turner from lane 2 in order to exit and vice-versa.
The lane allocation is permitted within SATURN but it does not represent good
engineering practice so therefore it is flagged as Serious Warning 142 or 162
(depending on whether or not X-turns are involved).
Thus a single lane may be shared between two or more turning movements (and
clearly this is very common); the problem only occurs when two adjacent lanes
are shared between two or more turns.
The problems become more acute when one of the lanes feeds into a flare since
in that case you might have the situation where a vehicle in lane 1 is trying to
cross over to the flare in (effectively) lane 3. Errors of this sort are flagged by
Serious Warnings 179 and 180 which default to NAFF errors under WRIGHT = T.
with the direct addition of any nearside or offside flares, i.e., FLAREX + FLAREF
(see 6.4.14).
Indeed much of the time the stacking capacity may just as well be left blank since
STACK is only used to model blocking back - see Section 8.5. As long as the
default value exceeds the queue on a link it has no effect whatsoever on the
simulation. However, if it does enter into blocking back calculations, it may be
important to set a “true” value, see 8.5.7, or to consider possible “corrected”
values to deal with possible intrinsic problems with the modelling logic; e.g., see
8.5.5.6.
If ALEX is zero, implying infinite capacity, then STACK is, in effect, infinite,
although the actual value stored will be zero. Hence setting ALEX to zero totally
suppresses blocking-back and in this case there is no real need to define STACK
at all.
The position of STACK on the record is clearly rather strange; logically the A-node
number should come first. The reason for this is historical as early versions of
SATURN did not include STACK. However, since in most cases the “stack field”
can be left blank, the ANODE will appear first.
We may also note that a negative stacking capacity may be input in order to
indicate one particular property, which is that a “link chain” (see 5.1.12) can not
be extended through this link. This has particular applications for blocking back
(see 8.5.5). If a negative value is input the absolute value defines the true stacking
capacity and a separate note is made of the negative input. Note that normally
negative stacking capacities would only be applied at 2-arm nodes where chains
are feasible although more complex nodes may also feature in chains.
Note that the additional link record 2B may also be used to define parameters
such as TAX, FLAREF and FLAREX; see 6.4.14.
More specifically the extra record gives:
1) the free flow travel time t 0 in seconds / free flow speed in kph / free flow
delays in seconds
1) the time at capacity t C in seconds / capacity speed in kph / delays at
capacity
2) the link capacity C (sometimes referred to as the “pinchpoint” capacity)
3) An ‘S’, ‘T’ or ‘D’ to indicate speeds, times or delays above
4) A “power” n
5) A “link index” or “capacity index” (optional – default is 0); see 5.1.9.
such that link travel time as a function of flow V is defined by:
Equation 6.2
t (v) =
t0 + AV n v<c
where the parameter A is chosen such that t(C) = t C . For V > C the time is
constant, t C .
This data has two effects: (1) it determines the flow-dependent (cruise) travel
time/speed on the link itself; and (2) it may reduce the turn capacities at the
downstream junction. See Section 8.4.4 for further details.
Note that the time/speed defined in columns 16-20 of the link record 2 is
disregarded if an extra speed-flow record is used. However a warning is
generated if a non-zero link time/speed does not fall within the upper and lower
limits set by the speed/flow times/speeds at free flow and capacity.
Note that by leaving entries (1) through (4) blank but coding a (positive) capacity
index allows one to use a “default” speed-flow curve as defined within the 33333
buffer records. See 15.9.5.
The use of the single characters S or T in column 29 to denote “Speeds” or
“Times” is new in 10.5. If column 29 is left blank then the choice is set by the
parameter SPEEDS as on the normal simulation link records. Previously SPEEDS
was always used (so that some care may be needed with pre 10-5 network data
files). A third choice, D (see 6.4.12.2), was added in 11.2.10 in 2013.
We may note therefore that the same data columns and conventions are used in
the 11111 simulation link speed-flow curves as in the 33333 buffer network link
records (although certain entries in the 33333 records such as the A-node and the
B-node are ignored here), making it simple to transfer 33333 data directly into the
11111 records.
We also note that if (and only if) the link is to an external simulation node then the
same information may also be input via the 33333 buffer records; see 15.13. If
both occur for the same link then FIFO (see 6.15) decides which to select.
simulation of node C would give in terms of: (a) the capacity for turn A-C-B, (b) its
delay given the current flow, (c) its delay at zero flow and (d) its delay at capacity,
from which we could calculate a speed-flow curve for use in the assignment
following the same principles as outlined in Section 8.4.2. Alternatively we could
use that data in order to calculate total link travel times from A to B (i.e., excluding
stop-line delays at B) at the current flows, at free-flow and at capacity, from which
we could construct a speed-flow curve which would combine both any speed-flow
relationships along the link itself plus any additional impacts from C.
As an example of how to estimate delays at a pedestrian crossing consider a
simple red-green sequence such that the crossing is “red” to car traffic for r
seconds followed by a green stage of g seconds. (Hence a total cycle time c = r +
g.) A basic saw-tooth model of queues gives us:
The delay at zero flow = r2/2c
The delay at capacity flow = r/2.
The capacity equals S x g / c (where S is the saturation flow)
If there is more than one crossing along a link then the total delays at free
flow/current/capacity flows are simply the sum of the individual crossings whereas
the “effective” capacity is the minimum of all the individual capacities
Or, alternatively:
where the first version is, for reasons given later, the “standard” version although
the second may appear more intuitive. E.g., 10<20>30 or 10<20<30 would both
imply a stage length of 20 seconds with a minimum of 10 and a maximum of 30.
If, on the other hand, only a single minimum or maximum stage time is to be set
the correct formats are respectively:
T min < T
&
T > T max
The rationale behind using a < symbol for “minimum” and > for “maximum” is that
otherwise an input field such as 20<30 could either be interpreted as a green time
of 20 seconds with a maximum of 30 or as a green time of 30 with a minimum of
20. Thus 20<30 implies that a minimum stage length is being set (T min = 20; T =
5120257 / Apr 15 6-52
Section 6
SATURN MANUAL (V11.3)
6.4.14 Free-Format Data Input on Link Record 2B: TAX, FLAREX, FLAREF and
APRESV
Post release 10.9.20 it is possible to use Link record 2B to define various link-
specific parameters in addition to link speed-flow data (6.4.12): specifically TAX
for the number of pcus which may stack in the centre of the junction plus FLAREX
and FLAREF to represent PCUs in extra flared lanes (6.4.9.3) and APRESV to
control lane choice at merges. All these parameters are assigned global default
values set via &PARAM Namelist inputs.
In order to do so a * must be coded in column 11 of Link Record 1 and the extra
link parameters are defined using a combination of keywords and numerical
values in a free format. For example
1234* 2 60 200 ...
TAX 3.0 60 120 2000 2.5 12 FLAREX 2.5
would indicate that the link from Anode 1234 requires a second line in order to
define link speed-flow properties (thus free-flow time of 60 seconds, capacity time
of 120 seconds, capacity 2000, power 2.5 and capacity index 12) but that, in
addition, its TAX value would be 3.0 and it has an offside flared lane (FLAREX) of
length equivalent to 2.5 PCUs. Text “APRESV” signifies values for APRESV to
follow and “FLAREF” for FLAREF.
In this example the values 60 ... 12 must appear in their normal fixed columns,
i.e., between column 11 and 45 (see 6.4.1), while the keyword+value sets may
appear anywhere in columns 1 – 10 or beyond 45.
Further notes:
The keyword used to designate TAX is, strictly speaking, any set of characters
beginning with a T and ending with an X; e.g., TX, TAX, TyrannosorusreX, etc.
etc. Ditto FX or FLAREX, FF for FLAREF or AV for APRESV. Nor is it case
sensitive.
Keywords may also use columns 11 to 45 as long as those columns are not being
used for speed-flow data. (What happens is that the line is first scanned for
keyword+values which are then replaced by blanks and then the speed-flow data
is read as per normal.)
It is also possible to use Record 2B only to define TAX, FLAREX etc., i.e., with no
speed-flow or capacity index defined for that link.
Extra link parameters TAX etc. do not apply to links to external simulation nodes
although link speed-flow curves may be used for such links.
NOTES:
1) It is not necessary to include both an A-node and a B-node. If one if
missing, i.e. blank or 0, the following rules apply:
2) If only the A-node is given then the zone is connected to all links FROM
A; i.e., the blank B-node is treated as a “wild card” representing all
possible values of B.
3) If only the B-node is given then the zone is connected to all links TO B;
i.e., the blank A-node is treated as a “wild card” representing all possible
values of A.
4) If A = B then the zone is connected to all links both TO and FROM A; i.e.,
situations (2) and (3) combined,
5) However if either the single A-node or B-node is an external simulation
node then the connections are made to all links from A/B to internal
nodes. Since in most cases external simulation nodes are only
connected to a single internal node the only information really required by
the program is the external node and including a second node is largely
redundant.
6) It is also possible – although not recommended – to attach zones to the
simulation network via an intermediate buffer node, in which case the
connectors are contained within the 33333 data records. See 16.6.3.
7) Since a maximum of 6 input node pairs per record are allowed the final
column which may be used is column 65; any text beyond 65 is flagged
as a potential error, particularly if it is numerical (which might indicate that
it was intended to be a 7th input connector).
RECORD 1
Cols. Description
1 A ‘C’ if the following node refers to a zone (see note (13)), a ‘D’ if this is a
default speed-flow curve (see note (8)) or a ‘V’ to indicate a maximum
vehicle speed under CLICKS (see note (16).
2 -5 The A-node for the link.
6 A ‘C’ to indicate a zone number following.
7 -10 The B-node for the link.
11 -15 The link time (in seconds) or speed (in kph) under free-flow conditions.
16 -20 The link time (in seconds) or speed (in kph) at capacity.
21 -25 The one-way link capacity (in pcus per hour)
28 A one-way/two-way indicator - see note (3).
29 An ‘S’ if speeds were defined above; otherwise times are assumed.
31 -35 The link distance (in metres).
36 -40 The power to be used in the link flow-delay curve. (FORMAT - F5.1 –
therefore, by default, the decimal point should appear in column 39 but
see note (4).)
43 -45 A “link index” in the range 0-999; see 5.1.9.
46 – 80 (Optionally) up to KNOBS extra data items - see note (9).
NOTES:
1) A capacity of zero - or blank - is assumed to imply infinite capacity -
actually recorded as 99999 pcu/hr – and fixed times/speeds as set at free
flow (so that the capacity time/speed is ignored). It is further assumed
that all centroid connectors have fixed travel times (set by the free-flow
field) and an infinite capacity, i.e. 99999. (If the free flow and capacity
times are set equal with a finite capacity then the times are fixed but only
up to capacity, beyond which point they increase linearly as per equation
(5.1.b))
2) Link capacities in the buffer network are not the equivalent of saturation
flows in the simulation network in that link capacities take into account
the reduction in capacity due to traffic signals at the down-stream
junction, give-ways, etc., whereas simulation saturation flows are based
purely on road geometry and ignore all such factors as above.
3) If column 28 contains a 1 this implies that the link (or centroid connector)
is one-way from A-node to B-node; a 2 implies that it is two-way. If
column 28 contains any other number - or more commonly if it is left
blank - then the value is taken as that defined by IFRL and IFCC (See 6.3
above). Hence by default all input real links are assumed to be one-way
(since IFRL = 1) and centroid connectors are two-way (IFCC = 2). If two-
way, all link properties are assumed to be the same for both directions.
4) If columns 36-40, the link flow-delay power, is left blank - and capacity
restraint is indicated - then the default value defined by BCRP is
assumed. (Note that it is not 100% essential that the decimal point falls in
column 39; FORTRAN READ statements are forgiving and will correctly
read a decimal in any of the 5 columns. This means that you are not
restricted to a single figure after the decimal point. See 2.8.3)
5) The possible uses and applications of the link index in columns 43-45 are
explained in Section 5.1.9. See in particular note (8) below. If the
parameter BEAKER is .TRUE. then the index is also associated with all
(simulation) turns out of the link.
6) If either the A-node or the B-node is an internal simulation node this link
will not be added to the buffer network. (This happens very commonly
when a network is originally set up with buffer links defined under 3333
which are then re-defined as simulation nodes and added to the 11111
records). However a buffer link can join a pure buffer node to an external
simulation node or two external simulation nodes.
15) The two input values of speed/time, the capacity and the power are used
to define a link speed-flow curve as specified in Section 5.4.
16) Similar to a D in column 1 a V in column 1 is used to indicate a record
which defines a maximum speed under CLICKS for a particular
combination of vehicle type and capacity index; see Section 15.47.2.3 for
the full specification.
NOTES
1) Include the third node C in order to specify a turn A-B-C; otherwise link A-
B is assumed.
2) Centroid connectors cannot be restricted, but links in both the simulation
and buffer networks plus turns in the simulation network may be included.
N.B. In general turns in the buffer network CANNOT be restricted as
they do not explicitly exist in the assignment network although, post
Release 11.1, they may be effectively banned and/or penalised if
SPIDER = T; see 15.56.7.3.
3) A banned link or turn is indicated by a negative indicator, 0 implies no
effect while a positive number is taken to be a penalty in either time or
monetary units as explained next.
4) A “toll” (i.e., a monetary penalty) is differentiated from a pure time penalty
by the inclusion of either a $ or & symbol preceding the numerical value.
The absence of either implies a (possibly notional) time penalty whose
units are assumed to be seconds. Tolls are assumed to be given in units
of, say, pence rather than pounds so that a toll of five pounds would be
indicated by £500 (or $500). For further information see Section 20.
5) “Time” penalties may represent virtually anything the user may wish them
to represent. For example, they may be purely notional times designed to
5120257 / Apr 15 6-59
Section 6
SATURN MANUAL (V11.3)
deter non-local drivers from using a local rat-run, or they may be “real” in
that they represent the extra time for a lorry to drive down a windy road.
Under certain circumstances, see 15.24.4, options exist to include them
or exclude them with “normal” time. However, in terms of output statistics
of total times or speeds, penalty times are not included with “real” times
but are listed separately.
6) Buses and other “fixed” flows which follow pre-defined routes are not
affected by restrictions. Hence banning a turn or link to all classes is
equivalent to defining it as a bus-only turn/link.
7) If you have multiple vehicle classes (NOMADS > 1), a banned indicator
of -1 refers only to a single user class, whereas values of -2 or less are
taken to imply that the ban applies equally to all following user classes.
For example if you wish to ban a turn for all user classes -2 in columns
16 to 20 (31 to 35 under DUTCH) would suffice. (Presumably in this
case the turn would be bus only.)
8) Under the usual option of a single user class only columns 16-20 (31-35
under DUTCH) are required to specify the ban/penalty.
9) If there are more than 10 user classes more than one record is required
per link or turn such that each record contains 10 entries in columns 16-
65 (31-80 under DUTCH). Columns 1 to 15 (30) on subsequent records
are left blank. Note that this applies whether or not the subsequent
record contains nothing but zeros (or blanks) following a -2 entry. See
Section 6.14 for an annotated example.
10) Total output statistics of, e.g., total pcu-hrs for time penalties and total
pcu-pounds for tolls may be viewed via the simulation/buffer outputs
under SATLOOK; see 11.11.4 and 17.9.
Cols. Description
1 A ‘C’ if columns 2 to 5 contain a zone number (but see note 11);
or ‘S’ to denote a sector; otherwise blank or part of the node number to
denote a “real” node.
2 -5 The node, zone or sector number; see note 7)
6 -10 Its X co-ordinate (by default as an integer); see notes 6) and 10)
11 -15 Its Y co-ordinate (as an integer)
16 -20 (a) For zones, its corresponding sector number
(b) For nodes, no extra data is currently processed
NOTES:
1) All input co-ordinates should be positive since nodes whose co-ordinates
have not been defined are given negative values in order to identify them.
2) If a node is not assigned co-ordinates the program attempts to
“extrapolate/interpolate” its co-ordinates from those of its neighbours.
Users should check the co-ordinates so assigned and, if happy with
them, edit them into the .dat file. (The output format in the LPN file
should be compatible with the required input format.)
3) The units used for co-ordinates are arbitrary but their “size” in metres
should be specified by XYUNIT. E.g., if XYUNIT = 10 then it is assumed
that an increment of 1 in a co-ordinate corresponds to 10 metres “on the
ground”. However, see 15.43.2, it is strongly recommended that a
system based on Ordinance Survey (or equivalent) conventions is
adopted with co-ordinates defined to the nearest metre (so that XYUNIT
= 1.0).
4) Section 5.1.7 defines sectors. If either the parameters IROCKY or TFL
have been used to define “default” sector names any data given here
“over-rides” that definition. If the sector field is left blank, however, the
value given using IROCKY and/or TFL is assumed.
5) In addition to defining the sectors associated with zones this data section
is also used to explicitly define X, Y co-ordinates for sectors. Sectors not
explicitly defined have their co-ordinates set to the arithmetic mean of
their zones.
6) The precise columns (beyond column 5) occupied by the node X,Y co-
ordinates and their format may, in fact, be re-defined by the user via the
namelist parameter “XYFORM”. Thus using 5 columns each with no
decimal corresponds to the FORTRAN “format” 2I5; if XYFORM = 2F10.2
then the X co-ordinate would be contained in columns 6 to 15 with a
decimal in column 13, while the Y co-ordinate would be in columns 16 to
25, decimal in column 23. See also 15.35 and note 10). In all cases the
first (left hand) column in each field is the one in which a ‘C’ or an ‘S’ is
inserted. These are not explicitly mentioned in the format. (Note that
formats such as F6.0 are much better given as I6 since the former
“wastes” one column by including a final decimal point while I6 potentially
5120257 / Apr 15 6-61
Section 6
SATURN MANUAL (V11.3)
uses all 6 available columns.). See also note 10) below for alternative
“free formats”.
7) With the (default) format as given zones are restricted to four digits (to
accommodate the C in the first column of five), although there are ways
to allow five digits. Nodes however may use the full five columns (since
they do not need an indicator) and have up to five digits. But see note
(10) for alternative formats.
8) Note that data described above as being in columns 16-20 strictly
speaking must occur in the 5 columns immediately beyond those used for
X,Y and therefore depend on the format used.
9) Nodes within this section which have not already appeared in the
simulation or buffer networks are, by default, ignored and generate
warnings. Thus you may apply a set of coordinates for a full network to a
cordoned sub-network and the extra nodes are excluded. However if the
parameter ATLAS (6.3.1) is set to .TRUE. all nodes in the 55555 data set
are recorded as part of the map network so that they may be used, e.g.,
as part of network editing within P1X; see 18.5.2.
10) If the parameter FREEXY=T (see 6.3.1; recommended) then all the data
records are given in “free format”, i.e. no fixed columns and with each
data entry distinguished from its neighbours by either a blank and/or a
comma (but with the C or S only in column 1). This has several
advantages:
♦ ditto the X, Y values which may also contain (any number of)
decimals;
1 The European Petroleum Survey Group created a dataset of geodetic parameters in 1985 for internal use of its
members. In 1993 the dataset was made public as reference data to the then Petrotechnical Open Software
the British National Grid) to the actual location on Earth. Having the
EPSG code and being able to deduce the corresponding external
coordinates means that we can have all the necessary information to plot
SATURN over mapping backgrounds.
The parameters used to do this are:
♦ IEPSG gives the EPSG code for the USER system. The default
27700 corresponds to OSGB 1936 / British National Grid at metre
level.
♦ Routes to be used for later analysis, e.g. timed routes from moving
car observer surveys
The two are differentiated by assigning a frequency of zero (columns 7-10 below)
to non-bus routes.
Bus routes are “seen” by SATURN as fixed loads to be added to the “fixed”
assignment flows (see 5.5.3.). One bus per hour is equivalent to ‘BUSPCU’ pcus
per hour. Indeed, as note in 5.5.3, it may be possible / convenient to define bus
flows as pre-loaded flows (15.5.5 or vice-versa. For example, if you have a very
large number of low-frequency bus routes it may be simpler to simply aggregate
all their individual flows by link and input them as fixed pre-loaded flows.
Corporation data model (POSC has since rebranded as Energistics). In 2005 the European Petroleum Survey
Group was reformed as the Surveying and Positioning Committee of the International Association of Oil and
Gas Producers (OGP). Maintenance of the geodetic parameter database now resides with OGP Surveying and
Positioning Committee's Geodetic Subcommittee. For continuity reasons the dataset name remains as the EPSG
Geodetic Parameter Dataset, or in short the EPSG Dataset.
Route data records are preceded by a record with 6 in column 1 (or more usually
‘66666’) and terminated by a record with 99999 in columns 1 to 5. A route is
defined on one or more records as follows:
(N.B. A different format applies under the DUTCH Option - see Section 15.20
and/or under the EZBUS Option - see 6.9.2, note (6).)
The “name” of the route (which may be alpha-numeric as opposed to
Cols. 1 - 5
pure numbers); maximum length 4 characters.
‘T’ if the route is two-way and the node order is exactly reversed (in which
Col. 6
case the reverse route need not be coded);
‘R’ if the route is defined in “reverse order”, i.e. starting at the last entry;
‘D’ for a “route deletion record”; see 6.9.6;
‘F’ for a “frequency editing” record; see 6.9.6;
otherwise leave blank; See note (7) in 6.9.2.
Cols. 7 - 10 The route frequency in buses per hour (which could be zero; see 6.9.4.)
The number of nodes through which the route passes (i.e., the number of
Cols. 11 - 15
node entries following); optional - see 6.9.2, note (6).
Cols. 16 - 20 The first node on the route
Up to 13 nodes may be specified per record with the 13th node appearing in
columns 76-80. The list of nodes may be continued on a second, third, fourth, etc
record / row (up to a maximum of 78 records - see 6.9.2, note (9)) - starting in
column 16 and leaving columns 1-15 blank.
An alternative (and highly recommended) convention for specifying nodes without
using fixed columns (EZBUS) is given in note 6), 6.9.2 while 6.9.5 describes how
to include “timing points”
2) If, however, A and Z were external simulation nodes then the first and
last flows would always be on links A-B and Y-Z since centroid connector
flows are allowed to terminate at external nodes (independent of
UPBUS).
3) The above restrictions only apply to the ends of routes within the
simulation network; they do not apply to sections of route through the
buffer network.
4) Missing node numbers are allowed in the sense that blanks may appear
in the list of nodes and will be ignored by the program. This is a useful
facility if it is known in advance that new nodes are to be inserted in some
future networks; without blanks file editing by insertion can be a problem.
Strictly speaking, therefore, cols 11-15 (if used) give the position of the
LAST node to be read.
5) If FOZZY is .TRUE. and co-ordinates have been defined for all nodes,
then if two successive nodes do NOT constitute a link, the program will
“interpolate” the set of nodes which lie nearest to a direct line between
those nodes (see 15.18). Thus if a route follows a straight line (more or
less) then it is not necessary to define every node along the line, only the
first and last nodes. Hence in addition to the first and last nodes in a
route it is only essential to define nodes at any “kinks” in the route.
This is a very useful facility and its use is strongly recommended.
However please note that in order to use it you must first have defined
node co-ordinates.
In addition, post 10.9, if the “direct line” method fails and MINDER = T, a
path is generated based on the minimum distance path between the two
unconnected nodes.
Note that the interpolated routes take one-way streets into account. This
means, for example, that a route which is defined to be two-way (T in col.
6) may have a different set of interpolated nodes in the two directions.
6) If EZBUS is .TRUE. then the nodes through which the route passes may
be defined in a “free format” whereby:
♦ Cols 1-10 remain the same on the first record (i.e., fixed column
format).
11) Routes are also allowed to exit the network from one “stub node” and re-
enter at another. This may happen if the network has been cordoned and
part of the actual route lies outside the coded section. As with U-turns no
extra time or distance is added in these cases.
12) In addition routes are also allowed to exit the network from one node and
re-enter at another (non-adjacent) node by inserting a “wildcard” node
number between the two nodes. The wildcard number is defined by the
&PARAM Namelist parameter KANGA (signifying a “jumper”), default
9999. Thus a sequence of nodes A B C 999 F G H would imply that the
route left the coded network at C and reappeared at F; for example it
might be using relatively minor roads which are not included in the coded
network
represent the time to cross the stop line as opposed to the time to reach the back
of the queue. They would therefore include any delayed time at that intersection
and therefore their value should depend upon which exit turn is to be taken next,
i.e., the next node in the sequence. Their application for validation studies is
described in 11.7.2.
The starting point (zero time) for cumulative times is assumed to be the same
point at which a vehicle (bus) on the route would enter the network. Thus – see
note 1) in 6.9.2 – this would be the downstream end of the first link if UPBUS = F
or the upstream end (i.e., the first coded node) if UPBUS = T. However, if the flow
on the route is zero (which is the natural value for pure timing routes) then timing
always starts at the upstream (first) node and equally ends at the final simulation
node. See 11.7.2.2 for an application within Validation.
Timing points are entered as integer values enclosed in brackets after the node to
which they refer appears. They may only be entered when in “free format mode”,
i.e. EZBUS = T. Thus the node sequence
52 54 55(72) 56
indicates that the time to reach node 55 is 72 seconds. Note that not all nodes
need to have timing points and that it is not valid to associate one with the first
node in a sequence (which, by definition, is zero). Spaces between the node
number and ( or within ( ) are ignored.
Timing points are recorded on the .ufs files as part of the route definitions and
may be analysed later; see 11.7.2.
In addition a second input value within brackets indicates a “plus-minus range” of
observed timing points. Thus
52 54 55 (72, 16) 56 …
would imply 72 + 16 seconds to reach node 55. If the second figure is omitted it is
taken as zero. The definition of the “range” is deliberately loose since, at the
moment, it is only really used to provide a vertical bar on time v distance plots to
give an indication of the likely spread of route timings.
set could be used to define the nodes within each route but three different sets of
initial records could be used to define the three different frequencies.
To replace an existing route by another with the same name but with, say, a
slightly different structure but without removing the original records from the data
file(s), one should (a) include a delete record before the records which are to be
replaced and (b) insert the new route definition records after the old records. Thus
the “delete” instruction is cancelled as soon as it is acted upon.
We note that the edit record must always be input before the full record that it
modifies, independent of whether one is part of a $INCLUDE file and the other is
in the main .dat file, etc. etc.
Furthermore edit records only apply within a single bus company, i.e., set of
66666 records. Thus at the end of each set of 66666 records the list of
modifications is wiped clean and a new edit list must be created with each new
66666 set.
NOTES:
1) Unlike other data input sections the ‘77777’ initialisation record may be
repeated more than once, so that more than one “set” of counted links
may be defined. Each set commences with a ‘77777’ record and is
terminated by a ‘99999’ record. The maximum number of such sets is
now (10.7) 120.
2) Each set of 77777 counts is identified within SATURN by consecutive
numbers 1, 2, 3 ... which may be referred to within subsequent
programs. Thus a particular set of counts might be associated with a
particular “screen line” or cordon. Note the same link/turn may not occur
in the same count set although, post 10.7, counts may be repeated in
different count sets; multiple values must be handled using MCCS.
3) In addition an informative title may optionally be included on the 77777
record following the 7's giving, e.g., a screen line name to be associated
with the count set to follow.
4) Turn volumes as specified by nodes A-B-C may only be defined for turns
within the simulation network; links specified by A-B may exist in either
the simulation or buffer networks.
5) Volumes on centroid connectors may not be defined.
6) Counts on simulation links are assumed to refer to the “actual mid-link”
flows - see Section 15.16.
7) It is generally assumed that any counts input here refer to TOTAL vehicle
flows, although in certain circumstances elsewhere in the Suite flows for
a particular class of vehicles (e.g., cars, HGV’s, etc.) are required; see,
for example, Section 13.4. The MCCS different set of counts might
therefore be used to define flows by vehicle class. Alternatively the
program-specific flows may need to be input separately to that particular
program.
8) In any case the counts should always be given in units of pcus/hr. Or, at
any rate, the same units as all the other flow components such as trip
matrices, saturation flows, etc., which, if desired, could be in
vehicles/hour. See 15.17.
9) Strictly speaking counts are stored as “reals” and may therefore be input
as reals (e.g., 654.0 instead of 654) although, generally, they are input as
integers on the assumption that it is difficult to define a flow to a precision
of better than 1 pcu/hr. See 2.8.3
10) The count field MAY be left blank (or set to zero) if the count records are
being used solely to define a set of links for later analysis. Zero-count
records are ignored with certain applications, e.g., a PIJA analysis for
input to SATME2.
11) MCCS is specified under &PARAM (6.3.2) and by default is 1. Values of
MCCS>1 might be used to represent, e.g., multiple counts on the same
links or counts for different user or vehicle classes.
12) Links which cannot be identified for whatever reason (e.g., node not
identified or a non-existent link between two correct nodes) by default
generate a Semi-Fatal Error 437. However this can be downgraded to a
Serious warning (269) if ERRYES(437) = F (see 2.9); this allows the file
to proceed to the assignment stage. Versions10.7 and later only.
13) If a parameter FREE77 is set to .TRUE. under &PARAM the counts in
columns 16+ (31+ if DUTCH = T) are read as “free format” (e.g., CSV)
rather than in fixed columns. This also means that they be written in
either an “integer” or “real” format (i.e., with or without decimals). Plus,
post release 11.3, the whole record including the node definitions is
read as free format, not fixed columns, so that it is now essential that a
value of zero is explicitly included when A-B denotes a link.
14) There are, however, two exceptions to the above rule that the C-node
must always be explicitly included under FREE77, even if it is zero. (1) If
there are only three items in total on the record then it is assumed that
they must be: A-node, B-node plus (single) count. (2) If the first two items
are integers (A-node and B-node) and the third entry is real (i.e., has a
decimal) then it is assumed to be the (first) count. Both cases therefore
define a link A-B but, under (1), there can only be one count whereas
under (2) there may be multiple counts. (Rule added 04/09/14 in release
11.03.07.)
15) Alternatively, even if FREE77 = F and the counts should be in fixed
columns, the counts are also read as free format and the two sets of data
compared and any differences are noted as a Serious Warning 189. This
provides a useful check for formatting errors – which most commonly
occur when the counts are in REAL format, i.e., with decimals. (Added
post release 11.3.6.)
16) Finally we note that $INCLUDE files (see 15.30) may be used to define
the 77777 data rather than explicitly including the data within the main
network .dat file and that there are obvious advantages to doing it this
way. In this case the data in each $INCLUDE file must follow the
formatting conventions defined above.
17) If you wish to input multiple $INCLUDE count files then they may be
defined in order within a single 77777/99999 pair of records. However it
may be more “natural” to define each file within a separate 77777/99999
set for ease of identification later on (e.g., in SATPIJA; see notes 2 and 3
and 13.2.1).
6.11 Generalised Costs and/or Matrix Weights for Multiple User Classes:
the ‘88888’ Records
This data section, which is mandatory for NOMADS>1, defines for each user
class:
♦ Its generalised costs (see 7.3.2.2), i.e. the criteria which determines
its “minimum cost” paths in the assignment stage;
NOTES:
1) From SATURN 9.4 the 88888 section is mandatory under multiple user
classes, i.e. NOMADS>1. Previously it was optional but it does not seem
to make much sense to have multiple user classes if they all share the
same trip matrix and cost definitions.
2) This data section is not normally required in the “standard” case of a
single user class UNLESS some of the extra (KNOBS) link data are used
to define costs. Parameters PPM and PPK fully specify generalised cost.
3) For further details on all the above inputs please see Section 7.3.
Annotated examples are given in Section 6.14 below.
4) The following default values apply to all user classes not explicitly defined
on these records:
♦ Vehicle class 1;
♦ Factored by 1.00;
♦ Pence per minute equal to PPM as defined under the &PARAM input
or by default;
13) Note that negative weights for KNOBS data are (post release 11.2.3) no
longer permitted and will be converted to a positive value. If you wish a
KNOB data item to be used as a negative cost (e.g., to encourage the
use of certain routes) then the data should be set negative, not the
coefficient. See 7.11.2 and 15.14.3.
N.B. The full data file must be terminated by a 9 in column 1 or 99999 in columns
1 - 5. Thus the final TWO records must both contain 9 or 99999, the first to
terminate the last data section and the second to terminate all data.
The default for WRIGHT is .TRUE. but it may be turned off by setting it to
.FALSE.; - clearly not recommended. As a form of compromise, users may wish to
undertake an initial run with WRIGHT = T in order to highlight the NAFF errors
and, if they disagree with any errors which have been thus upgraded, they may
correct those that they do agree with, leave the others uncorrected and then re-set
WRIGHT = F for “production runs”.
Alternatively. by setting ERRYES(n) = F for a particular error which is
otherwise to be upgraded to semi-fatal, that error is still reported but not
upgraded.
N.B. ERRYES(n) may also, strictly speaking, be used to “turn off” Fatal
and/or Semi-Fatal errors by setting n > 300 but the practice is definitely NOT
recommended: there is a reason why certain errors are Fatal!
For 10.7, only a small number of Serious Warning (i.e., 119-123, 139 and 140)
and Non-Fatal Error 227 were identified. However the number will continue to
increase with new releases. Thus, in 10.8.15, Serious Warnings 141, 142 and 143
have been added as well as Non-Fatal Errors 226, 236, 263 and 271. Serious
Warning 105 and Non-Fatal Error 239 have been added in 10.8.16. Additional
errors 13 (now 165), 105, 234, 273, 275, 277 and 278 have been added since (up
to 10.9.13).
Post 10.9.16 those (relatively few) Warnings messages that did generate Semi-
Fatal errors were re-designated and renumbered as Serious Warnings.
(Specifically 13 became 165, 17 to 169, 76 to 176 and 77 to 177). Thus only
selected Serious Warnings and Non-Fatal Errors may now be upgraded to Semi-
Fatal.
At the same time Serious Warnings 104, 108, 117, 127, 158, 165 and 166 and
Non-Fatal errors 201, 204, 212, 218, 223, 224, 225, 264 and 265 were all added
to the list of (potential) Semi-Fatal errors.
Non-fatal errors 217 and 240 were upgraded for release 10.9.17.
See Appendix L for a full list of errors and an explanation of what each one refers
to.
Default: 0
The position of FLARE-F (flared PCUs for nearside turns) on the link records
NFLF
(0, 1, 2 ...). N.B. Not fully operational yet.
Default: 0
The position of APRESV on the link records (0, 1, 2 ...). N.B. Not fully
NFAPV
operational yet.
Default: 0
NFGAP The position of the GAP data on the turn records. (0 or 1)
Default: 0
The number and order of the data items per link are determined by the numerical
values of NFTAX etc. Thus if NFTAX = 1, NFCI = 2 and all other link pointers are
zero this implies that the first data item is a TAX value and the second is a
capacity index (CI); RBKS etc. values are not used.
Since the data is in free format it may appear in any columns beyond column 10
(although the use of fixed columns in widths of either 5 or 10 is highly
recommended) and may be real or integer (with or without a decimal). (Although
indices should logically be integers.) Multiple entries must be separated by at
least one blank column.
Note that all the above link-specific values may also be defined: (a) either as
global values via &PARAM or (b) link-specific values using the second link records
(6.4.14).
N.B If DUTCH = T then the A-node and B-node entries occupy 10 columns, not 5,
as is standard; see 15.20. The data items start in column 21.
As above the number and order of the data items per link are determined by the
numerical values of NFTAX etc although at the moment only turn-specific GAP
values may be set in this way so that the only relevant parameter is NFGAP which
can only take the value 1 (unless of course it is zero and no turn GAP values are
on the X-file).
Note that turn-specific GAP values only apply to traffic signals and priority
junctions, not to roundabouts where GAP’s are defined at the node level only.
Since the data is in free format it may appear in any columns (although the use of
fixed columns in widths of either 5 or 10 is highly recommended) and may be real
or integer (with or without a decimal).
N.B As with link records above, if DUTCH = T then the A-, B- and C-nodes occupy
10 columns each, not 5, as is standard; see 15.20. The data items start in column
31.
6.15 FIFO, TOPUP and DOUBLE – Options for Repeated Data Input
It is possible for various inputs to appear more than once, either within the same
data section or, alternatively, within two different data sections. In such cases it is
necessary to decide which data entry to accept as definitive – or whether the
repetition should lead to an error. Three logical parameters, FIFO, TOPUP and
DOUBLE, control the decision in different circumstances.
6.15.2 TOPUP
The parameter TOPUP allows the user to define simulation network data file in
terms of changes to a basic network in conjunction with the use of $Include files
within the 11111 (simulation node) and 22222 (simulation centroid connectors)
data segments (only).
N.B. After its first introduction in 10.8.16 the functionality of TOPUP was extended
in 10.9.15 by defining an auxiliary parameter DOUBLE = T, whose use is now
strongly recommended. However, for reasons of historical order, the description of
TOPUP that follows assumes DOUBLE = F. If you do wish to use the
recommended functionality of TOPUP please read Section 6.15.3 in conjunction
with 6.15.2.
Thus, if a base network has been set up in which all (or possibly most) of the
11111 data is held in one or more $Include files and the user wishes to create an
alternative network which differs only with respect to minor changes to one or two
simulation nodes (e.g., by changing the signal settings) then they proceed as
follows:
Set TOPUP = T within &PARAM;
Include the full data records for the modified simulation nodes at the top of the
11111 data records in the network .dat file, i.e., before any $INCLUDE records
appear (but if DOUBLE = T, see below, either the “main” 11111 data records or
the $INCLUDE file may come first);
Reference the complete base network data coding by one or more $INCLUDE
records which follows the modified data.
If the nodes included under (ii) are also included within the subsequent
($INCLUDE) file(s) then the node data records under (iii) are ignored and those in
the “main” .dat file are accepted. I.e., it is effectively a case of LIFO discipline –
Last In, First Out.
Note that if TOPUP = F (its default) then the fact that certain nodes are coded
twice would be treated as a semi-fatal error. The advantage of TOPUP = T is that
the user does not need to explicitly delete the old node records and, if the
$Include file is being continually updated, those updates (apart from the
duplicated nodes) will be automatically taken on board in the changed network(s).
Note that the “correct” node coding must always appear at the top of the 11111
data segment (i.e., before $INCLUDE) and the ignored coding can only be within
a $INCLUDE file (but not if DOUBLE = T – see below). If data for the same node
appears twice in the same file it is a semi-fatal error.
Deleting Simulation Nodes
As a variation on the above theme it is possible to “delete” a simulation node in a
later data set by including a single node record in an earlier data set which
consists only of a negative simulation node number in columns 1 to 5 (or, in the
case of a 5-digit node number, in columns 1 to 6), in which case the node will be
“ignored” (i.e., “deleted”) if it appears later.
Application to 22222 Centroid Data
The same “LIFO” principle may also be applied under the 22222 simulation
centroid connector data; if a zone record appears before a $Include record any
references to that zone in the $Include file are ignored. Note, however, that it is
not possible to “delete” a zonal centroid connector by inputting a negative zone
number first.
TOPUP was first introduced in SATURN 10.8.16.
6.15.3 DOUBLE
A more forgiving version of TOPUP is provided by setting a subsidiary parameter
DOUBLE = T in &PARAM. If both TOPUP = T and DOUBLE = T (defaults = F and
T respectively) then any distinction between data in the main 11111 segment and
in $INCLUDE files is dropped and duplicated simulation node data may appear in
either the main .dat file or in one or more $INCLUDE files independent of the
order. The first version of the node data encountered always becomes the
accepted version and all later versions are skipped over.
In addition with DOUBLE = T it is not necessary to have any “proper” node data
within the main 11111 segment; it may simply reference a string of $INCLUDE
files. For example, the following sequence would be an acceptable – and probably
very sensible – method for progressively defining “scenarios”:
11111
$INCLUDE do_something.dat
$INCLUDE do_minimum.dat
$INCLUDE base_year.dat
99999
Thus the do minimum .dat file would over-write certain data defined in the base
year and do-something could in turn over-write data coded in either the do
minimum or base year scenarios.
A (Semi) Fatal Error 421 still results if data for the same node appears more than
once in the same data segment (main or $INCLUDE). Equally semi-fatal errors
result if a negative (delete this node) number appears more than once or if the
negative node number appears after the node data which it is intended to delete.
DOUBLE was first introduced in SATURN 10.9.15 with a default value of .FALSE.,
largely for historical compatibility, but its default was changed to the
recommended value of .TRUE. in the release version 10.9.22.
Z = ∑ ∫ C ( v ) dv
a
a
0
Equation 7.2
Va ( n +1) =
(1 − λ )Va( n ) + λ Fa( n )
where λ (0 < λ < 1) is chosen so that the “new” flows V a (n+1) minimise
the objective function. (See 7.1.3 below for the precise equation used
to calculate λ.)
5. Return to step (2) unless some convergence criterion is satisfied; for
example the maximum number of loops as specified by NITA has
been exceeded (see 7.1.5).
What distinguishes equilibrium assignment from other similar, more empirical
capacity-restrained techniques is the choice of “optimal” proportions based on the
concept of minimising an objective function.
In effect at each stage of the algorithm we calculate a new set of routes for all ij
and shift a certain proportion λ of all previously assigned trips onto these routes.
Thus the averaging in equation 7.2 may be viewed either at the level of individual
ij path flows or at the aggregate link-flow level. Hence after, say, 5 iterations we
will have up to 5 different routes for each ij pair (allowing for the same route to be
chosen more than once) with certain fixed proportions of trips assigned to each.
See the papers in Appendix H for a more path-based description of Frank-Wolfe.
At the conclusion of the algorithm the final solution is made up of a weighted
average of each of the n individual all-or-nothing solutions / sets of path flows
where the weight assigned to each solution/set is calculated iteratively according
to the following equation:
αa λ
= j i= j +1 ∏ n (1 − λ i ) (7.2b)
Thus 60% of all trips use the routes identified in iteration 1, 22.01% follow those
from iteration 2, etc. etc.
Wardrop Equilibrium may also be achieved using slightly different algorithms; see,
for example, ROSIE in 7.1.3, Partan in 7.11.7 and MSA in 7.5.8 as well as by
either path-based algorithms or origin-based assignment (See Section 21).
C a = C A (Σ w b V b ) + d a
where the links b ε A all share lanes with link a and are said to constitute a “river”.
The additive term d a distinguishes between the different turning movements within
the river.
In the case of simulation turns, weights are related to the “difficulty” in making a
turn; e.g., if an unopposed straight-ahead movement and a heavily opposed left-
turner share the same lane then the left-turning traffic would be assigned a much
heavier weight than the straight-aheads.
With non-separable cost-flow relationships, as introduced under ROSIE, the
Wardrop Equilibrium problem can no longer be represented as a minimisation
problem, since the objective function (7.1) may no longer be uniquely defined
(due, technically, to the presence of “off-diagonal” elements in the matrix of cost-
flow partial derivatives). It may, however, be considered in the more general guise
of a Variational Inequality as proposed independently by Mike Smith of the
University of York and Stella Dafermos of Rutgers University around 1980.
However, it turns out (see Van Vliet, D. (1987), The Frank-Wolfe Algorithm for
Equilibrium Traffic Assignment Viewed as a Variational Inequality. In: Transportation
Research 21B, pp 87-89) that the Frank-Wolfe algorithm may equally well be
interpreted in the framework of a Variational Inequality with the result that all the
steps described in 7.1.2 may be retained with only a marginally different step 3)
where a lambda value is calculated to decide how much traffic is allocated to the
latest route.
Thus, under ROSIE, we still calculate an “optimum” value of lambda but
“optimum” in a certain Variational Inequalities sense, not minimisation. In both
cases we solve for λ via the same equation (9.4):
∑ c ( λ ){V
a a − Fa } =
0
The only difference between Frank-Wolfe and ROSIE is that in the former case
c a () is a separable function of V a whereas in the latter it is non-separable as
defined above. Indeed there are very strong theoretical parallels between ROSIE
and AUTOK as discussed in Section 9.3.2.
Empirically this modified algorithm is observed to converge to a Wardrop
Equilibrium at virtually the same rate as the more theoretically correct version.
What is “sacrificed” by using ROSIE is the ability to calculate certain convergence
measures such as epsilon which rely upon the minimisation framework; however
other measures such as delta may still be evaluated.
The (it is devoutly hoped!) advantage of the solution found with ROSIE = T is that,
by incorporating part of the interaction terms in the simulation of delays (see
Section 9.1), i.e., the contribution of lane sharing, directly within the assignment it
will improve the overall rate of convergence of the assignment/simulation loops.
Preliminary tests have been encouraging and, in certain – but not all! - networks,
it can make the difference between convergence and non-convergence.
On the other hand setting ROSIE = T is not a universal cure-all for all problems of
assignment convergence and indeed in most networks its convergence properties
are no better or even worse than setting ROSIE = F. Thus our advice is to set
ROSIE = T only as an experiment if there appear to be convergence problems
otherwise and never set it T initially or by default.
ALTERNATIVE APPLICATIONS
In principle, the basic ideas of ROSIE, i.e., assigning different weights to different
streams of traffic in order to calculate times, could be applied in different
situations. For example, on motorway links one (user/vehicle) class of traffic could
be assigned a different “weight” from other (user/vehicle) classes in calculating the
total flow as used to determine the travel time from speed-flow curves. These
weights could be additional to any user/vehicle class PCU factor and could be
either greater than or less than 1.0. This facility might then be used to define
variable PCU-factors by link or link-type so that, for example, HGVs might be
assigned a (presumably) higher PCU factors for links with an incline.
Alternatively, and also on motorways, traffic entering from a slip road might be
assigned a greater PCU factor on the first link downstream as a way of
representing a greater ‘impedance’ associated with (initially slower moving) joining
traffic.
δ=
∑T (c pij pij − cij∗ )
∑T c ∗
pij ij
The “Delta Function”, along with its disadvantages, has been described above. A
second method of monitoring convergence is to consider the objective function
directly which, as mentioned above, the Frank-Wolfe algorithm seeks to minimise.
It may be shown that a lower bound to the ultimate objective function, Z*, can be
calculated at the n-th iteration by the formula
Equation 7.4
Z (n) ∑ Tpij (C pij − Cij* )
Z lb (n) =− (a)
At convergence Z and Z lb meet at the minimum value, Z*. Figure 7.1 illustrates
the “typical” behaviour of Z and Z lb as a function of the iteration number n.
Note that Z lb does not necessarily increase on every iteration, e.g. on iteration 5,
so that a better lower bound on Z* may be obtained by taking the maximum lower
bound achieved to date; i.e., set:
= =
Z lbmax (n) max ( Zlb (i), i 1, n ) (b)
41000
Z
39000
37000
Zlb
35000
0 1 2 3 4 5
iterations
Note that the numerator in epsilon is effectively the same as that used to define
the delta function, eqn. (7.3): both are measures of the differences in current and
minimum total vehicle costs (compare the second term in eqn. 7.4(b) and the
numerator in eqn (7.3)). They also differ in that delta is “normalised” by dividing by
the total vehicle cost and epsilon, by the current objective function (which, as an
integral of cost vrs. flow, is an underestimate of total flow times cost).
In practice epsilon values are broadly similar to delta but have one great
advantage over delta in that they are guaranteed non-increasing (i.e., they can
only decrease / stay the same from one iteration to the next). This, therefore,
makes epsilon far more attractive convergence parameter than delta and is the
( Z (n) − Z (n − 1) ) ε (n) =
F ( n) = ∆Z (n) ε (n)
Note that all of the above convergence measures may only be calculated AFTER
the next iteration in the Frank-Wolfe sequence; i.e., after the all-or-nothing flows
for a given set of V a (n) are calculated. The iterative loops terminate after the n-th
iteration if any of the following conditions are satisfied
(i) n ≥ NITA
(1 − 1 n)Va( n ) + Fa( n ) n
Va( n +1) =
advised to set a large value of NITA, the number of loops in the MSA algorithm, in
order to assure a reasonable level of convergence; for example, values of 20 or
30 would not be unreasonable (unless cpu time is a constraint). See 7.2.5 for
further information
C ′ = x.C
where C is the current link cost and C’ its randomised value. Hence we are talking
about the distribution of a random variable x whose “mean” value is near 1.0 as
opposed to the actual distribution of costs on a specific link. Hence x is unitless.
Would define two CDF’s, the first one representing a very wide spread of random
multipliers in the range 0.1 to 2.0 while the second represents a much “tighter”
distribution in the range 0.0 to 1.10. The different functions may be used for
different user classes – see 7.2.3.3 below.
In the above example with 5 lines of input the three intermediate values represent
”quartiles”; i.e., the lowest 25% of values for the first function are in the range 0.1
to 0.5, the next 25% are in the range 0.5 to 1.0, etc. Intermediate values are set
by linear interpolation.
To define a function with maximum numerical precision the maximum number of
inputs must be used, with an upper limit of 101 points (which therefore define the
CDF at intervals of 0.01).
The filenames for CDF’s are set using the Namelist character parameter FILCDF
under &PARAM. N.B. At present there is no way that it may be defined on the
Command Line unlike, say, trip matrix filenames. Also it may only be defined
within the inputs to SATNET, not as an input to SATALL where it is actually used.
CDF’s allow users complete flexibility in defining random number distributions. For
example, a CDF may represent a skewed distribution such as a gamma or log-
normal which is a “natural” form of distribution to use when dealing with perceived
values of road charges; see 20.6 for an application under STOLL.
The advantage of using a .cdf file (i.e., KOB = 3 rather than one of the other
values) is that it allows complete flexibility in the randomisation of the link costs.
Thus you may define one user class with a very small spread in perceived costs
and another with a large spread.
X ( n +=
1)
( A + BX ( n ) ) mod C
where A, B and C are extremely large numbers. (Mod C implies you divide A +
B*X by C and take the remainder.) Thus by choosing a certain value for X(0) the
user can guarantee reproducing exactly the same random numbers at any stage.
KORN is therefore just such a seed value X(0) so that running the assignment
twice with identical values of KORN gives identical results. Change KORN and
you obtain different flows, although as NITA is increased two different runs should
approach one another “statistically”.
However there are complications (aren't there always?). Thus a highly desirable
property of an assignment is the ability to reproduce the routes generated by the
assignment at a later stage (see 15.23 for a discussion of these merits), in which
case it is essential to be able to reproduce the random numbers generated at
each iteration of the assignment. For this reason a new sequence of random
numbers is initiated with each different origin-based tree-building operation using
a seed value ISEED defined by:
ISEED = KORN+NOMAD+10*NASS+100*NITER+3000*IORIG
Thus P1X, for example, can build exactly the same O-D routes as were used in
SATEASY or SATALL.
( )
C ( n ) = ∑ Va( n ) ca Va( n )
a
* See Section 5.8 for a description of the distinction between user and vehicle classes.
Note that the term “permitted” above allows different sets of banned links or turns
by user class, while the stochastic definition allows for variations in perceived cost
WITHIN each user class. The choice between the two options is controlled by the
parameter SUZIE as with normal single-class assignment. A more complete
explanation of MUC assignment theory is given in Van Vliet et al (1986); see
Appendix C for a full listing (.PDF version only).
See Section 5.8 for a description of the distinction between user and vehicle
classes.
some factor (e.g., by 0.7 or 0.3 as above). The default values assume level 1 with
a factor of 1.0 so that the “standard” case of a single user class requires a
standard n x n “unstacked” trip matrix with no additional factoring. The sample
‘88888’ data records given in Section 6.14 are reproduced here:
88888 * Matrix and generalised cost definitions
* for each user class (UC):
1 1 0.20 1.00 1.00 * UC 1 forms 20% of matrix level 1
* and defines cost = 1.0*time + 1.0*dist
2 1 0.40 0.00 1.00 * UC 2 forms 40% of matrix level 1
* and is distance minimizing (cost = dist)
3 1 0.40 1.00 3.00 * UC 3 forms 40% as well and defines
* cost = time + 3.0*dist
For a matrix with three explicitly stacked levels the data might appear as:
88888
1 1 1.00 1.00 1.00
2 2 1.00 0.00 1.00
3 3 1.00 1.00 3.00
In general we would strongly recommend that if any of the user class sub-matrices
are likely to be independently manipulated at some stage, e.g., through elastic
assignment, ME2 matrix estimation, cordoning, etc., etc., then it is best to define
them explicitly as stacked levels without any factoring from the beginning,
otherwise problems may be created later on.
Note that costs are therefore only updated AFTER all user classes have been re-
assigned.
Thus in the Frank-Wolfe algorithm the combination of the old and auxiliary (all-or-
nothing) flows is the same for all classes. Hence at the end of the algorithm the
fraction of trips assigned to each iteration’s routes is identical across all classes.
(There is one exception to this rule - if a user class is assigned to “fixed cost”
routes, e.g., minimum distance, it is assigned once and only once to that route in
iteration 1 and thereafter disregarded.)
Similarly with the Stochastic Multiple User Class Assignment the MSA algorithm
assigns equal flows to each iteration over all classes. Note that the values of
SUET may differ by user class as defined via subscripted values of SUET under
&PARAM; e.g., SUET(2) = 0.5 defines SUET for user class 2 specifically, SUIET =
0.5 defines it for all user classes. See also 6.11.
In such a joint modelling approach we require that the demand and supply
processes are not only internally consistent but are also consistent between
themselves such that, using * to denote joint equilibrium.
Equation 7.9
T * = d (c* ) (a)
and
c* = s (T * ) (b)
In other words, given a set of network travel costs c*, the demand model produces
a set of trip matrix (road) demands T* and, if we assign T* to the road network, the
resulting o-d travel costs are again c*. The demand and supply models are
therefore in “equilibrium”.
The general form of the demand and supply models is as sketched in Figure 7.2
indicating that demand decreases as travel costs increase and that travel costs
increase (congestion) as demand increases. The equilibrium we seek is at the
intersection of the two curves.
Figure 7.2 - Supply/Demand Equilibrium
Figure 7.2 is of course highly simplified and in two dimensions; in “real” models
both costs and trips are n z xn z matrices (with even further disaggregation possible
by, e.g. user class or time period). However the general principle of an
equilibrium intersection point still holds.
Note also in Figure 7.2 that a “fixed” trip matrix would correspond to a demand
curve which would simply be a vertical line. Equally the nearer the demand curve
(in this diagram) is to the horizontal the more sensitive are the demands to the
costs (and, as we shall see below, the more difficult it is likely to be to solve for the
joint equilibrium).
(Certain people may prefer to have costs along the X-axis and trips along the Y-
axis and, indeed, when considering demand curves on their own, this is probably
more natural. The concept of equilibrium holds either way; take your pick!)
In addition, provided we specify that the assignment or route choice must satisfy
the Wardrop Equilibrium conditions (7.1.1), the resulting model may be thought of
as being in “double equilibrium” such that both route and wider (e.g. whether to
travel by road) choices are in equilibrium with the resulting road costs.
♦ those where the number of trips by road for a specific ij movement T ij only
depends on costs by road for that ij pair; and
transport cost matrices, these will need to be generated by other models and
converted (as required) into SATURN matrix format.
We may also note at this point the general principles outlined above apply equally
well to multiple user class assignment where, potentially at least, each user class
may be modelled according to a different form of variable demand model or the
same form but with different parameters. See 7.9 for detailed instructions.
where d-1(T) represents the “inverse” demand curve; i.e. if T = d(c) then c = d-
1
(T)*.
The first term in (7.10) is equivalent to the standard Wardrop Equilibrium objective
function (7.1); the second term represents the negative of the “area” underneath
the demand curve from 0 up to T. Both are illustrated individually in Figures 7.3a
and 7.3b respectively and, as they would appear at the equilibrium, in Figure 7.4.
-1
* Note that in our diagrams there is no difference between the curves d(c) and d (T); they differ only
in terms of which variable or axis is thought of as being the “independent” variable.
Note that in Figure 7.4 the area under the supply curve (represented by the
horizontal hatching) is positive while that under the inverse demand curve (the
vertical hatching) is negative. Hence at equilibrium the supply contribution is
exactly “cancelled out” by part of the demand contribution, leaving a “net” negative
contribution as illustrated in Figure 7.5.
Thus the problem of minimising the objective function (7.10) may be interpreted
geometrically as making the negative area in Figure 7.5 as large - in absolute
terms - as possible. Which, if you think about it long enough, implies taking T as
the point of intersection in Figure 7.5. (The “negative” area keeps increasing as
we go from 0 up to the point of intersection but if we go beyond the intersection
point the negative contribution from the demand curve is now below the positive
contribution from the supply curve - a bad thing from the point of view of
minimisation.)
A further, somewhat technical, implication of having both positive and negative
components in the objective function is that the final optimum value may turn out
to be either positive or negative or even near zero. We need to bear this in mind
when considering stopping criterion based on relative changes in the objective
function such as, see 7.1.5.
Figure 7.4 - The combined supply (horizontal lines) and demand (vertical lines)
objective functions at equilibrium
We could equally start the iterative process with an assumed trip matrix T(1) such
that the first model carried out is supply (assignment), not demand.
However we start, the process may be terminated when (and if) the trip matrices
(or cost matrices, link flows, etc) are sufficiently close on two successive
iterations.
Diagrammatically, and in one dimension, the procedure is as illustrated in Figure
7.6 where, starting with assumed costs c(1) and the corresponding demand T(1)
represented at point A, step (2) above (supply) is represented by the vertical line
from A to B and step (1) (demand) by the horizontal line from B to C. Here
successive applications of the supply and demand sub-models take us through
successive points A, B, C, D, E, which spiral in towards the ultimate point of
intersection - equilibrium.
Figure 7.6 - A (convergent) cobweb set of demand/supply iterations
However convergence need not occur and the “cobweb” may spiral out in a non-
convergent fashion just as easily as inwards, as illustrated in Figure 7.7.
In fact it may be shown that (in one dimension) the cobweb converges (locally at
least) as long as:
∂s ∂d −1
−
∂T ∂T
and diverges otherwise. (Technically these are Lifschitz conditions.)
Convergence occurs, for example, if costs are relatively insensitive to the flows ( ∂
s/ ∂ T → 0), as would occur in an uncongested network, or if the demand is
relatively insensitive to the costs (- ∂ d-1/ ∂ T>>0), as would occur if the trip matrix
is fixed or nearly fixed and the demand curves are near to the vertical in our
diagrams.
In summary, cobweb techniques are relatively easy to apply but unreliable in
terms of their convergence properties. In the next section we consider some
simple modifications to the “pure” iterative cobweb.
(1 − λ )T ( n ) + λ d (c ( n ) )
T ( n +1) =
The averaging parameter λ is, within an optimisation framework, chosen such that
the objective function (7.10) is minimised. This procedure is both efficient and
convergent, independent of whether the condition on derivatives is satisfied.
Thus the demand model generates a trip matrix (or matrices) based – in part – on
the cost matrix (or matrices) output by the assignment while the assignment or
supply model uses the matrix/matrices input from the demand model. (N.B. For
generality we refer here to cost matrices as output from the assignment to allow
for the possibility that, as discussed in Section 7.8.6, the demand model may
require several distinct matrices of, e.g., time and distance rather than just a
single minimum cost O-D matrix. Similarly we talk about trip matrices to allow for,
e.g., separate public transport assignment)
The implied iterative process is very similar to other processes within SATURN, in
particular the loop between the assignment and simulation sub-modules as
illustrated in Fig 9.1. To avoid confusion as to which set of iterations we are talking
about we shall refer to supply-demand “cycles” as opposed to assignment-
simulation “loops” and Frank-Wolfe “iterations” within an assignment.
The basic concept of an equilibrium between supply and demand models as
described in 7.4.1 still holds in Fig 7.8: the demand trip matrices generated by the
cost matrices must, when assigned, generate the identical cost matrices. However
the methods to achieve that equilibrium may need to be more empirical than the
algorithms used within SATURN, primarily since an equivalent objective function
formulation no longer applies. (But see reference 13 in Appendix C, Bates et al
(1999), for a discussion of situations where objective functions may be extended
to include more complex demand formulations.)
criteria for the assignment as the overall convergence improves. (The same basic
idea is applied to the simulation-assignment loops within SATALL by using the
AUTONA option to set variable values of NITA dependent upon the overall gap
value; see Section 9.5.4).
Thus parameters such as MASL, ISTOP etc. etc. which control the overall
assignment-simulation convergence of a run of SATALL may need to be reset by
the cobweb “driver” at each repeated run of SATURN, as indeed may parameters
such as NITA which control the convergence of the assignment. There may be a
good case here for using KONSTP = 1 and setting a critical Gap value in STPGAP
as determined by the latest gap value achieved by the demand model.
The decision as to which parameters and how to select ”optimum” values is up to
the user, being essentially external to SATURN. In terms of a “mechanism” for
inputting those values into a new run of SATURN there are several possibilities.
For example, they could defined within a $INCLUDE file within &PARAM which
the controlling program could overwrite. Equally they could be set in a control file
for SATALL.
In a similar vein it may be possible to simplify each intermediate run of SATALL by
excluding certain options that are only required once the final trip matrix has been
obtained. For example, the SAVEIT option may only be necessary on the final run
(unless – see below – you are using WSTART).
Clearly best practice will only become clearer after considerable experimentation.
One example of such experimentation is the CASSINI program described in
15.54.
copied directly to the output trip matrix file. Similar considerations may also apply
to inter-zonal cells which, for one reason or another, are unconnected; see 7.5.7.
Unlike the normal fixed trip matrix procedures, elastic assignment does not (for
various technical reasons) record any information on the precise routes used to
relate V a to T ij as normally saved if SAVEIT = T.
However, in the case of VDM/elastic assignments, the routes may be estimated
by carrying out a final fixed trip matrix assignment using standard algorithms and
recording the routes used via a .ufc file (see 15.23). It is these routes and the
output trip matrix T ij which will be used in any post-assignment analyses, e.g.
select link analysis (11.8.1).
We may further note, as discussed further in 15.23, that the routes found in this
manner will not be 100% identical to those implied by the original elastic
assignment, nor equally will the flows produced in the final assignment be
identical to V a (although a very good approximation). It is therefore the V a
obtained from the elastic assignment which are retained as the “correct” link flows.
Finally we note, as also mentioned in 15.23, that the number of assignment
iterations used to calculate the final routes, strictly speaking NITA_S, may be
different from the number used in the assignments proper, NITA. Thus, and in
particular if you have set a relatively small value of NITA in order to reduce overall
cpu time, a better estimate of the final routes should be obtained by defining
NITA_S > NITA.
This demand form corresponds most closely with a modal split model whereby ij
trips are selecting either road or public transport modes but the destination is
T=
ij (
TijA exp(− β cij ) exp(− β cij ) + exp(− β cijPT ) ) (b)
where T ij A represents the total number of trips from i to j choosing between car
travel - cost c ij - and (fixed) public transport - cost c ij PT.
Slightly different algorithmic approaches are adopted within SATURN for
incremental and shared elastic models although the underlying basic principles
are the same. The two forms of demand models have different ranges of MCGILL
values: 1 - 4 for incremental, 10 and above for shared.
It must also be stressed that the choice of incremental vrs shared is very often a
question of convenience rather than implying fundamental differences. For
example the same logit model may be expressed as either an incremental or a
share model - the choice would be based on which method is most compatible
with the form of data provided; a method for converting between the two is
described in section 7.8.2.
On the other hand other forms of SDM models such as the constant elasticity
model - equation (7.30b) - are more difficult to interpret as share models since
there is no natural upper limit on the total number of trips; T ij goes to infinity as
costs go towards zero.
FURTHER PROPERTIES
Other functional forms and/or interpretations are of course possible; see Section
7.7.1. In particular, see 7.5.5, it is possible to subdivide the cells in the matrix into
those that obey the elastic demand equation and those that are fixed independent
of the cost. The latter cells are termed either “inelastic” or “frozen”.
As mentioned in 7.4 the problem in elastic equilibrium assignment is to determine
both a self-consistent set of route choices and demand choices.
Elastic assignment is of most use in the assessment of future year networks
where, say, a simple extrapolation of the current trip matrix leads to an extremely
congested network with extremely high travel costs. Elastic assignment provides
a method for keeping the trip matrix - the demand - within behaviourally realistic
limits.
The elastic assignment algorithms within SATURN were developed as a joint
project between the Institute for Transport Studies and WS Atkins, funded by DTp
and administered by TRL. The reports produced for this study provide a
comprehensive review of theory, algorithms and applications; copies are available
from DVV.
For each origin-destination pair ij the maximum number of trips that might possibly
use the road network, T ij max, is calculated (see 7.5.3.1). These trips may then
choose either to travel through the "real" network or via the ij - specific “pseudo”
link. We denote these flows by T ij and E ij respectively. Hence T ij will become the
"actual" road trip matrix (although, in the algorithms used by SATURN, T ij is not
explicitly stored but may be calculated, when needed, as T ij max - E ij ).
Each pseudo link has a cost associated with it which depends on the flow
assigned to it, hence a pseudo cost-flow curve whose form is derived
mathematically from the inverse of the ij demand function.
The algorithm then, in effect, follows the Frank-Wolfe approach as with traditional
equilibrium assignment but with an extended network and a “fixed” trip matrix
T ij max. As with simple equilibrium models it works by minimising an “objective
function” which is calculated as the sum of the “standard” contribution from the
road network plus an extra contribution from the pseudo links; see 7.7.4.
It should be stressed that the pseudo links are only artefacts introduced by the
algorithm in order to solve the problem systematically; they have no precise
physical interpretation. They may also be thought of as a “pseudo matrix” whose
principle function is to define the number of trips on the road network (which
perversely they do by storing the number of trips which do not travel!)
Note that T ij A as used in the share model and T ij max as used in the pseudo-link
model are not the same thing; T ij A represents all possible ij trips including, e.g., all
modes whereas T ij max represents the maximum number by road. See Figure
7.10.
7.5.2.3 Notation
The notation adopted is as follows:
a road link
ca cost on link a
c ij minimum cost from i to j via the road network
c ij 0 a “reference” cost from i to j via the road network, e.g., the present day
cost
c ij FF c ij assuming free flow costs (hence a minimum cost)
d ij “cost” on an excess link ij
1c) Determine the number of trips to be loaded onto the road network:
Tij(1)
1d) Load T ij (1) onto the road network, accumulating the total link flows to
obtain the first set of road flows, V a (1).
1e) ‘Load’ the excess flow:
=
E (1)
ij Tijmax − Tij(1)
ITERATIVE LOOPS
Step 2 Calculate the ‘current’ link and pseudo link costs:
Equation 7.13
=
dij( n ) gij (Tijmax − Eij( n ) ) (b)
3b) Calculate and load the auxiliary road trips for this iteration: Tij( n +1) to
obtain link flows Wa( n +1)
equation (7.11b), the logit model. The x-axis represents the cost of travel by road
such that when the cost by road equals the cost by public transport (including any
modal-specific constants) then the road demand equals half the total demand.
Figure 7.11 - A logit demand curve with critical points noted
If, as illustrated, the free flow road costs are less than the public transport costs
A
then T ij max will be somewhere intermediate between Tij / 2 and T ij A; if c ij FF > c ij PT
A
then T ij max < Tij / 2 . (Clearly the former will be more likely in practice.)
T ij max is basically an artificial value designed to keep the total number of trips
within the algorithm within realistic bounds and to limit the absolute values of the
resultant objective functions.
In theory one might be able to devise even lower bounds on T ij if we could predict
in advance the lowest values that c ij would take during the course of the algorithm.
However, since the values of c ij are themselves related to T ij max there does not
appear to be an easy solution. Possibly an area for further research.
=Tij(1) T=max
ij , Eij(1) 0 or vice-versa
However, all that is really required is that the starting point be “feasible”, i.e. that
all the trips in T ij max be loaded onto either the pseudo links or the real network.
Hence, if we already have an idea “T ij '” of what T ij will turn out to be and, more
importantly, a good idea therefore of the number of trips E ij = T ij max - T ij ' to be
eventually assigned to the pseudo links - we could start by assigning our
estimates of T ij and E ij onto the minimum cost paths in the “real” network and onto
the pseudo links respectively.
Empirically it appears that a “split” assignment to begin with leads to a much
improved overall convergence and it is therefore always used. The choice of T ij (1)
may be made in two ways:
If REDMEN = T then it is taken from an input trip matrix which represents a prior
estimate of T ij , for example from a previous assignment. The estimated trip
matrix may be defined by the Namelist parameter FILRED under &PARAM in
the network .dat file.
Otherwise (for incremental models only) it is set from the equation:
where T0 represents the ‘inelastic’ or ‘reference’ trip matrix as used in the demand
function - see 7.7.1, equations (7.30a) to (7.30d).
If REDMEN = T it must be stressed that the input trip matrix (FILRED) need only
be an estimate but that the closer it is to the eventual output trip matrix, the better.
Equally if it is a very poor estimate there must come a point where using this
option turns out to be counter-productive. However, to date we have no empirical
evidence to suggest where the cut off point comes. Note that, in this context,
REDMEN may be regarded as a form of “kick start”; see 22.2.4.
N.B. See 7.5.6 for advice on using the REDMEN option in conjunction with
“frozen” cells (ICING = T).
If REDMEN = F then FRED is a uniform factor chosen to estimate the expected
growth or reduction (but usually the latter) in the final trip matrix relative to the
inelastic trip matrix. For example if you think elastic effects remove 5% of the trips
in T0 ij from the network then set FRED = 0.95. The default value of FRED is 1.0.
N.B. FRED is applied to incremental models only (MCGILL < 10).
Our advice would be, if feasible, to set REDMEN = T and to define an input matrix
FILRED; FRED would be a second choice.
7.5.3.4 The Iterative Road Trip Matrix: NITA_F and MASL_F; 3b)
Similar considerations to those given under 1c) apply here as well. Thus a “strict”
interpretation of Frank-Wolfe rules would lead to an all-or-nothing situation:
Equation 7.15
( n +1)
Tijmax cij( n ) 〈 dij( n )
Tij =
0 cij( n ) 〉 dij( n )
cij( ) 〈 dij(
n)
0 n
( n +1)
Fij =
Tij
max
cij( n ) 〉 dij( n )
Hence the maximum number of trips is assigned to either the pseudo link or to
the road network minimum cost route.
However, the pseudo/road split may be substantially relaxed by recognising that
the underlying principle of Frank-Wolfe is to increase the flow on the current
cheapest route. Hence, if the pseudo route is currently cheapest, i.e.,
Equation 7.16
cij( n ) > dij( n ) (a)
with the converse being true if the pseudo route is more expensive.
We can in fact guarantee that this condition is satisfied by setting
i.e. set the road trips equal to the equilibrium demand corresponding to the current
minimum road costs. Thus:
n +1)
Fij(= Tijmax − Tij( n +1) (e)
That equation (7.16d) guarantees (7.16c) may be seen by reference to the fact
that by definition the current road trips T ij (n) and the current pseudo link costs are
“in equilibrium” in the sense that:
Tij( n ) = Tij(1)
In order to choose the optimum value of λ one may either use a routine which
explicitly minimises Z as a one-dimensional function of λ or - much more
conveniently - one may use a routine to find the “root” of the equation:
Equation 7.17
dZ =0
dλ
(The identical 2 options occur with the Frank-Wolfe inelastic assignment
algorithm). The equation for the derivative of Z with respect to λ may be written:
Equation 7.18
dZ
=
dλ
∑ C (λ )(W
a
c a
( n +1)
− Va( n ) ) + ∑ dij (λ )( Fij( n +1) − Eij( n ) )
ij
where:
(
ca ( λ ) =ca (1 − λ )Va( n ) + λWa( n +1) ) (a)
And
Functional forms for d ij ( ) are given in 7.7.3; c a ( ) are the cost-flow curves as
defined by the user (or calculated by the simulation) for links in the road network.
The order of the parameters, and their abbreviations, given below corresponds to
the columns in the elastic summary tables.
♦ The uncertainty in the objective function ‘ε‘, “EPS” in the LP tables. See
equation (7.5), 7.1.5.
♦ A necessary condition for convergence is that the total number of trips on the
“real” network and the total number on the “pseudo” network reach stable
values - although clearly this is not a sufficient condition since changes in
individual ij values may be masked by an apparent stability of the total.
♦ DELTA-R, the delta function as evaluated only for trips through the real
network and therefore a measure of how near the current path flows are to
Wardrop Equilibrium (and therefore ignoring how near they are to demand
equilibrium).
♦ TIJ-AAD - the average absolute difference between the current road trips and
the number given by the demand function for the current costs, i.e.:
Equation 7.19
∑T
ij
n
ij − fij (cij( n ) )
♦ TxCij-AAD – as 8) but with each ij element weighted by its cost and then
normalised by the total vehicle-costs. (N.B. This is the equivalent of the
“%Gap” as used in the demand-supply equilibration program DIADEM.)
♦ Total travel cost over the real road network expressed in veh-hrs.
At convergence measures 1), 2), 4), 5), 7), 8), 9) and 10) should all tend to zero.
Stopping criteria are based on the same criteria as those for Wardrop Equilibrium
with a fixed trip matrix as listed in 7.1.5. Thus the user-set parameters NITA,
XFSTOP, FISTOP and UNCRTS all apply.
Note that all these convergence measures are internal to the assignment; i.e.,
they do not take into account any changes in costs introduced by the assignment-
simulation loops as within SATALL. For convergence of the loops please refer to
Section 9.9.1.
It is noted that to achieve satisfactory convergence of an elastic assignment often
requires many more iterations than an inelastic one; rather higher values of NITA
may therefore need to be used.
Tij = Tij0
approach may be to use a multiple user class approach where the two roles are
explicitly differentiated.
By contrast in an incremental model T ij 0 should represent a good “central” value
for car trips such that freezing them at that value should not present conceptual
problems.
You may wish to quibble with these rules and want it done other ways; the point is
that this situation should never really arise in the first place.
Equation 7.20
Tij=
R
( )( ( ) (
TijA exp − β cijR / exp − β cijR + exp − β cijPT )) (a)
( ( (
TijA 1 + exp β cijR − cijPT
= ))) (b)
where T ij A represents the total number of trips from i to j choosing between road
(R) and public transport (PT), costs c ij R and c ij PT respectively. β represents a
“sensitivity” parameter. A very small value of β implies that travellers are relatively
insensitive to the differences in costs between the two modes; a higher value of β
implies that they are very sensitive and small changes in costs can lead to large
shifts in mode choice. [Note that in form given here β is assumed to take on
positive values.]
Note that, in principle, either or both costs could include “modal penalties” in
addition to the “real” network costs. In practice, if included the modal penalty
would consist of a fixed positive cost (independent of ij) to be added to the public
transport costs. It would also, as with all other “costs” used within SATURN, have
units of generalised seconds. See 7.6.5 for a more detailed discussion of cost
definitions.
Logit models of this form may be considered as “standard” and their applications
in SATURN are described further in 7.7.1; see equations (7.30a) and (7.30f)
where To is equivalent to TA/2 and TA respectively and co is cPT ij in both. Two
forms of extended logit model, which may also be represented within SATURN,
are described next.
Equation 7.21
where the choices 1….N have costs c ij 1 … c ij N and, we assume, arbitrarily, that
choice 1 represents car travel.
Figure 7.13 - A Multinomial Logit Model
We further assume that the cost of travel by car is a function of the number of car
trips but that all other choice costs are fixed. Given these assumptions we may
transform equation (7.21) into a form equivalent to (7.20) by defining a “composite
cost” of all the other non-car modes ~cij by:
Equation 7.22
exp ( − β cij =
) ∑ exp ( − β c )
N
n
ij
(a)
n=2
1 N
c
Or ij =
− ln ∑ exp ( − β cijn ) (b)
β n=2
For example the upper level choice might be one of mode - say, public transport,
car or walk - and the lower choice might be between peak and off-peak. Thus T ij12
would represent trips by car in the off peak (car = choice 1 in the upper level, off
peak = 2 in the lower level); T ij21 would be public transport in the peak, etc, etc.
The “nested” probability of choosing mode m at the upper level 1 and time period t
at the lower level 2, P mt may be written as (dropping the ij subscripts)
Equation 7.23
Pmt = Pm Pt
m
Where:
Starting at the bottom of the nest, time choice, we may write, as with previous logit
models (7.20) or (7.21):
Equation 7.24
exp ( − β 2 cmt ) / ∑ exp ( − β 2 cmt ′ )
Pt =
m t′
( −1/ β 2 ) ln ∑ exp ( − β 2cmt )
cm∗ =
t
Equation 7.26
Note that we use different β values at the two different levels, β 1 β 2 , associated
with mode and time respectively. For various theoretical reasons logic dictates
that β 1 must be less than β 2 , otherwise the “order” of the nest should be reversed.
Thus starting with the “real” o-d travel costs c tm calculated by mode and time
period, which we use directly at the lowest level, we proceed in stages to higher
levels where the costs used in the choice processes are composites of the costs
further down. If we had a model with three levels of choices, e.g. if car travel in
each time period were further subdivided into car driver/car passenger, then the
same principles of calculating the composite costs at each level from the
(composite) costs at the next level down would still apply.
At the level of “real” network costs these may be either “fixed” or “flow dependent”.
For example costs of travel by public transport modes are generally assumed to
be independent of the number of passengers per service as well as independent
of the levels of congestion on the road. On the other hand travel costs by road
are generally assumed to be dependent on the number of vehicles on the road -
and hence on the choice process. Models of any level of complexity and
interactivity may of course be constructed and algorithms for their solution
constructed from the basic SATURN building blocks in the same way that a
multinomial logit model (7.6.2) can be transformed into a simple logit model. For
the moment we will concentrate on one very basic form of nested logit model.
(
T / 1 + exp ( β1 ( c1 − c2 ) )
= ) (b)
T2= T − T1 (c)
Equation 7.29
T11= T1 exp ( − β 2 c11 ) / ( exp ( − β 2 c11 ) + exp ( − β 2 c12 ) ) (a)
(
T1 / 1 exp ( β 2 ( c11 − c12 ) )
=+ ) (b)
Thus c 1 and/or c 1* is the composite car cost, T 1 is the total car trips and T 11 is the
total car trips in the peak period. Given that all the other costs are fixed, as
opposed to c 11 which depends on the peak car flows, we therefore have a “simple”
elastic demand model for car trips in the peak of the form given by equation
(7.11), i.e. T 11 is a function of “variable” costs c 11 only.
NOTATION
In order to minimise the number of parameter names used and to retain some
level of comparability with other forms of demand models (logit or otherwise)
SATURN makes certain compromises in the notation used when dealing with
nested logit models in what follows.
all other cost matrices must be converted into the same units. Equally all beta
values etc. must be in units of inverse (generalised) seconds.
(
T =2T 0 / 1 + exp β ( c − c 0 ) ( )) (a)
T = T 0 ( c / c0 )
p
(b)
MCGILL = 3: Exponential
(
T T 0 exp − β ( c − c 0 )
= ) (c)
(
T 0 / 1 + exp β ( c1 − c 0 )
T1 = ( ))
(
T1 / 1 + exp β 2 ( c − c 2 )
T= ( )) (e)
(
( −1/ β 2 ) ln exp ( − β 2c ) + exp ( − β 2c 2 )
c1 = )
MCGILL = 11: (Shared) Logit (see 7.6.1)
(
T 0 / 1 + exp β ( c − c 0 )
T= ( )) (f)
where T0 and c0 (and c2) are user-specified reference or ‘parametric’ where T0 and
c0 (and c2) are user-specified reference or ‘parametric’ trip and cost matrices and
β, β 2 and p are “elasticity” parameters.
Note that in equations 7.30a to 7.30b if c = c0 then T = T0. Hence the point (c0, T0)
definitely lies on the demand curve; these demand forms are therefore essentially
“incremental” curves and (c0, T0) could therefore be interpreted as the “existing
situation”. Equally T0 may be thought of as the “inelastic” demand since if the
costs do not change or if T is independent of c then again T = T0. See 7.8 for
further advice as to how to define T0 and c0.
By contrast equations 5 and 6 are “absolute” or “share” demand form equations in
which T0 represents a total number of trips, from which a given “share” winds up
on the road network. Thus, typically, To as used for share models will be larger
than that used by the incremental - e.g. twice as big if the “average” share is 0.5.
See 7.5.1.
Note therefore that MCGILL = 1 and MCGILL = 11 both effectively represent
exactly the same logit demand model but 1 is expressed in an incremental form
and 11 as a share model. In the latter case the input trip matrix T0 would be twice
as big.
N.B. The above equations assume that ‘normally’ p will be a negative number and
β positive. If the input values have the ‘wrong’ sign, e.g., a positive POWER, then
the ‘correct’ sign is automatically used.
See sections 7.12.2 and 7.12.3 for the definitions of the Namelist “names” used to
set β, c0 etc within SATURN.
Box-Cox Transformations
An alternative form of simple elastic demand model using what is known as a Box-
Cox transformation has been coded into elastic assignment with MCGILL = 5 but
its use is highly experimental. Most of the work was carried out by an MSc student
Pete Kidd in the 1990’s for his dissertation (indeed an excellent dissertation!) and
then incorporated by DVV into the code proper. So blame me for any mistakes!
What follows is probably a highly unreliable description of what Box-Cox does
based on faulty memory, Wikipedia and an interpretation of the code.
Basically a Box-Cox transformation is a continuous transformation of a variable x
between, at one extreme, the linear function x and, at the other, log(x). More
precisely we transform c into c’ via:
C’ = (c** λ – 1) / λ c**( λ-1)
Where λ varies between 0 and 1.0 and in SATURN is defined by the namelist
parameter BETA2
What we do in elastic assignment is to substitute a Box-Cox transformation for the
OD costs c and c0 in the logit demand equation 7.30a. If BETA2 = 1 c and c0
remains as is the model remains a pure logit model but if BETA2 = 0 c and c0 are
transformed into log(c) and log (c0) and mathematically equation 7.30a becomes:
T = 2 T0 / (1 + c**β / c0**β)
= 2 T0 / (1 + (c/c0)** β)
In other words T() is now a function of the relative change in costs rather than the
absolute change in costs as per the logit model and therefore much nearer (but
not identical) to the power law or constant elasticity model, equation 7.30b.
Therefore what Box-Cox enables one to do is to move continuously between a
model based on absolute cost changes to relative cost changes. Which, to my
mind, is a major advantage since basically I don’t believe that trip makers perceive
compared costs in an absolute sense, more in a relative sense. But what do I
know? See 7.8.5.1.
c = g (T )
1)
(
c 0 + ln ( 2T 0 / T ) − 1 / β
c=
) (a)
c = c 0 (T / T 0 )
1/ p
2) (b)
3) c c 0 + ln (T 0 / T ) / β
= (c)
4) c c 0 + ( c 0 / p ) ln (T / T 0 )
= (d)
6)
(
c 0 + ln (T 0 / T ) − 1 / β
c=
) (f)
d ( E ) g (T max − E )
=
1)
((
d =c 0 + ln 2T 0 / (T max − E ) − 1 / β
) ) (a)
2) d c (T (
− E)/T 0 )
1/ p
= 0 max
(b)
3)
(
c 0 + ln T 0 / (T max − E ) / β
d=
) (c)
4) d= (
c 0 + ( c 0 / p ) ln (T max − E ) / T 0 ) (d)
Equation 7.33
=Z ∑ Z (V ) + ∑ Z ( E )
a
a a
ij
ij ij
where h ( x ) = x log x
2) Z ( E ) c ( (T ) ) (T ) − T / q
0 −1 p max q
= 0 q
(b)
where =
q ( p + 1) / p
but for p = −1
Z ( E ) = c 0T 0 ln (T max / T )
For share models the objective functions are calculated directly as functions of T,
the flow on the road network, plus, in the case of the nested logit model, the flow
allocated to the alternative choice at the lower level, denoted by T 12 (see equation
(7.29c)). Hence in the latter case T and T 11 are synonymous, and we use T 11 by
preference.
5)
(
Z (T11 , T12 ) = T12 c 2 + T2 c 0 + T11 log (T11 / T1 ) + T12 log (T12 / T1 ) β 2 + T1 log (T1 / T 0 ) + T2 log (T2 / T 0 ) / β )
(e)
( )
6) Z (T ) = T − T c + T ln T / T
0 0
( 0
) + (T 0
( )
− T ) ln (T 0 − T ) / T 0 / β
(f)
7.7.5 Elasticities
The ‘elasticity’ of trip demand with respect to changes in cost is defined by
Equation 7.35
e = ( dT / T ) / ( dc / c )
1) ( )( (
− β c exp β ( c − c 0 ) / 1 + exp β ( c − c 0 )
e= )) (a)
− β c ( 2T 0 − T ) / 2T 0
=
2) e= p (b)
3) e = −β c (c)
4) e = pc / c 0 (d)
5) e e1 (T11 / T1 ) + e2
= (e)
where e 1 and e 2 are the elasticities in the upper and lower levels respectively and
may be given by equations such as (7.35a) or (7.35f). For the definitions of T 11
and T 1 see section 7.6.4.
6) ( )( (
− β c exp β ( c − c 0 ) / 1 + exp β ( c − c o )
e= )) (f)
− β c (1 − T ) / T 0
=
The alternative versions of equations (7.35a) and (7.35f) which use trips T (or,
strictly speaking, proportions of trips choosing car travel) in addition to costs are
based on standard results from logit theory and are certainly easier to work with
then those based entirely on costs.
there is very little point in carrying out the calculations. However for other model
forms the relationship between, say, BETA values and the elasticity is not direct
and the empirical values can be a useful guide (see also the final paragraph in this
section).
Note however that for all cases apart from MCGILL = 2 the elasticities are not
constant but depend on the point on the demand curves where the calculations
are made, i.e., on the road costs and/or number of road trips. Ideally one would
probably prefer the elasticities to be calculated using the actual output costs and
trips from the elastic assignment. However the first set of values reported by
SATALL are those that would apply if the costs of travel by road equal c0 which
are not necessarily all that close to the output costs.
In the case of (most) incremental models those costs are probably fairly close to
the final costs given the manner in which they would have been defined and the
reported elasticities should be good estimates. However for the various forms of
logit choice models (MCGILL = 1, 10 or 11) the costs c0 may represent costs, say,
by public transport, in which case they may be a long way away from the “true”
road costs and any elasticity calculated at those costs need to be taken with a
large pinch of salt.
For this reason for MCGILL = 10 or 11 (i.e, shared demand models) the empirical
elasticities are also calculated after the assignment has taken place and using the
minimum ij road costs in place of c0. These elasticities are therefore more realistic
and may differ considerably from those reported pre-assignment. They are also
reported within the lpt/lpa files.
It should also be remembered that elasticities vary by od cell (except of course for
the constant elasticity form). Elasticities may, in principle, be calculated cell by cell
using the equation editor in MX based on the “correct” costs and/or road trips and
trip-weighted averages obtained.
In order to detect consistent differences in elasticities by trip length (with logit-
based models elasticities increase with cost; see equation 7.35a) the reported
empirical elasticities are disaggregated by cost bands expressed in terms of
generalised costs in minutes – new in 10.8.20. These are printed within the .LPT
files. Note that the differences, especially with logit models, may be significant and
users may wish to consider this in their choice of: (1) the form of the demand
model and (2) the calibration parameters.
The calculated empirical elasticities are stored within the output .ufs files and may
also be accessed within the network parameters printed by SATLOOK. In the
case of MCGILL = 10 or 11 the values stored are those calculated post
assignment as explained above.
We note again that POWER is very closely associated with elasticity (and exactly
equal for MCGILL = 2) and therefore (a) is assigned very similar values of the
order of, say, -0.5, and (b) is unitless. By contrast BETA is only a parameter which
defines elasticity in part and (a) has units of inverse generalised cost and (b) takes
values which bear no direct relationship to the value of the intended elasticities.
If the empirical elasticity is extremely high (in absolute terms), e.g., -10.0, then
SATALL may refuse to run on the grounds that: (a) it may fail due to problems
with numerical underflow or overflow and (b) it is most unlikely that this is what the
user actually wanted to do. The two most common causes of extreme elasticities
(either very high or very low) are: (a) users confusing BETA and POWER and
therefore setting BETA to an appropriate value of POWER or vice-versa, or (b)
defining BETA values in the wrong units (e.g., inverse minutes rather than inverse
seconds).
The most obvious example of finding a point on the demand curve is the base
year where the trip matrix is known (by whatever means) and the corresponding
costs are obtained by running SATURN for that base year. Hence T ij o is the base
year trip matrix and the reference cost matrix c0 is obtained by skimming the
minimum* costs from the base year; e.g run:
SATURN basenet basetij
and
SATCOST basenet basecij
* Note that the costs defined in this way should always be minimum costs as opposed to average
costs as taken over the "forest" of used routes.
changing traffic signals now (which effectively alter the supply curve) then you
require the new equilibrium point between the new supply curve and the existing
demand curve. Thus, Figure 7.16, if we shift the supply curve from S1 to S2 we
change the equilibrium point from (T 1 *, C 1 *) to (T 2 *, C 2 *)
Figure 7.17 - New Supply Curves: A New Equilibrium
In this case (since S2 is above S1 implying higher costs) we have both increased
the equilibrium costs (C 2 * > C 1 *) and decreased the demand for trips (T 2 * < T 1 *).
Note that had we modelled the new scenario with fixed trips we would have
wound up at the equilibrium (T 1 *, C 2 F) which would imply higher costs than in the
“correct” equilibrium state.
FUTURE YEARS
For future years the demand curve must also allow for exogenous growth, e.g
through increased housing, employment or car ownership via growth factors which
implicitly assume that travel costs do not change. Thus we might predict a
uniform 10% growth in the trip matrix by some future year if there is no change in
congestion. We may therefore construct a future year demand curve dF(c ) from
the base year demand curve dB(c) by simply applying a factor of 1.1 to all demand
values on the curve. See Fig. 7.17. Thus the point (c0, 1.1T0) should definitely lie
on the new demand curve.
Figure 7.18 - Base Year and Future Year Demand Curves (dB and dF) plus Alternative
Supply Curves S1 and S2.
However, this is not to say that the point (c0, 1.1T0) is a valid forecast of some
future scenario since it does not take into account the extra congestion generated
by the extra 10% traffic demand which will alter the costs. It simply says that if
the costs remain as they are in the base year then trips will grow by 10%. Elastic
assignment introduces the effect of added congestion.
Thus in Figure 7.17 if point A - (c0, T0) - represents the base year equilibrium point
E represents the future year scenario - (c0, 1.1T0) - if costs remain fixed. However
if the network continues to operate according to supply curve S 1 we would wind
up at point B in the future year with: (a) higher costs than c0 and (b) fewer trips
than 1.1T0. In this case the elasticity effects are suppressing trips.
Equally if we consider alternative network scenarios as represented by supply
curve S 2 in Figure 7.17 then the future year equilibrium would be represented by
point D - in this case fewer trips and increased costs relative to point B.
Note therefore that points E, B and D all lie on the future year demand curve and
that all three represent equally valid forecasts of future year traffic levels given
certain assumptions about what the costs will be.
To define the future year demand curve using as input a reference cost matrix and
a reference trip matrix you are recommended to use the base year cost matrix c0
for the future year as well but the future year reference trip matrix would be the
base year matrix factored by 1.1; use MX to do this. (The alternative use of
GONZO = 1.10 is feasible but not recommended since if you start to compare
future year elastic and inelastic trip matrices it can be very confusing trying to
remember whether they include a GONZO factor or not).
(
Tij= TijA exp ( − β cijR ) / exp ( − β cijR ) + exp ( − β cijPT ) ) (a)
( (
TijA / 1 + exp β ( cijR − cijPT ) )) (b)
where the superscripts R and PT represent road and public transport and T ij A
represents the total number of ij trips. See 7.6.1. As noted in 7.5.1 the public
transport costs could include a (positive) perceived modal penalty.
Logit models may be represented either in an incremental or shared form - and in
some respects the latter formulation, discussed in 7.8.4, is more “natural”. The
following considers it primarily in the incremental form (MCGILL = 1).
Comparing equation (7.20b) with the incremental logit equation (7.30a) it can be
seen that c0 is equivalent to cPT and T ij A to 2T0. Hence in this case the reference
trip matrix refers to public transport costs and would need to be obtained from a
public transport assignment program such as SATCHMO. Equally we would need
to define T0 ij = TA ij /2.
Note that in this case the necessary reference matrices T ij 0 and c ij 0 should
certainly not be interpreted as a base point for road traffic since they do not
correspond to any “real” observed values of road trip matrices or costs - except in
the most unlikely case of all road costs being identical to public transport costs
and the modal split therefore being 50:50.
However, in the event that we know the base-year road trip matrix and road costs,
which we will denote by Tb and cb, and we know the total number of trips TA (e.g. if
we know the “share” of road trips) then we can work out the (unknown) public
transport cost matrix cPT = c0 by the matrix transformation (e.g., use MX):
Equation 7.36
(
cb − (1/ β ) ln (T A − T b ) / T b
c0 = )
The logit demand curve is sketched in Figure 7.18 where both the base year point
(cb, Tb) and the reference point (c0, T0) lie on the curve. Note that to specify the
precise form of this demand function a single point on the function (plus a value
for β) is not enough, we need extra information to specify TA.
Note, from a purely technical point of view, that it may be possible to factor a base
year trip matrix by setting GONZO = 1.1 (say). However, this is not
recommended.
increase in cost (or zero), in which case, relatively speaking, short distance trips
will be greater affected with a relative model.
This is not to say that absolute models are better than relative or vice-versa;
beauty is in the eye of the beholder and you need to make up your own mind.
But, at the very least, be aware of possible differences.
T = T 0 f ( c, c 0 )
where, by definition, f(c0, c0) = 1. The point (T0, c0) may be thought of as a “base”
or “pivot point” through which the demand function must pass. It turns out that
some, but not all, of the functions in 7.7.1 have the additional property of being
“base independent” in that any point on the demand curve may be chosen as the
base point and the identical function is produced.
For “base dependent” functions (T0, c0) has a more precise definition so that, in
practical terms more care is needed on the part of the user to specify them.
To illustrate, consider the constant elasticity form (7.30b):
T = T 0 ( c / c0 )
P
(
T = T 0 / ( c0 )
P
)c P
T = X 0c P
In this case we need only one value X0 to specify the form of the demand function
(assuming the elasticity p to be specified separately), not two separate values of
T0 and c0. It also follows that X0 may be obtained from any other point on the
demand curve, say (T1, c1) since
X 0 = T 1 / c1P
(
T T 0 exp − β ( c − c 0 )
= )
=T T 0 exp ( β c 0 ) exp ( − β c )
=T X 0 exp ( − β c )
* Strictly speaking both will converge towards the same results but since they are likely to start from
different initial conditions they may yield slightly different results since they will be converging along
different paths.
uncommon for combined VDM models to be formulated in which this rule is not
adhered to.
For example, the cost as used in the demand model may include components
such as vehicle operating costs which are based on an average speed of travel
between O and D which, in turn, depends upon the route(s) used but which,
cannot be calculated as a straightforward sum of individual link components along
the route(s); i.e., we cannot define an additive operating cost per link. Equally the
demand model may use the same components of cost as the assignment model,
i.e., time and distance, but use different weights. Or, frequently, the demand
model may use a different level of disaggregation into user classes (with,
generally, more user classes in the demand model than in the assignment
model).
In all such cases there is a strong possibility that the combined supply-demand
model will not converge to a unique equilibrium solution (either it will become
stuck in infinite loops or there may be multiple equilibria, one of which will be
arbitrarily reached). The basic problem is that the two models are “pulling in
opposite directions”.
Note that the problem does not occur if the demand model includes cost
components which do not feature in the route choice models as long as those cost
components are totally independent of the routes chosen. For example, modal
split models frequently add a notional penalty to the O-D costs by public transport
but these costs have no effect on the choice of an O-D route by either road or
public transport. Similarly, if area licensing is being modelled such that a trip with
both origin and destination within the charge area automatically pays a toll but that
toll is fixed independent of the route chosen, it is not necessary to include that toll
within the assignment model; it can be subsequently added to the O-D cost matrix
for those cells as a pure matrix operation. By contrast including, as above, a
vehicle operating cost based on speed is clearly route-dependent.
A more practical consideration is that, in order to calculate an average O-D speed
or to set up cost matrices based on different time/distance weights, etc. etc., it
becomes necessary to build skimmed (“forest”) matrices of O-D time and distance
from the assignment model. However this leads to a number of practical
difficulties (see 15.27.6):
(a) Considerable CPU overheads involved in skimming time, distance, etc.
matrices compared to calculating a minimum cost matrix (in addition to the
extra CPU overheads involved in carrying out the extra SAVEIT assignment
in the first place);
(b) Problems of differences between the SAVEIT and “master” assignments
(15.23.2) and
(c) Problems associated with the non-uniqueness of route flows and therefore
the non-uniqueness of skimmed time etc. matrices (7.1.6, 15.23.8 and
15.27.6).
By contrast a demand model which is based on minimum cost matrices from the
assignment requires a single tree build per origin to build a cost matrix, is based
on the final set of (unique) equilibrium link costs and is, therefore, also unique.
While clearly we would not wish to prevent users from setting up demand models
which involve different definitions of O-D costs if they wish to do so, it is not,
however, a practice that we (DVV) would particularly recommend. From a
behavioral point of view, it does not make much sense to me to assume that
drivers react in one way to road costs when evaluating route choice but in a
different way when evaluating, say, destination choice. Caveat emptor!
Our strong recommendation is, therefore, to use the minimum cost O-D matrices
from the road assignment as the costs input to the demand model unless there
are compelling reasons for doing otherwise.
In terms of the various standard batch files to calculate cost matrices as described
in Section 15.27.7 our recommendation is to use SATCOST in preference to
SATC_AV – option 14 in preference to option 9 in SATLOOK.
Finally we note that very similar considerations apply to linkages between
SATURN and economic evaluation models such as TUBA (15.41.1); i.e., life
becomes considerably simpler if the evaluation framework only requires a
minimum cost O-D matrix as opposed to a breakdown by time, distance, etc. etc.
7.8.7 Conclusions
To reiterate the first point made in this section - the choice and definition of the
demand function is entirely up to the user. All this section contains is advice,
albeit very sound advice!
Thus, at its simplest, elastic assignment may involve nothing more than uniformly
factoring up an existing trip matrix by 10 or 20% as the “new” base point and using
a present-day cost matrix. On the other hand the demand process may be part of
a much more involved multi-stage process. The choice is yours. If you
understand what your demand model represents and how to specify it then you
should have no problems; if you are not sure what you are doing then our advice
would be to keep it as simple as possible.
Finally, whether you are an expert or a beginner, it is a very good idea to check at
least once that the outputs from an elastic assignment model are indeed
consistent with your demand model. Thus having run an elastic model and
produced an output road trip matrix T ij use SATCOST (15.27.7) to calculate the
new cost matrix c ij . You should then be able to use the FORTRAN equation editor
in MX to independently calculate T ij from the input matrices T ij 0, c ij 0, and c ij (use
the equations in 7.7.1). If the two versions of T ij are "near" one another, e.g. +1%
per o-d element then your method is probably sound; if not, check your process
carefully. Do not expect 100% agreement which will only occur for perfect
convergence.
1. Incremental:
Equation 7.38
=
Tij AT 0
(
i ij exp − β ( cij − cij )
0
)
2. Absolute or shared:
Equation 7.39
where in both cases the balancing factors A i are chosen such that:
Equation 7.40
∑T
j
ij = Oi
where O i = the number of trips originating from i as calculated from the origin
sums in the “base” matrix T ij o.
Clearly the incremental model requires two additional input files to define a “base”
trip matrix To ij and a "base" cost matrix co ij . Less clearly the absolute model (7.39)
also requires an input trip matrix which is used only to define origin trip ends
(although it would not be too complicated to input the trips ends directly if
required; apply to DVV!)
In both cases an equivalent optimisation representation of the problem is available
such that the combined distribution plus assignment problem may be solved using
very similar algorithms to those used to solve “simple” elasticity problems; see
7.5.2.
Note that distribution may be run either “on its own”, i.e., as a model of combined
distribution and assignment, or in combination with further demand stages such as
modal split. See 7.10.4.
7.10.3 Files
The file structure using distribution is identical to that for SDM models as
described in 7.12.1 and 7.12.3 with the exception that the “base” cost matrix
required under incremental distribution, co ij in (7.38), is defined by the file
"FILCGH". The trip matrix T ij 0 in (7.38) is set by the “name” FILTIJ (7.12.3).
=
C PPM ∗ T + PPK ∗ D + M
Where:
C is the cost in units of pence,
T is time in units of minutes (including any 44444 time penalties),
D is distance in kilometres,
M is monetary charge in pence,
PPM is a user-defined parameter specifying “Pence Per Minute”,
PPK specifies “Pence Per Kilometre”.
The “type” of cost desired is specified by the user’s choice of PPM and PPK, the
default values being 1.0 and 0.0 respectively which therefore equate cost to time.
Although the parameters are specified as “per minute” and “per kilometre” the
actual units used by SATURN for time and distance are seconds and metres;
appropriate conversion is handled by the program.
In fact, when generalised cost is requested, the assignment actually works in
terms of “generalised time”, defined by adding terms proportional to the link
distance and/or monetary charge to the link travel time, such that:
Equation 7.42
where DATA(i) refers to the ith data input field, i = 1, ... KNOBS and PPU(i) refers
to the “Pence Per Unit” associated with that data field.
For example, DATA(1) might be a link scenic index and PPU(1) a weight to
convert scenic value into pence. The required values of PPU(i) are specified on
the ‘88888’ records input to SATNET - Section 6.11 - and may differ for different
user classes. Note that, by definition, all DATA values are fixed independent of
flows.
As with simple generalised costs the programs actually work in terms of
“generalised seconds”.
Note that values of DATA(I) are allowed to be negatives (see 15.14.3) but only if
the total fixed link costs (i.e., the sum of all components in Equation 7.43
excluding time) does not go negative for any individual links. Negative link costs
may pose problems for the tree-building algorithms which construct minimum cost
O-D paths since they may lead to cycles of links with a summation of negative
costs which cause infinite loops.
WIDDLE
DIDDLE, as described above, only operates within simulation-assignment loops,
i.e. for networks with a simulation component. An alternative version of the same
principle, WIDDLE, applies to buffer only networks and effectively allows one
assignment to continue from the end of another.
Consider the following sequence of dos commands:
SATNET net1
SATALL net1 trips
COPY net1.ufs net2.ufn
SATALL net2 trips &PARAM WIDDLE T
The first two simply assign matrix trips.ufm to (assumed buffer-only) network
net1.dat to produce net1.ufs. This is then copied (in effect renamed) into net2.ufn
(ufn since SATALL expects a .ufn file as input) and the final step runs SATALL
with WIDDLE = T such that the initial flows in the net2 assignment are the final
net1 flows. In effect having done NITA assignments on net1 the second
assignment can carry out (up to) NITA extra assignments to achieve, e.g.
improved convergence.
A key requirement in using WIDDLE is that the initial flows are consistent
(technically “feasible”) with the trip matrix being assigned. In the example above
this is guaranteed by using the same matrix in both assignments. An alternative
application of WIDDLE would be to the situation where two network.ufs files have
had their flows averaged to produce a new (.ufn) file while their respective
matrices have also been averaged to produce a new trip matrix. This should
guarantee that the new initial flows and matrix and trips are self-consistent.
If this is not the case - and no check is made - then the assignment outputs will be
unreliable.
Note that SAVEIT cannot be used with WIDDLE = T since the majority of paths
will have been effectively generated by the first assignment(s). Equally, and in
addition to being buffer-only, WIDDLE currently only applies to fixed trip matrix
assignment and a single user class.
In many respects WIDDLE is the buffer-only equivalent of the SATALL loop
continuation facility described in 9.12.1.
WIDDLE is available within both SATALL and SATEASY. It may only be defined
either within an input control file or, equivalently, via a command line parameter as
in the above example. For (hopefully!) obvious reasons it cannot be set once and
for all within the original network .dat file and carried through to SATALL via the
binary network files. Its default is FALSE.
Va(
n +1)
(1 − τ n )Va( n+ ) + τ nVa( n− )
=
1 1
used and post-assignment analysis, e.g., building forests etc, can still be
undertaken.
Full details of the values of τ chosen on each step and the resultant improvements
in the objective function are given in the line printer output file.
Empirical use in SATURN networks has generally shown that PARTAN can speed
up the internal rate of convergence within the assignment but, perversely, it
sometimes makes the convergence of the simulation-assignment loop worse.
Possibly the assignment is now “too good” and the method is picking up the small
change in successive iterations with greater precision. This is an interesting area
for further research. More immediately users are encouraged to try PARTAN if
they are trying to decrease cpu times but do not expect miracles!
On the other hand it may be much more beneficial for buffer-only networks where
the above problem will not arise.
which seeks to minimise the travel cost of each individual driver. Mathematically
system optimal assignment minimises:
Equation 7.45
Z so = ∑ Va ca (Va )
a
∂c
a (Va )
c= ca (Va ) + Va a
∂Va
For the particular form of link cost-flow equations used in SATURN assignments,
see equation (5.1), we obtain (N.B. change t o to c o below:
where c o represents the free-flow travel cost equal to the sum of the free-flow
travel time t o plus the fixed costs (e.g., distance; see 7.11.2) on the link. Note that
the contribution of the fixed costs is the same to both the actual and the marginal
costs (since they are fixed!).
In terms of purely marginal time t~ a we may write:
t~ a = n A Van Va < Ca (7.47a)
= B Va / Ca Va > Ca (7.47b)
Given that SO assignment may be viewed as the minimisation of individual
marginal costs the standard Frank-Wolfe algorithm may be used to solve the SO
problem with the one change that marginal costs are used throughout rather than
actual costs.
To invoke SO assignment within SATURN a logical parameter either SOWHAT or
WHATHO - see below - must be set to .TRUE, either (and preferably) within the
original network .dat file or within the control file to SATALL or SATEASY (both
allow SO assignment).
It needs to be appreciated that SO assignment is not based on logical
behavioural principles and that therefore it should only be used under very
specialised circumstances, e.g. to determine how much a network might be
improved by optimal routing. It is still very much a research tool, not a practical
tool.
Note that problems may arise due to the fact that the marginal cost curves defined
by equation (7.19) have a discontinuity at V=C so that it is possible for the
marginal costs to decrease as V goes from just below to just over C. This can
lead to convergence problems and/or multiple equilibria.
One way around this problem is to combine SO with the KINKY option which - see
15.38 - can be set to .FALSE. in order to remove the discontinuities in the cost-
flow curves at V=C. With KINKY = F equation (7.19a) holds for all values of V and
the discontinuity disappears - to be replaced by the problem that continuing the
power law curve for flows in excess of capacity may lead to unrealistically large
travel times. Take your pick!
A further problem is that in simulation networks, where the cost-flow curves are
applied to individual turning movements, no account is being taken in the above
marginal cost curves of the “interactions” between turning flows in shared lanes.
Thus increasing the flow on one particular turning movement may not only
increase the travel costs for all the current flows making that turn, it may also
increase the travel times on all other flows which share a lane with that turn. Not
to mention, of course, the impact that one turning movement may have, via gap
acceptance, blocking back, etc., on flows on totally different links. A technique
known as SATMECC deals with these issues; see Section 15.50 of the Manual,
Note that parameters WHATHO and SOWHAT have ostensibly the same effect
although there are subtle differences in the algorithms used. SOWHAT was
introduced first and explicitly uses marginal costs instead of “real” cost whenever it
is required in a Frank-Wolfe algorithm. WHATHO, introduced later, uses the much
simpler approach of factoring the parameter A by (n + 1) BEFORE entering the
assignment algorithms (and returning to its original values after). It is therefore
only applied under equation (7.19a) but, if you are using KINKY = F as
recommended above, then this does not matter as equation (7.19b) is never
invoked anyway.
Our recommendation then is to use WHATHO in preference to SOWHAT if KINKY
= F. It is also probably somewhat more robust to be used in conjunction with, e.g.,
elastic assignment or multiple user classes.
CONCLUSIONS:
System optimal assignment is of both theoretical and, increasingly nowadays,
practical importance. However the developments in SATURN are still at a very
early stage and further developments will require both extra theory and extra
programming efforts. See, for example, Section 15.50 on SATMECC which
generalises the calculation of marginal cost to include “interactions” associated
with the simulation.
“shadow network” which is a replica of the original network but with constant
minimum speeds.
More accurately the diversion to the shadow networks is based on costs where for
each O-D pair a minimum distance route is built -which at fixed speeds also
minimises time and cost - and the corresponding generalised cost of that route
stored. Any route with greater cost than that will be diverted to the shadow
network.
In terms of elastic assignment the shadow network demand function has the very
simple form sketched below where c ij s represents the shadow network cost. It
may therefore be thought of as a “quick and dirty” form of elastic assignment and
for that reason is not entirely to be recommended to SATURN users. However it
does have its supporters.
Currently shadow network assignments may only be carried out within SATALL,
not SATEASY. To invoke the facility it is only necessary to set a parameter
SHADOW to a non-zero (positive) value in the network .dat file, and to define a
filename for the output “actual” road trip matrix, ROADIJ in 6.3.4.
Furthermore shadow networks are only available for a single user class, not
multiple classes. In principle the ideas could be extended to multiple user
classes, however the necessary programming extensions have not been carried
out.
∑V (t − t )
a
101
a
100
a
Es = 100 a
∑V t
a
100
a a
Where t a 101 represents the travel time on link a with the trip matrix increased by
1%;
And t a 100 represents the “base” travel time on link a.
Analytically we may write:
dT V
Es =
dV T
So that, given the general form of t(V) in SATURN, equations (8.5a) and (8.5b),
we have:
E=
s nAV n / ( AV n + t0 ) V 〈C
=Es ( BV / C ) / t (V ) V 〉C
levels for multiple user classes. Internal storage requirements may be reduced by
using two alternative schemes depending on whether the trip matrix to be
assigned is “sparse” or not.
Thus if the trip matrix is “sparse”, i.e., it has a small fraction of non- zero T ij cells
(as typically occurs with observed trip matrices) which are not assigned, then
explicitly recording both the destination j and the cell values Tij for positive T ij only
requires less RAM than recording every single T ij value with the origin/destination
implied by the position of a variable within its (ordered) arrays. However if more
than 50% of the cells are positive then the alternative method of recording every
cell value (with the origin/destination implied) is more efficient.
Prior to release 10.9.22 the assumption was that the majority of trip matrices
encountered by SATURN were sparse so only the first method was provided.
However modern models seem to rely much more heavily on synthetically in-filled
trip matrices so, post 10.9.22, both methods are available with the choice being
controlled by an &PARAM namelist parameter SPARSE – T (the historical default)
for the original methodology.
For most current networks our recommendation is to set SPARSE = F. Advice is
also printed in the .LPT files as to whether SPARSE = T or F would use less RAM
for a particular trip matrix.
If there is insufficient RAM available to store the matrix internally (by whichever
method is chosen by SPARSE) then storage reverts to “external mode” with all
inputs direct from the .ufm file. Note, however, that in this case certain assignment
options will no longer work, in particular OBA (Section 21) and multi-core
assignment (Section 15.53). The only remaining option in these cases is to shift to
a version with larger array dimensions (see 15.28).
Furthermore, at the present time, OBA will only accept trip matrices stored
internally in the traditional SPARSE = T format. It is hoped that this will be rectified
in future releases.
The input files are most conveniently defined within the original network .dat file as
illustrated in 7.12.4, although they may also be specified via the .bat procedure
(7.12.5).
1) Choosing the form of the “elastic” demand function; see 7.7.1. Set:
MCGILL = 0 inelastic equilibrium
MCGILL = 1 logit (incremental)
MCGILL = 2 power law
MCGILL = 3 exponential
MCGILL = 4 elastic exponential
MCGILL = 10 nested logit
2) Choosing the form of the distribution model:
MCUBC = 0 No distribution
MCUBC = 1 Incremental distribution; see 7.10.1
MCUBC = 2 Absolute distribution; see 7.10.1
3) Specifying the elasticity parameter:
BETA for MCGILL = 1, 3, 10 or 11 (β in 7.7.1)
POWER for MCGILL = 2 or 4 (p in 7.7.1)
BETA_2 for MCGILL = 10 (β 2 in 7.7.1)
BETA_D for MCUBC = 1 or 2 (β in 7.10.1)
Note that POWER is dimensionless but BETA parameters have units of inverse
generalised seconds; their absolute values are therefore quite different. E.g.,
POWER might equal 0.5, BETA, -0.001.
4) Specifying whether an initial estimate of the actual trip matrix is supplied;
see 7.5.3.2:
REDMEN = F no initial estimate (the default)
REDMEN = T an initial estimate to be read in as a trip matrix. UFM file
T ij '
5) An Estimated Elastic Trip Factor
Note that all cost matrices must have the dimensions of generalised time defined
in units of generalised seconds.
Where:
If the words ‘KR control’ are omitted from the command line, then SATEASY
expects to find the parameters in the default control file SATEASY0.DAT.
Note that all .UFM file definitions are optional and that, generally speaking, it is
much simpler and highly preferable to set them using the namelist parameters
input to SATNET; see 7.12.4. For example FILTIJ may be used instead of
MATRIX.UFM, FILCIJ instead of filcij.UFM etc as illustrated in 7.12.3.
In addition the logical parameter REGO = .TRUE. sets all iteration counters to
zero as required by the RESTART option; see Section 15.4. Its default value is
.FALSE.
Network Title
A new descriptive network title may be set by either:
A character namelist parameter of the form:
TITLE = ‘nettitle’
in which case the new network title is contained on the record immediately
following the namelist records (i.e. following &END) and occupies columns 1 to
76.
♦ That traffic flows are approximately constant over time periods of the order of
30 minutes (or the value set by LTP);
♦ That traffic signals operating with fixed cycle times of the order of, say, 90
seconds impose a pattern of “cyclic flow profiles” within the longer time frame.
Thus the main building block in SATURN is the cyclic flow profile (CFP), the flow
of traffic past a certain point as a function of time. For example, we assume that if
one were to stand downstream from a set of traffic signals operating at a fixed
cycle time of 75 seconds one might observe a pattern of flow as illustrated in
Figure 8.1.
In other words there would be cyclical surges of traffic corresponding to the green
period at the lights and periods of minimal flow corresponding to the reds. Each
75-second CFP would be identical to every other over the full 30 minutes
simulation period, thus enabling us to simulate only one, in this case, 75 second
cycle rather than the full 30 minutes with consequent reductions in computation
time.
The basic principles of cyclic flow profiles are well tried and tested, for example in
the TRANSYT program. (Robertson, D.I. (1974) Cyclic flow profiles. T.E.C. 15
pp.640-1).
♦ the ACCEPT pattern, the pattern of traffic which can actually make the turn;
average number of vehicles waiting for a suitable gap to appear. For further
details see Section 8.4.8.
The best way to appreciate the definition of and the interaction between the
various cyclical flow profiles is to use the node analysis functions within P1X
(and/or SATLOOK) to examine actual simulation nodes; see 11.1.1 and 11.12.
8.1.4 The “Movement” of Traffic via OUT/IN CFPs: NTS and NITS_M
As the OUT pattern from one junction generates the IN profiles for the next
junction traffic, in effect, “moves” through the network.
Since the IN profile at the upstream of link A,B is derived from the various OUT
profiles at A node B cannot be fully simulated until A (and all of B’s other upstream
nodes) have been simulated. Similarly A cannot be fully simulated until all its
upstream nodes have been simulated as well. Thus starting at node B we can
follow the simulation backwards until we wind up at node B again. Simulation is
therefore an iterative process in which we iterate over each node in turn (generally
in numerical order but see 8.3.4 for alternative strategies) until convergence is
achieved as explained further in 8.3.
The parameter NITS sets the maximum number of internal simulation iterations
(default of 20) while NITS_M (which defaults to five) sets the minimum.
Note that the average level of cyclical flow is essentially determined by the
assignment but the shape of the profile is determined by the simulation.
We further note that if the modelled cycle time LCY differs at the “upstream” and
“downstream nodes” then any “shape” associated with the OUT CFPs is
effectively lost at the point of flow transfer so that, in that situation, the IN profile is
assumed to be flat but with the correct level of flow. By contrast, if the two nodes
have different values of NUC, the shape of the IN CFP’s is retained but suitably
averaged per IN time unit. For further details please see Section 15.15.3.
Turning delays at dummy nodes, are by definition, always zero although there
may be link delays if capacity-restraint curves are used on the in-bound arms; see
8.4.4.
We repeat the advice in Section that 5.1.1.1 that the use of dummy nodes is
strongly discouraged except in certain very precise circumstances
♦ Set the ACCEPT value for each time unit equal to its turn saturation flow; see
6.4.6.
♦ If the exit link is blocking back (i.e. the queue on that link exceeds its stacking
capacity) reduce the value per time unit by a uniform “blocking back factor”;
see Section 8.5.
♦ If traffic signals reduce it to zero during the red phases (such that if the phase
change occurs in the middle of a time unit an appropriate adjustment is
made).
♦ Reduce it further to allow for lanes shared with other turning movements.
See 8.9.2 for interactions with traffic on the same arm and 8.8.3.3 for the
interactions with traffic on other arms (which only occurs with merging
movements).
♦ For X-turns at signals (i.e., right turners which are opposed by straight ahead
vehicles in the opposite direction during the green stages) allow a maximum
of TAX vehicles to clear at the end of each green stage from the centre of the
junction (where TAX is user defined and may be link-specific (6.13); default
2). See 8.2.4.
♦ In the case of “blocked” and “unblocked” movements sharing the same lane
at signals (e.g. a lane where straight ahead vehicles can go on green but
right-turners have to wait) a certain number of unblocked vehicles are allowed
to go at the “head of the queue”, their number being determined by their
relative proportion (based on a probabilistic argument as to where in the
queue the first blocked vehicle will occur). See 8.2.5.
♦ If flared lanes have been explicitly coded add extra capacity for those turning
movements which may use them directly and/or for turns in lanes which have
been “relieved” by the flares. See 8.2.6. (N.B. New in 10.9.22)
♦ If the link has been coded as a “capacity restrained” simulation link and the
total capacity at the junction exceeds that of the link then the ACCEPT values
of every turn are factored down in order to equal the mid-link capacity. See
6.4.12 and 8.4.4.
The turn capacity is then determined by summing the individual ACCEPT's per
time unit.
We further note the point made in 6.4.6 that if there are additional effects which
influence the capacity but which are not included in the above set (e.g. the effect
of pedestrian crossings) then it is essential that the user incorporates these
additional effects within the input data, e.g. by reducing the saturation flow.
the case of an “absolute” give way, e.g. for minor arm traffic at a priority junction
giving way to major flows.
However variations are used to represent other less clear-cut situations. For
example, consider two minor arms at a priority junction, both of which feed into the
same exit or else cross and for which there is no well-established priority rule. In
such cases SATURN assumes that the two movements “share” and that the
probability of one finding a gap in the other is given by:
Equation 8.3
GS
V
Pi =0.5 + 0.5 1 − i
Si
and vice versa. Hence each movement receives at least 50% of the available
time and must look for gaps in the remaining 50%.
8.2.3 CAPMIN
Finally, in order to prevent the entry capacity going to zero whenever V i = S i a
minimum capacity CAPMIN may be specified. CAPMIN represents the fact that
as major flows reach capacity they also tend to travel at very low speeds such that
minor road vehicles can force their way in. Therefore the ultimate capacity is the
maximum of either CAPMIN or equation (8.1).
(N.B. Prior to 10.6 CAPMIN was applied at the level of the cycle; i.e., if the total
capacity as summed over each individual time unit were less than CAPMIN then
they were factored up to equal CAPMIN. In 10.6 the rule is applied at the level of
the TIME UNIT; i.e., if the capacity per time unit were less than CAPMIN it would
be factored up. If the flows are relatively flat, i.e., if there is no pronounced
platooning due to traffic signals in the vicinity, then the differences are very small;
8.2.4 Stacked Vehicles Clearing at the end of Green; Link-Specific TAX Values
As mentioned above (note 6, 8.2.1) up to ‘TAX’ vehicles can clear at the end of
each green phase for X-coded turns at signals in order to represent the behaviour
of vehicles which “stack” in the centre of the junction and only clear once the
green phase has ended.
Originally TAX was a universal parameter; with SATURN 9.4 it became a link-
specific parameter which may be set either using the X-file facility (6.13) or (post
10.9) on individual link data records (see 6.4.14 and 6.4.15). Thus links with very
wide junctions or with multiple stacking lanes may be assigned a much larger TAX
value than more constricted junctions. Users will probably find that, post 10.9, the
“extra line convention” described in 6.4.14 will be the most convenient method to
define link-specific TAX values.
Note that TAX refers to the total number of stackable pcu’s, not the number per
lane.
TAX plays a further role in allowing unblocked vehicles to pass in a lane shared
with an X-turn; see 6.4.9.5 and 8.2.5.1 below.
In these cases if the vehicle at the head of the queue is “unblocked” it will
proceed; if blocked, it will not and all vehicles in the queue behind will have to wait
until the head vehicle can go. Clearly if the head vehicle does go then the same
situation occurs with the next vehicle in the queue, etc. etc.
It may be shown that the average number of unblocked vehicles at the head of the
queue is given by:
p
n=
(1 − p )
where p is the probability (fraction) of unblocked vehicles. Thus if 3/4 of vehicles
in the queue are unblocked on average 3 will proceed.
SATURN therefore adds the equivalent of n vehicles to the ACCEPT profiles of
the unblocked turns at the start of the green phase.
We may also note that the presence of a flared lane will also clearly increase the
capacity for X-turners but this affect is discussed in the next section; the above
contribution applies only to straight ahead capacities.
The main difference between TAX and FLAREX, as far as the X-turners are
concerned, is that the TAX pcus are allowed to clear at the end of a green phase
whereas any vehicles remaining queued in the flared lane must wait until the next
green phase to clear.
(Note: the above layout represents the use of the right turn FLAREX lane but also
equally applies to the left-turn FLAREF lane).
A represents the ahead movement in the “main lane” while F represents the flared
movement which diverges from the main lane into the flared lane. The length of
the flare can stack up to X PCUs. Let Q A and Q F represent the length of the
queues at the stop line at any point in time for movements A and F respectively.
PRIORITY JUNCTIONS
We consider first the case of priority junctions which are somewhat simpler than
traffic signals although most of the modelling principles apply to both. Extra rules
for signals are dealt with below.
Thus, at a priority junction, we may envisage four different scenarios:
SIGNALISED JUNCTIONS
Signalised junctions differ primarily in that the queue profiles are “deterministic”
rather than “stochastic” although the general principle of determining whether the
“shoe pinches” either upstream or downstream still applies.
An additional factor, however, at signals is that during the red phase it is assumed
that both A and F vehicles will build up queues in their distinct lanes and that there
is therefore a fixed “reservoir” of traffic which can exit at the stopline capacity once
the lights go green independent of any restrictions at the point of entry to the flare.
The stopline capacity continues to apply as long as there are vehicles left in the
reservoir which is continuously modelled by subtracting those vehicles which can
exit at the stopline while adding the maximum (restricted) entry flow at the flare
entry.
saturation flow. Thus at the start of a green phase we assume that the “stacking
space” in lane 2 beyond the flare is full and that the queue will (a) decrease by the
saturation flow at the stopline and (b) increase (at a slower rate) as traffic enters
the stacking space. Once the queue goes to zero the capacity is determined by
the maximum rate at which traffic can enter into (and depart from) the stacking
space.
In addition changes in capacities due to the flare may lead to changes in lane
choice (and equally the lane capacities are affected by lane choice so an iterative
“balancing” algorithm is required).
Note that the extra capacity allocated to A was only added in Release 11.2.8 while
the extra “knock-on” impact on L was only included in Release 11.3.6.
would indicate major convergence problems at node 21, possibly minor problems
at node 47, but none elsewhere.
The internal convergence - or lack of it - can cause certain apparent
inconsistencies in the outputs from the analysis programs such as SATLOOK
which, by re-simulating junctions with the IN patterns fixed, allows for changes in
the local OUT profiles which can, in turn, alter turn capacities, etc. However,
generally speaking, such problems are rare.
There is one qualification to this which is that if one or more arms at a node are
blocking back then the simulation is also influenced by affects “downstream” and
therefore that node may no longer be considered as a “moon” and must be
included within the main topologically ordering. Thus the order of node simulation
is not necessarily fixed over simulation iterations.
Those simulation nodes which are considered as moons may be displayed as
“selected nodes” within P1X; see Section 11.6.5.3.
♦ the “geometric delay” term TDEL applied to all give-ways at priority junctions
and roundabout turns;
♦ the time spent in the queues given as cyclical flow profiles (DA code 1628;
see App. J.3.);
♦ the “random delays” described in 8.6 (DA code 1658; see App. J.3.);
time period (i.e., LTP) suffers the maximum delay equal to twice that given by
(8.4).
Clearly LTP is a critical parameter in determining delays (in particular for over-
capacity turns where the queuing delays can far exceed the transient delays. Its
role is discussed further in 8.4.5.
(The case of multiple time periods is more complicated since the initial queue
need not be zero and permanent queues may either increase or decrease but the
distinction between transient and queue delays still holds; see 17.6.)
Note that with queuing delays (assuming as above that the queue increases over
the time period) part of the time the arriving vehicles spend in a permanent queue
will be outside (later than) the time period simulated. Normally this component of
delay is included in the definition of the average delay per turn. However in
certain simulation summary statistics a distinction is made between the vehicle-
hours spent in permanent queues within the time period and in later time periods;
see Section 17.8.
See section 8.4.6 for a discussion of extremely long simulated delays being
calculated.
For turning movements A and n are calculated by the program simulating three
different delays: that at zero flow, that at the current assignment flow and that at
capacity as illustrated in Figure 8.3. If the current flow is either too high (over
capacity) or too low (near zero) then a suitable arbitrary flow is used to determine
the middle point (20% or 80% of capacity).
The “power” n is restricted to be in the range 0 to PMAX, where PMAX is a user-
set parameter (6.3.3) which defaults to 10.0; calibrated values in excess of PMAX
are replaced by PMAX. Note that very high values of n, e.g., 10, correspond to a
curve which is effectively a right angle: a flat horizontal segment for V < C with a
vertical segment at V = C. As such it is probably not very realistic (as well as
making life difficult for the assignment to converge) such that setting lower values
of PMAX, e.g., 5, may be worth considering.
Warnings occur if problems occur, for example if the simulated delays decrease
with increases in flow or if the best-fit value of n exceeds an upper limit. However
if problems do occur the flow-delay curve always goes through the “actual” point
in order to ensure consistency between assignment and simulation.
Where:
V i is the flow for turn i, and
a i is a weight proportional to the inverse of the capacity of that turn “at the
stop line”.
Hence heavily impeded turns (e.g. due to give-ways) are assigned a greater
weight than unimpeded turns.
Which flow-delay curve is used in the assignment is determined by the value of
ROSIE at that point - see Section 7.1.3 where a different assignment algorithm is
employed with ROSIE = T.
We may also note that the method by which turning flows at roundabouts are
added together and modelled as total entry arm flows (see 8.7.1) is an implicit
example of ROSIE. In this case, however, the weighting factors are all 1 and the
treatment is applied whether or not ROSIE = T.
t (v) =
t0 + AV n V <C (a)
where the parameters t o , A etc. are defined via the .dat file. C is interpreted as
the “link capacity”.
For flows in excess of capacity it is assumed that the link travel time remains fixed
at t C = t o + A * Cn. The reasoning behind this assumption is as follows.
The link capacity C should be interpreted as the limiting capacity of the link itself,
generally a function of the minimum road width along the link, as opposed to the
“junction capacity” C j set at the downstream end. Generally speaking on most
urban roads, “case (a)”, C j < C and therefore the question of what happens to the
link speeds when flows are in excess of C j is not highly relevant since the travel
times on the links are almost certain to be “swamped” by the queuing delays at
the junction.
However for some sorts of links, in particular motorway-style links, “case (b)”, the
above reasoning does not hold since the “junction” and “link” capacities are
effectively one and the same thing. Flows in excess of capacity, in a very strict
sense, cannot exist, although in SATURN flows in excess of capacity are allowed
to enter a link if there is sufficient capacity upstream. We would, however wish
them to be simulated as having travel times in excess of t C . How this is done is
explained next.
In either case an extra condition is imposed on the capacities of the turns at the
downstream end of speed-flow links which is that their “total” capacity C j must be
less than or equal to the link capacity C. If it is less - case (a) above - no further
action is taken; if greater - case (b) - the individual turn capacities are factored
down such that C j = C.
In the event of V > C and C < C j the turn capacities will be reduced (“choked”)
such that queuing occurs at the turns. As flows increase beyond C there will be
no increase in their “link” travel times, fixed at t C , but there will be a rapid increase
in their junction queuing times. Hence on motorway-style links the total travel
time - link plus turn -- is an increasing function of flow, even though one
component, the link time, has an upper limit. In effect the extra link travel time is
now associated with a queue at the junction.
It also follows that if queues do form due to the mid-link capacity then the exit
flows from the downstream junction will be limited to the mid-link capacity C, i.e.,
“flow metering” (8.2.8) occurs, and, equally, blocking back may occur at the
upstream junction
N.B. The reduction in junction capacities, flow metering and/or blocking back do
not apply if the downstream junction is a dummy node (5.1.1.1), in which case
the turn capacities at the dummy node remain, in effect, at infinity and their delays
at zero. On the other hand changes to the cruise speeds do apply to capacity-
restrained links approaching a dummy node.
An important side-effect of this modelling framework is that the effects of blocking
back and/or flow metering along motorways may now be simulated and will be
determined either by the explicit capacity of the link or by the junction, whichever
is the lesser.
Finally we note that any “delays” on the link due to capacity-restraint curves are
distinct from the queuing delays “at the stop-line” and are modelled quite distinctly.
One obvious difference is that the capacity-restraint delays are the same for all
traffic on the link whereas the stop-line delays may differ for individual turning
movements.
The fundamental assumption within SATURN is that flows remain constant (i.e.,
the profile is flat) over the time period LTP at the rate specified by the trip matrix.
Clearly this must be seen as an approximation to what happens in real life where
flow rates change in a continuous fashion over time. As illustrated in Figure 8.4,
SATURN approximates the (real life) continuous profile by a flat profile such that
the total flow within the time period modelled is the same (or should be the same)
in both cases. In this example SATURN slightly underestimates the flow during
the “peak of the peak” and correspondingly overestimates the flow during the
shoulder; clearly the “flatter” the true profile is, the better the approximation.
If the “structure” of the observed flow profile does not fit nicely into the rectangular
assumption illustrated in Figure 8.4 then the user may need to consider modelling
multiple time periods as discussed in Section 17.3.
If flows are in excess of capacity in a large number of links across the network the
over-all time spent in over-capacity queues can be a significant component of the
total travel time and it becomes highly important for scheme evaluation to get
those numbers correct. Which, in turn, means that it is highly important to get LTP
“right” so that taking simple arbitrary values such as 30 or 60 minutes may not be
all that useful. Indeed LTP should be regarded as a base-year “calibration”
parameter which needs to be carefully considered.
It should also be pointed out that the traditional default value used in SATURN for
LTP, i.e., 30 minutes, is probably not a very sensible default for modelling peak
conditions since in real life most peaks persist for longer than 30 minutes. You
have been warned! And a warning message is generated in SATNET if LTP is not
explicitly set in the network .dat file, (On the other hand 30 minutes may quite a
reasonable default for use with multiple time periods.)
In addition users may need to consider changing the value of LTP in future year
forecasts if it is felt that growth in the future is not going to be uniform over time of
day but that some form of “peak spreading” is likely to occur whereby peak flows
do not so much increase “vertically” but tend to spread “horizontally”. Thus an
alternative to assuming that the trip matrix grows by, say, 2% per annum may be
to assume that LTP grows by 2% per annum. Clearly this may introduce a
number of other problems such as how to evaluate and compare flows over 60
minutes in the base year with flows over 70 minutes in the future; in practice
SATURN users are unlikely to vary LTP from base-year values, but the possibility
needs to be considered as do the base-year calibration issues.
We may also note that the simple rule that delays are proportional to LTP is not
necessarily strictly correct since, as you increase LTP and therefore increase the
delays on over-capacity links/routes, more traffic will divert to alternative routes.
The rate of increase may therefore be less than linear. Hence the choice of LTP
also has an impact on assigned flows as well as delays and equally has an impact
on blocking back (8.5).
The upper time limit MAXQCT may also be interpreted in terms of an upper V/C
limit. We may see what this is by solving an equation:
=
MAXQCT ( LTP 2) * (V C − 1)
Thus if MAXQCT = LTP then the upper limit in Fig 8.5 corresponds to V/C = 3; if
we take the default values of MAXQCT = 60 and LTP = 30 then V/C = 5.
We may therefore see that MAXQCT only “kicks in” at V/C ratios which are much
higher than would be normally be expected in most networks. However, given that
initial stages of the assignment very often generate extreme solutions with
abnormally high V/C ratios, it is possible that the upper delay limits will at least
have some bearing on the pattern of assignment convergence.
♦ Very high PASSQ flows (i.e., initial queues well in excess of the capacity of
the subsequent time period);
♦ Very high V/C ratios (such that MAXQCT would come into play);
♦ Lane sharing;
♦ Insufficient capacity for traffic from external zones to enter the simulation
network.
The resulting problems were characterised by extremely poor convergence
between the simulation and the assignment.
As a result the methods used to calculate flow-delay curves and/or lane sharing
were “tightened up” to remove the problems and to provide much more robust
solutions.
It needs to be stressed that these changes only really affect networks which are
very heavily overloaded for one reason or another so that, for the vast majority of
tested networks, the effects will be minimal. Therefore, in order to assist users
who wish to replicate previous results using SATURN 10.5, a new logical
parameter Q105 (set under &PARAM in network .dat files) has been introduced. If
Q105 = T (its default) the new rules are used; if Q105 = F the old rules are used.
Users are strongly advised to keep Q105 = T. Even if Q105 is F it does not
guarantee that old results will be replicated since, inevitably, there are a number
of other new features in 10.5 which cannot be removed and which will also give
potentially slightly different results.
N.B. From release 10.9 onwards Q105 is always assumed to be T, i.e., setting to
F has no effect.
which are estimated to be queued at the downstream stop line during each of the
NUC time units into which the basic cycle is divided.
In the simplest situation if there are 2 “ARRIVE” pcu’s and 1 “OUT” pcu (e.g.,
during a green phase at signals) then the QUEUE increases by 1. Equally during
a red phase at signals the queue increases with every pcu that arrives since there
can be no departures.
The calculations, however, becomes more complicated with gap-acceptance at
priority junctions or roundabouts where probabilistic arguments come into play;
e.g., if an acceptable gap appears in the major flow we need to know the
probability that there is at least one vehicle in the queue which can accept it.
Therefore we need to know the probability distribution of the number of vehicles in
the queue which is related, via a sub-model within the simulation, to the average
queue length. Thus, if the average queue length is, say, 1 it does not necessarily
follow that there is always a vehicle available to accept a gap: an average queue
of 1 could result if there were a 25% probability of no queue, a 50% probability of
1 pcu and a 25% probability of 2 pcu’s (hence a 75% probability that the gap will
be accepted), as opposed to 100% probability that there is always exactly 1 pcu in
the queue which also gives an average queue of 1 but a 100% probability of the
gap being accepted. Essentially the greater the average queue length, the
greater the probability that there will be 1 or 2 more queued pcu’s available to
accept a gap.
Additional technical information on the probability distribution of queued vehicles,
etc. etc. is contained in the technical file notes as referred to at the end of
Appendix C. Copies are available either from DVV or from Atkins.
the permanent queue goes to zero part way through the time period) or as the
sum of the two.
In general the term “average queue”, if not specifically modified as in “average
transient queue”, is assumed to refer to the sum of the two. For example, in P1X
annotations, “average queue” always refers to the total queue.
The total (i.e., transient plus over-capacity) average queue length per simulation
link is included as an array (DA code 1433) within every .ufs file and may be
displayed as a link property using P1X (along with various other definitions of
queues such as the V>C queue at the end of the time period). As mentioned
above this array is in units of pcu’s aggregated over all turns and all lanes.
Similarly maximum transient queues per turn and per link are also stored as DA
codes.
8.4.8.7 Comments
Finally we note that the queuing model used in the SATURN simulation is
somewhat simplified. For example, it is basically a “vertical” queue model in which
vehicles arriving at the downstream stopped line are added to the queue. It
therefore ignores the fact that the vehicles actually arrive at the end of the queue
a bit further back on the link and therefore spend a bit longer in the queue than in
“cruise mode” (although the total travel time on the link is unaffected). It also
ignores the phenomenon whereby, at traffic signals, the queue continues to
progress backwards at the start of a green phase until the “start wave” meets up
with the “arrival wave” (in terms of shock wave theory).
This, along with other sources of error in calculating flows and capacities, means
that any queue lengths calculated by SATURN need to be taken with a large
pinch of salt. For example, it is not very realistic to expect the modelled queue
lengths to closely reproduce observed queue lengths (however they are defined);
at best one might hope to classify a link into very broad bands such as “well below
capacity”, “roughly at capacity”, etc., etc. and hope that at this level modelled and
observed queue lengths match.
capacity been 500 the blocking back factor would only have been 499/500 =
0.998.
Generally speaking, if a blocking back factor is applied on a link A-B then there
must be one or more turning movements into A-B for which the flow exceeds
capacity and therefore for which over capacity queues (8.4.8.2) and V>C delays
(8.4.2.2) result. There is, however, one exception to this rule as described in note
g), 8.5.2.
f) The queue length used to determine whether blocking back occurs includes
both the (average) transient queue length and the over-capacity component
(for which two options exist as explained in note h) below). However, a
further condition is that, in order for blocking back to be applied from a
downstream link into its upstream link(s), there must be at least one over-
capacity turn out of the downstream link. This is to avoid possible problems
with very short links (e.g., where a pedestrian crossing node has been
included a few metres away from a signalised junction) where the average
transient queue on its own may exceed the stacking capacity.
If the transient queue does exceed the stacking capacity on its own but
none of the turns downstream are over capacity then it is assumed that the
queue may “temporarily” spill back into the upstream link(s) without
necessarily causing any blocking back on those links. For example, the
“saw-tooth” queue which is typical of signalised nodes may extend into the
upstream link during the “red” part of its cycle when the queue is at or near
its maximum length but not during its “green” phase. In this case we make
the assumption that the capacities of the upstream links are not
systematically reduced by a blocking back factor.
g) There is, however, one rider with respect to the (relatively infrequent)
situation where transient queues exceed the stacking capacity but there are
no downstream turns where V>C. For example, considering the link A-B with
the numerical values given in 8.5.1 above, imagine that an entry flow of 500
gives a transient queue at B which exceeds S but for which there are no
V>C queues at B. If, furthermore, a minimum entry flow of 750 would be
required in order to create a V>C queue at B then a blocking back factor of
0.75 is applied to reduce the upstream entry capacity to 750. Which, given
the current entry flow of 500, will not limit the flow entering A-B and which
will not create permanent queues at A. However, by creating a capacity of
750, it will at least “discourage” any future assignment from assigning a flow
in excess of 750 to A-B.
On the other hand if the minimum entry flow at which V>C at B were above
1,000 then no blocking back factor would be applied to A-B.
h) The choice between basing blocking back on average or maximum queues
is determined by the logical parameter QUEEN (see 6.3.1), FALSE or TRUE
respectively. Setting QUEEN=FALSE, average queues, is probably
recommended for models of a single time period (no PASSQ) where the
over-capacity queues start by definition at zero and grow linearly so that the
maximum is always at the end of the time period and the average over-
capacity queue is therefore half the maximum. This therefore reduces the
onset of blocking back which, from the point of view of convergence, is
probably a good thing.
However for multiple time periods there are distinct advantages in setting
QUEEN=TRUE, maximum queues, since one might expect that the
maximum queue, once formed, would continue to block back at the same
level over several time periods until it dissipated. This also minimises
problems of oscillating queue lengths. However, we note that this option is
very rarely used with user feedback suggesting that the resulting levels of
congestion in the subsequent time periods were too high. Further feedback
from user’s applications would be welcome.
released version 10.4.10 this facility was not included and the new rule was
effectively “hard-wired in”).
or two pcu’s and blocking back can occur very easily and with unrealistically high
impacts upstream. The new rule prevents this happening.
However, there is one exception to the second rule which is when link (A,B) has
more lanes than (S,B), e.g., there is a flared segment at the end of (S,A). In that
case link (A,B) may block back directly into (S,A) and we treat A as a “genuine”
node.
N.B. This rule does not apply post 10.9 under BB109 = T (see 8.5.5 below) where
alternative rules are introduced to identify genuine mid-link nodes which “break”
chains.
In release 10.8 the above rule was extended to work in a “downstream” sense as
well as “upstream”. Thus, in the above diagram, assuming that A-B did not have a
sufficient queue to block back on its own but S-A did (e.g., A was very near to S
rather than near to B) then the stacking capacity considered for S-A would be the
sum of S-A and A-B.
STOP PRESS: Post release 11.1.9 the “internal” blocking back as described
above has been removed in order to improve convergence so that currently the
full queue is allocated to the most downstream link (i.e., Y-Z above), the blocking
back is applied at the upstream link (A-B above, so no change there) and there is
no blocking back and/or queues on any of the intermediate links.
We note that the definition of when a series of links constitutes a chain is set in
the network build stage by SATNET whereas, pre 10.9, the identification of
intermediate nodes was carried out entirely within the simulation. 10.9 has also
extended the definition of a chain to several alternative configurations as depicted,
for example, in Figure 5.2 (b), (c) and (d).
This situation has been found to occur on entry ramps onto a motorway where a
signalised junction at A controls the flow entering the motorway at B by the choice
of percentage green time at A.
Imagine that the queue on B-D exceeds the normal stacking capacity on that link
and extends backwards into link A-B. Under normal SATURN rules this would
mean there would be blocking back on A-B which would reduce the exit capacity
to both exits C and D.
However what might happen “on the ground” is that the queue from B-D only
blocks back into and is contained within its own outside lane on A-B and that the
turning movement A-B-C and its exclusive inside lane are unaffected. We could
therefore think in terms of two “partial chains” – B-D plus the outside lane on A-B,
B-C and the inside lane on A-B – for which we would like to define increased
stacking capacities.
A pragmatic solution to this problem would be to increase the stacking capacity on
B-D to include the additional stack from the outside lane on A-B, ditto with B-C
and the inside lane. If the queue on either B-D or B-C then exceeded the
increased stack then blocking back would be correctly(?) applied to both exits.
6.4.11) is very small and a very small change in assigned and/or simulated flow
can have a very large impact on blocking back factors. A not infrequent example
is a pedestrian crossing slightly displaced from a signalised junction which is
coded as a separate node with a connecting link of, say, 2 metres. In this case the
stacking capacity may be less than 1 pcu and almost any over-capacity queue will
create severe blocking back. Other examples occur at signalised roundabouts
which are coded (quite legitimately) as a series of separate signals with very short
links and, again, very small stacking capacities.
In principle, the “sum of stacks” rules described in 8.5.4 and 8.5.5 may adequately
deal with the problems; however, this may not always be the case.
In such situations it is very often good practice to explicitly define stacking
capacities on the link records which reflect the “full” stacking capacity of that link
and its immediate predecessor(s) in order to prevent unstable blocking back
patterns. One such example has already been described in 8.5.5.6.
As a general principle it is probably preferable to have a model which converges
well but which fails to detect certain potential occurrences of blocking back than to
have a model which detects all possible blocking back situations but converges
badly. (Although ideally one would like to have both; unfortunately this may not be
always achievable within time constraints, etc. etc.)
Tables showing the (up to) 10 worst links in terms of changes in their blocking-
back factors from one simulation to the next are given in the SATALL .lpt files
(see 9.9.1) and may also be viewed interactively within P1X.
=(d ) { 1/ 2
(T / 4q ) ( q − s ) + ( 4q / T )
2
}
+ (q − s)
where:
(d) = the average random delay per vehicle
T = the time period over which:
q = the arrival rate is q (in pcu/hr), and
s = the capacity (in pcu/hr).
which in the limit of q = s, i.e., capacity flow, reduces to:
( d ) = ( T / 4q )
0.5
For over-capacity turns, q> s, random delays are “capped” at the maximum value
calculated for q = s. In addition the definitions of q and/or s may be affected by
lane choice and/or blocking back; see 8.6.3 to 8.6.6 below.
As an example for a flow equal capacity of 1800 pcu/hr with LRTP = 30 (minutes)
<d> would be 30 seconds. For LRTP = 60 minutes it would be 42.4 seconds or
with flow and capacity doubled it would reduce to 21.2 seconds. At 90% of
capacity (q = 1620, s = 1800, LRTP = 30) <d> would be 9.16 seconds.
Hence the contributions from the random delay components are not particularly
large and, in terms of modelling “realism”, are probably preferable to assuming
zero or near zero delay for flows right up to capacity. The latter affect occurs in
particular with major arms at priority junctions where, unlike signals, there is no
cause of delays (apart from possibly small perturbations in the arrive profiles due
to platooning from traffic signals which can cause temporary periods of over-
saturation to occur during the simulated cycle). The introduction of a random
delay component is therefore generally to be recommended by setting LRTP > 0.
Note that in calculating <d> in SATURN the time period T need NOT be identical
to the time period simulated - in fact the value of T used is given by the parameter
LRTP (Length of the Random Time Period) as opposed to LTP. There are two
essential reasons for this:
♦ By setting LRTP = 0 the user can effectively suppress all random delays since
in this case <d> = 0 (not recommended; see below);
♦ The random delays calculated for, say, two successive 15 minute time
periods will not be the same as the delay calculated for a single 30 minute
time period. Thus LRTP should be chosen to approximately equal the length
of time since the flow became equal to q, e.g., the beginning of a peak period.
This distinction, however, is probably only critical to users who are using
SATURN to look at successive time periods, not those who are modelling a
single time period.
As a rule of thumb we would recommend that, for single time period models,
LRTP should be set equal to LTP. For multiple time periods LRTP should probably
be longer than the LTP-values for single time periods but possibly less than the
total time period modelled.
However, whichever value is chosen for LRTP, we would also strongly
recommend that it not be left at its default value of zero since:
a) the additional delay contribution is probably realistic and (b) by making delay
a “smoother” function of flow it makes both assignment and assignment-
simulation convergence easier.
b) applies particularly to major arms at priority junctions where, if LTRP = 0, it is
possible to have zero delay from zero up to capacity flow followed by a
sharp (discontinuous) transition to linear over-capacity delays; see 9.5.1.
The problem which this introduces is that the random delays may jump in a
discontinuous fashion with changes in flow as the lane choice shifts between
shared lanes and a single lane. This, in turn, creates problems of convergence
between assignment and simulation.
This problem may be overcome if the random delays are based on “estuaries”
rather than “rivers” where an “estuary” is defined to be a river assuming that all
available lanes are used by all turns. Thus, in the above example, all three turns /
both lanes would always be in the same estuary independent of the actual lane
choice. If, therefore, we always use the estuary to define the aggregate flows and
capacities for random delay calculations there cannot be any discontinuities in the
calculation.
To use the estuary definition rather than the river definition a logical parameter
RTP108 must be set to .TRUE, under &PARAM in the network .dat file. N.B. The
default value for RTP108 was changed to T from F in release 10.9.
C S m (1 − VM / S M )
=
GS M
where:
S m is the saturation flow for that entry;
V M is the on-roundabout flow crossing that entry;
S M is the maximum roundabout capacity as defined on the node data record
RSAT (6.4.7);
G is the gap parameter (GAPR).
(N.B. strictly speaking (8.9) is applied to each individual time unit so that the
ACCEPT or capacity profile may vary over the basic cycle time as the circulating
flows vary.)
This is a somewhat simplified model in that no distinction is made between the
different possible exits from each entry arm or of the possible allocation of
different exit movements to different lanes. Nor does the on-roundabout flow
distinguish between vehicles which are taking the next exit (and might therefore
be expected to be at the “outside” of the circulating lanes and therefore impeding
entry flows the most) and those going on to later exits (on the inside and
interfering least).
In fact turning flows from the same entry arm at a roundabout may be seen as
implicit examples of “rivers” as explained in 8.8.2.
This implies that in fact the values of the first and last lanes used per turn on
roundabouts (see 6.4.1) are ignored and set equal to 1 and the number of lanes
respectively, and equally that the saturation flows per turn must all be equal to the
total saturation flow for the arm as a whole. No turn priority markers are necessary
- the give-way rules are implicit.
The maximum roundabout capacity is also the same for all entry arms and
logically should be greater than or equal to the saturation flow for any input arm
(or, strictly speaking, the saturation flow per arm should be less than or equal to
the circulating capacity).
Delays, whether within the simulation or the assignment, are calculated for each
individual entry arm separately based on the total arrival flow on that arm, its
capacity, the probability of gaps, etc. etc. and applied equally to all turning
movements from that arm. (But see the next paragraph for additional turn-specific
delays.) If an arm is over capacity then the nominal capacity per turning
movement is allocated in proportion to their flows.
Note that an extra delay is also added to each turning movement at roundabouts
to reflect the proportion of the total circulating time on the roundabout as defined
in columns 16-20 of the 11111 node data records (6.4.1). Thus if the circulating
time on a 4-arm roundabout is 3 seconds then the circulating time to the second
exit arm would be 1.5 seconds.
We may note that the treatment of delays and flow-delay curves at roundabouts is
an example of the ROSIE option for combining flows in shared lanes; see 8.4.3.
U-turns on 2-way arms are automatically included for roundabouts coded as
junction type 5 but not 2. Since logically U-turns should always be possible on
roundabouts (although not necessarily widely used) it follows that roundabouts
should always be type 5, not 2. Type 2 only really exists for historical continuity.
where E i is the exit flow on that arm (and which therefore exits before traffic
enters). Clearly for a one-way inbound arm E i is zero.
The K s factors may only be defined on a link-by-link basis using the network X-file
facility; see 6.13. There is therefore no universal parameter which may be set as,
for example, with TAX. (In effect the universal default value is zero).
8.8.2 Rivers
For certain modelling purposes turning movements and/or lanes are aggregated
together into “rivers” where a river consists of a set of movements where each
member shares lanes with at least one other member. For example, if a left turn
uses lane 1, straight ahead turns use lanes 1 and 2 and right turns use lane 2
then the left and right turns are in the same river even though they do not have a
lane in common.
Note that the definition of a river is based on “usage”, not purely on lane markings
so that, in the above example, if straight ahead traffic were allowed to use lanes 1
and 2 but (due, say, to heavy right turning traffic) only used lane 1 then the left
and straight ahead traffic would be in one river and the right turners in another.
If one member of a river is over capacity then all members are and they have
equal V/C ratios and discharge, in effect, as a single queue. The same principle
applies equally to individual lanes. This has implications for the way in which the
over-capacity delays are calculated, particularly under the ROSIE option (see
7.1.3 and 8.4.3).
Information on actual lane choice, the grouping of turns into rivers, various
definitions of capacities etc may be found using the numerical output tables option
within SATLOOK (11.11.1). An explanation of the tables used is given in the next
section.
We may also note that all turning movements from the same entry arm at a
roundabout are implicit examples of rivers since they are assumed to potentially
share all available lanes. See also 8.7.1.
The amount of traffic transferred between lanes is calculated using the (assumed)
principle that each lane of the “major” arm A-B carries equal flow including the
flow D-B-C allocated to the merging lane (in this case lane 1) but factored by a
parameter APRESV (as in “apres vous”) which indicates the willingness of drivers
to accommodate merges. Thus if APRESV = 0 no preference is given to merging
traffic whatsoever, if APRESV = 1.0 they are effectively given equal weight.
Mathematically we could write:
Equation 8.10
(1) ( 2)
VAB + VDBC ∗ APRESV =
VAB
commonly when two motorways merge together. In this case BOTH arms will
have their lane choices adjusted such that for both arms the underlying principle
of equal flow per lane (including the “other” merging traffic in the central lane) will
be established.
Figure 8.9 - A “Y Merge”
Note that in the case of a Y-merge the implicit assumption is that there is always
one and only one central shared merging lane independent of the number of lanes
on the two merging arms and on the number of arms downstream. Thus our
model is one of 2 + 2 lanes into 3 or 3 + 3 into 5 even if the downstream arm had,
say, 4 lanes in both cases. (The presumption is that 2 + 2 into 4 would not have
been coded as a Y-merge in the first place.)
There is therefore a strong implication that both arms will have more than one
lane, most likely the same number, and indeed this was the presumption when T-
merges were first introduced into SATURN, However, since then, it has become
evident that Y-merges can also be applied perfectly happily at “asymmetric”
junctions (i.e., a different number of lanes on both arms), of which entry ramps
onto motorways are the most common example.
Our current “best advice” is therefore that double-M merges should be used in
preference to single-M merges in asymmetric situations such as motorway entries
where entry priority is in some sense “shared” between the two flows, even if, in
practice, the on-motorway traffic may have a slightly “higher priority” than the entry
traffic. A potential problem in coding a motorway entry ramp with an M on the
ramp only is that if the flow on the main motorway nears or exceeds capacity the
probability for gaps on the entry ramp nears zero and the entry capacity goes to
zero (or, strictly speaking, CAPMIN).
Note that this advice (post January 2012) contradicts previous advice to use
a single-M coding for motorway entry ramps.
If one arm has only one lane (e.g., a single lane ramp) and the other has multiple
lanes then clearly it is no longer possible to adjust flows on the single lane. Indeed
a Y-merge where one arm has one lane and the other has multiple lane leads to a
“Serious Warning” (131/132) since it is possible for the multi-lane approach to
significantly block the entry capacity for the single lane;
Note that the case of a single lane on both entry arms of the Y is accepted
although possibly unusual in practice.
Note that, prior to release 11.1, in the case of a Y-merge the parameter APRESV
was not used as both merging streams were given equal weight with the flows
into which they are merging: in effect APRESV = 1.0 here and no “voluntary” lane
shifting took place. However under release 11.1 traffic flows on both arms are
allowed to change lanes upstream of the Y-merge as reflected by their (link-
specific) APRESV values. By reducing traffic in the shared lanes this increases
the capacity for both movements.
Cm S m (1 − VM S M )
=
GS M
We note the critical role played by G S M . Figure 8.10 illustrates graphs of C m vrs
V M under three possible situations where: (a) G S M < 1, (b) G S M =1 and (c) G S M
> 1. Thus, under (a), C m is relatively insensitive to the major flow V M until it
approaches capacity whereas with (c) C m decreases much more rapidly as a
function of V M .
0.8
0.6
Cm
0.4
0.2
0.0
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
VM SM
(Vm + VM ) Sx < 1
where S X is the saturation flow (assumed equal to capacity) of the exit lane. In
general, within SATURN, we will not have the value of S X specified, particularly if
it is at the upstream end of a simulation-coded link. However, if we assume that
the physical characteristics of the exit lane will not be that different from those of
the two entry lanes, we can approximate (Equation 8.12) as:
Equation 8.13
Vm Sm + VM S M < 1
or
Equation 8.14
Vm ≤ Cm ≤ S m (1 − VM S M )
Equation 8.14 therefore imposes a second restriction on C m such that the final
capacity will be the minimum of Equation 8.11 and Equation 8.14. Note that
Equation 8.14 is identical to that represented by case (b) in Figure 8.10 where
GS M = 1. Thus Equation 8.14 only sets a lower capacity C m in case (a) in Figure
8.10 when GS M < 1 or G < 1 / S M . In other words the capacity restrictions due to
funnelling place a lower limit on the effective value of the gap for merging, G (i.e.,
GAPM) = 1 / S M .
If the critical gap is greater than 1 / S M or the merge is not considered to funnel
then no further capacity restrictions above and beyond Equation 8.11 are
considered.
where V m and S m are the (actual) flow and the saturation flow of the minor
merging turn and C M ’ is the “pre-squeeze” capacity of the major arm lane (subject
to the restriction that C M > CAPMIN).
Note that the actual minor-arm flow V m is restricted to be less than its capacity
calculated after gap acceptance and/or funnelling, i.e. Equation 8.11 and
Equation 8.14, which, in turn, depend on the flow on the major arm. Hence there
is a state of “equilibrium” between the two movements
In general this reduction in capacity should not be sufficient to convert the major
movement A-B-C from under capacity to over capacity on the basis that, if A-B-C
were near to capacity, then there would be relatively few gaps available to D-B-C
to enter and the traffic that would be allowed to enter would be less than V ABC –
V DBC . However, it may be possible with very small GAPM values for this to
happen.
Note that the reduction in capacity takes place whether or not APRES equals
zero.
In summary, capacity restrictions on a single-M exit arm only come into play when
M108 = T, FUNNEL = T, a C-modifier has not been used and GAPM < 1/S M .
Lanes
Turn To 1 2 Total
Note: All flows in pcus per hour. Figures in brackets are capacities
Thus we see that lane 1 above is shared by two turns with a flow of 248 pcu/hr
turning to node 19 and 130 pcu/hr to node 45. Their respective capacities within
this lane are 241 and 126 pcu/hr. Lane 2 on the other hand is reserved for the
second turn only with a flow of 459 pcu/hr and a capacity of 448. The -1 under
lane 2 for the turn capacity into 19 indicates a banned movement from that lane.
A value of 0 would indicate an allowed movement but no capacity.
The numbers on the far right give the total flow and total capacity for each turning
movement. Those at the bottom give the total flows and capacities per lane.
Totals for the link as a whole are given lower right. V/C ratios are also given by
lane and in total.
Note that in this case the capacities per turn and per lane are additive but this is
solely due to the fact that the lanes are over-capacity and not a general rule. See
8.9.2.
Table 8.1 (b) - Comparison of turn capacities with lane sharing included vrs. turn
capacities with lane sharing excluded
The second table illustrates how much capacity is lost through the presence of
other vehicles in shared lanes. Thus the column headed CAPACITY EXC gives
the capacity for each turn calculated as though there were no other movements
present on the link, while the CAPACITY INCL gives the actual capacity with such
effects included. Thus the presence of vehicles making turn 68-18-45 reduces the
capacity of turn 68-18-19 from 336 to 241 pcu/hr, a ratio of 0.718.
We return to the definition of a “river” (8.8.2) and the alternative river-based
definitions of capacities (8.9.3.4) below.
UNDER-CAPACITY LANES
For under capacity lanes the rule is that each turning movement in that lane has a
capacity equal to its actual flow plus an additional capacity reflecting the spare
capacity in that lane.
The problem which emerges here is that the “spare capacity” may differ for
different turning movements if they have different saturation flow rates. If, for
example, we had a left and straight ahead movement in the same lane they might
have been assigned saturation capacities of 1200 and 1500 pcu/hr per lane. (The
saturation capacity of a lane for a given turn is assumed to be the user-input turn
saturation flow divided by the number of lanes; e.g., the ahead movement above
might have been coded with a capacity of 3000 pcu/hr and 2 lanes.) If the lane is
judged to carry, say, 400 lefts and 500 aheads (one third of their respective
saturation flows in both cases) then we assume that, in total, the lane is two thirds
full, and that the remaining one third capacity could accommodate either an
additional 400 lefts or 500 aheads. Hence their total capacities in that lane would
be 800 and 1,000 respectively.
To assign a total lane capacity we cannot simply add up the constituent turn
capacities since in the above case this would give us the unrealistic figure of
1,800 pcu/hr; we would be, in effect, counting the spare capacity twice. We
therefore define the lane capacity to equal the total flow plus a “weighted” average
of any spare capacity. In the above case the actual flow is 900 pcu/hr, the “spare”
capacity is one third of a weighted average of 1200 and 1500 pcu/hr, with the
weights determined by the relative flows. The weighted average saturation flow is
therefore:
(400/900) x 1200 + (500/900) x 1500 = 1367
giving therefore a total capacity of:
900 + 1367/3 = 1355.5
These capacity calculations are in fact carried out separately for each individual
time unit and summed, whereas the above example applied strictly speaking only
to the case of uniform flows over the time period simulated (i.e., “flat” profiles).
OVER-CAPACITY LANES
If however the lane is over capacity then the individual turn capacities are
proportional to their flows. Thus if one turn contributes 75% of the flow to an over-
capacity lane it is allocated 75% of its capacity for that lane. This implies that all
turns in a lane have equal V/C ratios.
In this case the total capacity for a lane is simply the sum of its individual turn
capacities per lane since the complication of spare capacity does not, by
definition, arise.
TOTAL CAPACITIES
The total capacity for a turn is the sum of its individual capacities in each lane,
while the total capacity of the link is the sum of its individual lane capacities
calculated as above. Therefore the total link capacity is not equal to the total of its
individual turn capacities, again because the latter sum may “double count” any
shared spare capacity.
Finally the total capacity at a node is obtained by summing up the link capacities
of its entry arms.
EXAMPLES
To further illustrate the principles involved Tables 8.2a and 8.2b show data for link
68 to 18 with the flows reduced by 50% so that the link is now under capacity.
Table 8.2 (a) - Lane distribution stop line arrival for traffic on link 68 to 18.
Lanes
Turn To 1 2 Total
Note: All flows in pcus per hour. Figures in brackets are capacities
Table 8.2 (b) - Comparison of turn capacities with lane sharing included vrs. turn
capacities with lane sharing excluded
We may note several differences from the previous results in Table 8.1:
1) While the turn to 45 still uses both lanes 1 and 2 the V/C ratios per lane are
not equal (although the measure of their stop line delays are; see 8.8.1)
2) The proportional split of turning traffic to turn 45 is split 459:130 = 78:22% in
the over-capacity case but 213:86 = 71:29% in the under-capacity case
implying that the lane choice is different in the two cases.
3) The lane capacity in lane 1 – 375 - is not the sum of the two turning
capacities due to the fact that the spare capacity has not been double
counted. Thus the spare capacity in lane 1 as seen by the turn to node 19 is
273 - 120 = 153, to node 45 it is 292 - 86 = 206 while combined it is 375 -
206 = 169. The differences per turn are explained by different saturation
flow across the stop line.
4) Note as before, however, that turn capacities are additive by lane; e.g. 740 =
292 + 448, as are the totals: 375 + 448 = 823.
The implications of comparing Tables 8.1b and 8.2b are discussed below.
For example in all three cases given in 8.9.3.1 above the queue dispersion rate
would be 1500 pcu/hr (equal to the average of 1200 and 1800 but only by
coincidence, not a general rule) which exceeds any of the individual turn
capacities. Note equally that in tables 8.1b and 8.2b that the dispersion capacities
also exceed individual capacities.
Note that (8.10) refers to the full queue made up of all turning movements which
share; the rate at which individual movements disperse may differ.
♦ the “transition point” C in equations (8.5a) and (8.5b) should be the queue
capacity;
♦ the C in the numerator of the second term in (8.5b) should also be the queue
capacity;
where B as before is half the time period which is being modelled. The
parameters t o , A and n are again evaluated by the simulation. Figure 8.11
sketches the qualitative differences between the two sets of equations (assuming
queued conditions with the current flows). Note that the delay at the current flow
V is identical with both equations.
Figure 8.11 - The basic and modified cost-flow curves for over-capacity simulation
turns.
Note that since C Q may be zero in heavily loaded cases equation (8.11a) may
never apply and the minimum delay term t o will need to include both a transient
delay to vehicles once they reach the stop line plus a normal over-capacity delay
component in order to reach the stop line.
We may further note that equations (8.5) (assuming C = the “normal” turn
capacity) and 8.11 both go through the same point defined by the current turn flow
and simulated delay, the difference being that the modified curve has a lower
slope reflecting the fact that mathematically the dispersion capacity must be
greater than any individual turning capacity. This is illustrated in Figure 8.10.
Our definition of the assignment cost (or time) vrs flow curve does not therefore
have any impact on the simulation outputs (e.g. total vehicle hours) but is only
introduced in order to make the calculated delays in the assignment into better
predictors of what a subsequent simulation would produce. Their function is
therefore primarily to improve the convergence between assignment and
simulation sub-models. We should reach the same answers whether we use
equations (8.5) or (8.11) but (8.11) should get us there more quickly.
(see tables 8.1b and 8.2b) since it depends on the number of lanes which they
use.
Note that the capacity of a river is simply the sum of the lane capacities of its
constituent lanes. Or, in the highly infrequent case of a river being created on a
capacity-restrained link (see the final sub-section within 8.8.2), then the river
capacity equals the mid-link capacity set by its speed-flow curve.
1393 Capacity for entry flows from simulation centroid connectors to the
upstream end of simulation links (see 15.16) N.B. Only relevant if
blocking back on a link extends to entering flows from a zone (see
8.5, note (b))
1643 Simulation turn capacities as per 8.9.1 and tables 8.1a and 8.2a.
1863 The “practical capacity” of an assignment link: for simulation links and
turns identical to 1473 and 1643 and thus as defined in 8.9.1; for
buffer links it is the “normal” capacity.
Channel Remarks
Number
with default values taken from the input UFA file, plus a single additional logical
parameter TITLE, default value FALSE, such that if TITLE is TRUE record 2 - see
below - is to be input.
Alternatively the network title may be redefined by an alphanumeric namelist
parameter of the form:
TITLE = ‘new title’
In order to run SATSIM as part of the normal iterative sequence shown in Figure
3.1a a “dummy file” SATSIM0.DAT is required, the “standard” version of which is
as follows:
&PARAM
&END
illustrate a very simple case, consider a T-junction with one minor (give-way) arm
and one major arm. Here the delay on the minor arm will depend both on the flow
along the minor arm as well as the flow on the major arm (and indeed the latter
effect will probably dominate). However the flow-delay relationship set by
simulation only includes the effect of the minor arm flow - the implicit assumption
is that the major flow is fixed throughout the assignment. If the flow does remain
constant on two successive assignments then the assumption is correct; if it does
not then the routes generated by the assignment are, to a greater or lesser extent,
inconsistent with the simulated delays.
There are a considerable number of other sources of “interaction” between links,
for example, shared lanes, blocking back, signal optimisation and co-ordination,
merging and weaving, etc. etc. These interactions may be highly asymmetric and
sometimes much stronger than the “intra-link” effects which means that, from a
theoretical point of view, the ultimate convergence of the process has very few
mathematical guarantees.
In order to deal with the interactions SATURN loops between assignment and
simulation until (reasonably) steady flows are obtained, at which point the model is
judged to be “self-consistent” or “in equilibrium”; i.e., the flows that go into the
simulation produce delays which in turn produces the same flows on assignment.
(Technically this approach is known as the “diagonalisation method”).
The (main) parameter used to monitor the rate of convergence is the percentage
of link flows which vary by less than, say, 5% (the parameter PCNEAR) between
loop n and loop n-1. If this exceeds the (integer) parameter ISTOP then the
process is judged to have converged satisfactorily. If the criteria are satisfied on
NISTOP successive loops then the process is terminated (where, from release
11.3 in March 2014, the default has been upgraded from 1 to 4 in order to conform
with DfT advice).
Note that with release 11.1 the critical integer value ISTOP has been converted
into an equivalent real value RSTOP such that the actual stopping tests use
RSTOP, not ISTOP; see 9.2.6.
In addition a number of alternative convergence criteria (e.g., the “gap” parameter)
have been introduced at a later stage of SATURN development and these are
described further in section 9.2.3.
Alternatively the procedure will always terminate if a maximum number of loops
(the parameter MASL) has been reached.
Whether or not convergence will be achieved by this method is hard to determine
in advance. Essentially the process works well when the “interaction” effects
referred to above are relatively weak, but when they are strong problems of
oscillations can occur. For example, networks with a large number of give-ways
may create problems. See 9.5.
Clearly good convergence is highly desirable; poor convergence means that the
results are imprecise / “in error”. A more precise description of the statistics used
to monitor convergence is given in 9.2 and advice on how to achieve good
convergence (or, conversely, how to avoid poor convergence) is given in 9.5. On
the other hand, poor convergence is not the only source of error in the model
outputs (cf. data input errors, section 2.1) and good convergence generally
5120257 / Apr 15 9-2
Section 9
SATURN MANUAL (V11.3)
requires longer run times so that, in practice, the target level of convergence will
represent a compromise between accuracy and run times.
Thus column 1 monitors the “delta function” which is internal to the assignment
and measures the degree to which the routes assigned traffic are minimum cost
routes; see section 7.1.4 If, as a rule of thumb, these figures are much in excess
of 1% then you should consider increasing the parameter NITA to obtain better
internal convergence. Otherwise the “uncertainty” in each assignment may be
adversely affecting the overall convergence. (For an alternative point of view see
9.5.4.)
See 7.1.4 for more information on delta.
Similarly column 2 monitors the successive internal convergence of each
simulation using the parametric measure discussed in 8.3. Again, as a rule of
thumb, if these figures are much in excess of 1.0 you should consider increasing
NITS.
Columns 1 and 2 also give the numbers of assignment and simulation internal
iterations undertaken (for which NITA and NITS set upper limits).
Column 3 reports the factor used to average successive assignment flows
between loops under KOMBI or AUTOK (see 9.3) and, in the case of AUTOK, the
number of internal repetitions of the simulation in order to calculate the optimum
weights (9.3.2).
The remaining 4 columns all monitor the convergence of the
assignment/simulation loops and should, roughly speaking, tell a similar story.
Firstly “% FLOWS” reports the fraction of assignment links whose assigned flows
changes by less than 5% (or, strictly speaking, less than PCNEAR%) from one
simulation-assignment loop to the next. This is a somewhat arbitrary function but
one which has been used in SATURN from the beginning and has thereby
5120257 / Apr 15 9-4
Section 9
SATURN MANUAL (V11.3)
acquired a certain historical momentum. It is (by default, see 9.2.3) the “main”
convergence parameter in that it is used to stop the loops once the figure exceeds
the parameter ISTOP (or RSTOP; see 9.2.6); typical values for ISTOP are 90,
95% or 98% (the current default value since release 11.3). ISTOP and/or RSTOP
are set in &PARAM; see 6.3.2. See also 9.2.3 for alternative stopping criteria.
(N.B. If both the flows being compared are less than 1.0 pcus/hr then the fit is
considered to be “OK”; i.e., the percentage difference is ignored for very low
flows.)
“% DELAYS” is similar to “% FLOWS” but is based on the fraction of simulation
turns whose delays change by less than 1% (i.e. PCNEAR%) from those
calculated by the previous assignment. Note that the simulation turns are a sub-
set of the assignment links; hence the latter measure is based on a different - and
larger - “sample” than the former. % DELAYS has no effect on stopping the loops.
These two measures, while generally similar, can present different viewpoints
under certain circumstances. Thus in highly congested networks, where delays
are a very sensitive function of flows, it is quite possible for the flows to settle
down (high %FLOWS) but for the delays to fluctuate wildly (low %DELAYS).
Alternatively if the delay-flow relationship is very “flat” it is possible that the delays
will be stable (high %DELAYS) but for the flows to wander (low %FLOWS). Thus if
only 1 of these measures is high it probably implies that your overall convergence
is acceptable even though either flow or delay is uncertain.
“% V.I” is more complicated to explain. In essence it compares the costs on the
currently assigned routes using the current simulated delays to the costs on the
previously assigned routes using the same delays. One should therefore expect
the current routes to be “cheaper” if we are getting nearer to Wardrop equilibrium;
if %VI is positive this is true, if negative, then the former routes are actually
cheaper than the current routes. This situation arises if the flow pattern has
changed too drastically from one loop to the next - one solution is to use the
KOMBI or AUTOK parameters to “dampen down” the changes in flow. Thus if
%VI goes strongly negative on, say, loop 6 then that is a strong argument for
setting KOMBI to 6. We return to this question in Section 9.3 below.
Finally the “% GAP” is a generalisation of the delta function - column 1 - to include
the interaction effects within the simulation. It is, firstly, the difference between the
current total vehicle costs on the assigned routes and the total vehicle costs if all
drivers were to use minimum cost routes with the costs FIXED. This measure is
then “normalised” by dividing by the total vehicle costs and expressing it as a %.
It is therefore the same as equation (7.3) for delta (Section 7.1.4) except that the
costs are calculated after the simulation rather than after the assignment.
Generally speaking the GAP values will be greater than the DELTA values since
the routes chosen based on the assignment cost estimates will tend to be slightly
worse when the costs are further changed by the simulation. The difference
between GAP and DELTA is therefore an indication as to how far the assignment
and simulation stages “disagree” on the calculation of delays; for further statistics
on the level of disagreement and the turning movements which may be causing it
please see Section 9.9.1.
As with delta (7.1.4) a gap of under 1% may be regarded – at least for some
purposes – as satisfactory. For example it is much better than the ability of
drivers in real life to choose “true” minimum cost routes which may be categorised
as around 5%. However, for other modelling purposes, significantly lower GAP
values need to be achieved and, indeed, should be achieved. A GAP value of
under 0.1% or even 0.01% should be regarded as a suitable target. See 9.2.4 for
a more complete discussion and 9.5 for advice on improving convergence.
Note that the latter two measures assume that the assignment is trying to assign
all trips to minimum cost routes. As this is not true under stochastic assignment %
VI and % GAP are not reported there.
9.2.2 Table 2
The second table contains a set of extra convergence statistics relating to the
progress of the assignment-simulation loops:
ASS-HRS The total time pcu-hr/hr from the buffer + simulation networks
calculated by the assignment (N.B. Time here is “true” time, not
generalised cost expressed in time units. It equals the product of
total demand flow multiplied by average travel times summed
over all assignment links. Since it uses demand flows it includes
both pcu-hrs within the current simulation time period and in
future time periods.)
CHANGE % Change in ASS-HRS between successive loops
SIM-HRS Total time pcu-hr/hr from the simulation network only and from
within the simulated time period only (i.e., travel time in future
time periods due to queued traffic is excluded.)
SIM-KMS Total pcu-km/hr from the simulation network only (this time
period only)
GEHBAR Mean GEH Statistic comparing link demand flows between two
successive assignments
AAD Average Absolute Difference in link demand flows between two
successive assignments (PCU/HR)
RAAD % Relative Average Absolute Difference in Link flows
XMSD % Relative Standard Deviation in link flows
SAD Mean Absolute difference in delays between the assignment and
simulation (seconds)
RSAD % Relative Mean Absolute Difference in ASS/SIM delays
Certain of the above measures are those recommended by the DfT for monitoring
the degree of convergence of any ‘congested assignment model’ as set out in
section 3.3 of TAG Unit M3.1.
Please note that the measures included in Table 2 are essentially arbitrarily
selected from a very large number of potential convergence statistics. For
calculate and understand and works in all possible situations, not just Wardrop-
based models.
A further problem with the use of %FLOWS as the stopping criterion is that it may
depend on the “accuracy” of the assignment method used. Thus if one uses an
extremely accurate assignment such as OBA (see Section 21) the true difference
in link flows between loops n-1 and n will be obtained (to a good approximation)
whereas with a less accurate technique, such as the default Frank-Wolfe
algorithm, there is less scope for the assignment in loop n to move away from the
assignment in loop n-1 (which is used as its starting point, assuming of course
that DIDDLE = T as it should be); hence the differences in link flows tend to be
reduced and %FLOWS measure increased. Hence, despite being a better
assignment method with better convergence properties, OBA may perversely
appear less convergent than Frank-Wolfe in terms of %FLOWS.
On the other hand, GAP does have a definite theoretical interpretation, does
differentially weight “good” and “bad” fits and is easy to compare between
networks of wildly different shapes and sizes. It is also more “neutral” with respect
to the problem of assignment accuracy discussed above.
On balance, therefore, our current “best buy” for a stopping criterion is the GAP
(set KONSTP = 1 or 4) although we recognise that there is a strong case for
carrying on with %FLOWS for historical continuity and the default, since release
11.3, is both %FLOWS and GAP (KONSTP = 5) in order to conform with DfT
recommendations (see TAG Unit M3.1, Table 4).
However, whichever stopping criterion users choose, they should always view
GAP as their most important single indicator of overall convergence.
N.B. If STPGAP is used as the stopping criterion for assignment-simulation loops
then it is also recommended that the parameter UNCRTS which sets (one of) the
stopping criteria for the assignment stage on its own should be less than
STPGAP, otherwise the overall convergence will be restricted by the assignment
convergence. Alternatively setting AUTONA = T (see 9.5.4) allows the program
itself to correct for too high values of UNCRTS during each assignment loop.
It can be argued that, as a very general rule of thumb, the reduction in total
vehicle-costs due to the “scheme” should be ten times larger than the “noise” in
the model (as outlined in TAG Unit M2 Variable Demand Modelling, Section 6.3).
This implies that if a scheme reduces total travel cost by, say, 1%, then you
require a GAP value of 0.1% or better to achieve a satisfactory evaluation.
It might also be argued that there is no such thing as a “minimum
acceptable” level of convergence and that modellers should always try to
reduce GAP values to the absolute minimum values which are technically
possible, limited only by practical considerations of time and/or money.
Section 9.5.3 gives general advice as to how to achieve “extremely good”
convergence.
In effect ISTOP has always been treated as a real variable rounded down from its
integer value; e.g., ISTOP = 97 was effectively 96.5. The reason for this was that if
the percentage of OK links had been 96.6 then, when it was compared to ISTOP,
it would be rounded up to the nearest integer, i.e., 97%, and compared to the
integer value ISTOP, e.g., it would satisfy ISTOP = 97. Equally 96.4 would be
rounded down to 96% and would not pass ISTOP = 97. Hence the effective critical
value would be 96.5 in “real” terms. So whether we round ISTOP down to a half-
integer value to be compared with the exact (real) OK value, or round the OK
value to the nearest integer, the end effect is the same.
Thus in Version 11.1 the comparison is always done using real values where the
critical stopping criteria RSTOP may either be defined directly by including a
variable RSTOP under &PARAM or, if RSTOP is not explicitly set, then RSTOP =
ISTOP – 0.5.
Note that this should have no impact on re-running old networks if RSTOP is not
defined since the stopping criteria is effectively unchanged.
=
Va
( )
n +1
(F( a
n +1)
+ Va(
n)
)/2
or (post-SATURN 10.4) a Λ-weighted average :
Equation 9.2
The first method is associated with the KOMBI parameter and the second with
AUTOK as explained below. If neither is used then:
Equation 9.3
Va( n +1) = Fa( n +1)
Provided that convergence does occur naturally then there are strong reasons for
not invoking KOMBI (see below). Our advice to users is to first test networks with
KOMBI = 99 (or 0, the effect is the same) and if convergence is seen to be
proceeding happily enough (see 9.2) then leave well enough alone. If however
the flow-convergence is seen to decrease, say, after loop 5 then consider setting
KOMBI to 5.
Alternatively use AUTOK which should be an improvement!
∑ c ( λ ){V
a a − Fa } =
0
where c a (λ) represent the link costs with the flows averaged as per equation (7.2).
We may think of the (negative) costs as representing a “Social Force Field” which
is pushing the current solution V a in the direction of the cheaper routes
represented by F a . The solution (9.4) represents the point at which the social force
field has shifted such that the all-or-nothing routes are no longer the cheapest
routes (because they have been allocated extra traffic and the original routes less)
and the force field is now at right angles (“normal”) to the direction of flow change.
The equivalent rule when applied to two successive sets of fully assigned flows
from assignments n and n+1 would be to require that:
Equation 9.5
∑ c ( Λ ) {V ( ) − F ( ) } =Φ ( Λ ) =0
a a
n
a
n +1
where now the costs c a (Λ) are those derived from simulation n+1 based on Λ-
averaged flows. Again we may think of the costs as a force field pushing the
solution from V a (n) towards F a (n+1) and that the simulation is changing the direction
of the force field by calculating different costs.
If, as mentioned above, Φ(1) > 0 then a step-size of 1 is used and no averaging
takes place. N.B. This is the most frequent result; see below. Alternatively, if Φ (1)
< 0, then equation (9.5) is solved by a heuristic method of successive
interpolations.
Thus we first calculate Φ(0); this may be done, in fact, immediately after
simulation n where the simulated costs are, in effect, c a (0). In theory Φ(0) > 0
(although it is possible that lack of assignment convergence and/or rounding
errors might drive it marginally positive) so that our first estimate of the optimum
Λ 1 is simply based on a linear interpolation between Φ(0) and Φ(1):
Equation 9.6
Λ1 = Φ ( 0 ) / ( Φ ( 0 ) − Φ (1) )
and we carry out another simulation with weighted flows and obtain the “correct”
value for Φ(Λ 1 ).
If Φ(Λ 1 ) is zero, or very near zero, then we terminate. If, however, Φ(Λ 1 ) is
significantly different from zero we may estimate an improved value Λ 2 by
approximating Φ(Λ) as a quadratic function using the three points we have already
simulated at Λ = 0, Λ 1 and 1. If, having carried out a further simulation with Λ =
Λ 2 , Φ(Λ 2 ) is not sufficiently near zero then the process of quadratic
approximations and re-simulation continues using the last three estimated points
until the zero-point is obtained with sufficient accuracy. Empirically it would appear
that the solution is obtained “most of the time” with a simple linear interpolation or
a small number of quadratic steps.
9.3.2.1 Accelerated Factoring of Λ
If an optimum value of Λ is not obtained after, say, 2 or 3 iterations and the same
behavior is noted consistently over several assignment-simulation loops then it
may be possible to “accelerate” the estimation of Λ by introducing an additional
empirical factor based on the ratio of the final Λ value to the initial linear
interpolation given by equation 9.6. Thus if we consistently observe that the final
value is 0.5 times the initial value then it may well save time (by reducing the
number of repeated simulation steps) if on the next application of AUTOK we
reduce the initial estimate by a factor of somewhere between 0.5 and 1.0.
This factor is referred to as the “AUTOK AVERAGE STEPS FACTOR” in the .LPT
output files and is not a constant but varies throughout based on the most recent
experiences.
This “fix” was first introduced in 10.9.17 and has been found to marginally reduce
the number of repeated simulations and therefore reduce CPU time.
11) Make sure that LTRP > 0 as this helps to reduce “discontinuities” in cost-
flow curves, particularly at V = C for major arms at priority junctions
where there are very few other causes of below-capacity delays; see
8.6.1. Equally set RTP108 = T; see 8.6.3.
12) The basic reason why networks do not converge is because of the
interaction effects between flows and delays; reducing the level of
interaction may therefore help (but on the other hand it may make your
network representation less precise!). Therefore you could try to:
− Reduce the critical gap values (the default values are, in all
likelihood, to be too high);
− Do not use blocking back (set ALEX to zero but not recommended);
− Do not use blocking back (set ALEX to zero but not recommended);
13) (Repeat of 1!). Check the error messages in your .lpn file and/or use the
Highlight facility in P1X – most of the time that’s where the problem lies!
The next section illustrates one or two possible extreme cases.
the junction leading to very low capacities. To illustrate the point from one
(anonymous!) network: a priority T-junction on a major road into town was coded
such that the X-marker which was meant to indicate that right-turning traffic
leaving town had to give way to traffic entering town was inadvertently coded on
the opposite arm which meant that the major traffic into town had to give way to
right-turning traffic from the other direction. As a result the capacity for traffic into
town was reduced from what should have been its saturation flow of 1800 down to
100 or 200, the resulting queue stretched back for 10 km and the whole model
became highly unstable. (The coding error, by the way, is now detected as
Serious Warning 137 in SATNET).
The morale of the story is that even very small errors in network coding can lead
to very large network problems and, unfortunately, users have to: (a) be very,
very careful in their coding and (b) look very, very carefully at their outputs.
Currently, it is probably safe to say, most networks are not run to anywhere near
their potential convergence levels – all it needs is a bit of ambition, confidence and
application of the above rules. Go for it!
this value and set NITA accordingly (subject to the requirement that is <= the
global maximum value of NITA and >= NITA_M). Empirically using AUTONA
= T has been found to significantly reduce CPU times.
In 10.9 AUTONA also automatically controls the assignment stopping criterion
UNCRTS (see 7.1.5) in addition to NITA by reducing it to a value comparable
to the current best GAP value. (The effect of reducing UNCRTS is generally
to increase the number of assignment iterations in order to achieve a
sufficiently well converged assignment).
The same principles of “relaxed convergence” are also used by CASSINI in order
to minimise CPU time for supply-demand feedback loops; see 15.54.
Note that AUTONA cannot be used with any form of elastic assignment.
Net.DAT
SATNET
Net.UFN
Cijø.UFM Control.DAT
Tijø.UFM SATEASY Tij′.UFM
Net.UFA
Tij′.UFM
SATSIM
Net.UFS
Thus starting from a network data file net.dat fed through SATNET the process
starts with an initial elastic assignment using SATEASY. This requires input
reference matrices c ij 0 and T ij 0 in order to define the demand function (best
defined within net.dat; see 7.12.3). An initial estimate of the road trip matrix, T ij ’,
may or may not be available. However on subsequent iterative loops the output
trip matrix T ij .ufm may be “re-cycled” back to the subsequent elastic assignment
with REDMEN = T.
SATSIM is run in order to update the link flow-delay curves based on the elastic
link flows and loops through the elastic assignment. Parameters MASL, ROSIE
and KOMBI (but not DIDDLE or AUTOK) may be used to control convergence.
The DIY nature of this approach is further reflected in the fact that there are no
dos-style bat procedures available to simplify the loops. This is left to your
ingenuity!
However it needs to be strongly emphasised once again that an elastic
assignment loop is much better undertaken using SATALL as described in
Section 9.10, which is run as a single program and does not require any complex
DIY procedures.
By combining two programs into one SATALL should be both faster and,
ultimately, “more clever” in terms of the steps that can be introduced in order to
improve the rates of convergence. For example it can combine the DIDDLE
option with elastic assignment which is otherwise impossible; see 9.10. All the
various distinct options for assignment and/or simulation that can be invoked with
the separate programs SATEASY and SATSIM may now be carried out within
SATALL. Indeed, as with the elastic DIDDLE (what a great name!) mentioned
above, there are extra options only available with SATALL; see 9.12.
3. Compare the turn delays as estimated by the assignment with the ‘correct’
delays calculated by the simulation; at convergence the two should be
identical, e.g.:
MEAN SIMULATED TURN DELAY = 31.75 secs
MEAN ABS. DIFF. IN ASS/SIM DELAYS = 19.38 secs
RELATIVELY = 61.03%
Note that whereas certain global statistics such as the pcu-distance may
appear to stabilize rapidly others, such as those related to delays and
stops, are considerably more variable.
7. List of the (up to) 10 largest changes in Blocking Back Factors used on the
current and previous loops plus an r-squared value comparing the same
factors.
♦ FRACTION: The ultimate fraction of trips assigned to this iteration; see 7.1.2.
♦ C1: The total cost associated with the current flows and the current costs.
♦ C2: The total cost if all trips could be assigned to the current minimum cost
routes.
♦ FDZ = DZ/Z (as a %), the fractional improvements in the objective function.
♦ ZULB: The upper lower bound on the objective function; see 7.1.5.
♦ EPS: Epsilon, the current “uncertainty” in the objective function; see 7.1.5.
will take the file net.ufs (which has been through 20 loops, say) and carry out one
more simulation-assignment loop. The output file will also be named net.ufs and
therefore over-writes the input file.
Using a parameter MASL 5 will run (up to) 5 extra loops; the actual number may
be less if the loops terminate on the ISTOP criteria rather than MASL. It will,
however, always carry out one additional loop even if the original ISTOP criterion
was satisfied. One may circumvent this “problem” by using both a MASL
parameter and the KR parameter to define a new control file which increases the
ISTOP value. Alternatively one can edit the network .ufs using P1X (11.9.11) to
change parameter values such as ISTOP prior to the continuation run.
Strictly speaking the MASL n option increments the existing value of MASL by by
n; it does not guarantee that exactly n extra loops are run since, as mentioned
above, the number of loops may be terminated by other criteria such as ISTOP.
For example, if the original value of MASL was 20 but the loops stopped after 10
due to ISTOP, then using MASL 5 on the command line and resetting ISTOP to a
higher value may actually result in 15 extra loops since the new value of MASL
will be 25. In principle it should be possible to set up the continuation option such
that “MASL 5” implies “run exactly 5 extra loops” or that it means “set MASL equal
to the current number of loops plus 5”. But it doesn’t do that – it does what it says
on the tin!
Note that in this case the output network file, net.ufs, has the same name as the
input network file, i.e. it overwrites it. This creates a problem since both versions
of the file need to co-exist at the same time so, to avoid this, the input file is first
copied into net.ufn and that file is used as input. A consequence of using this
option is that an existing net.ufn file will itself be over-written.
Clearly this facility depends on the network having a simulation component; a
similar continuation option for buffer-only networks is described under WIDDLE in
7.11.6.
Thus in 10.5 an option has been introduced such that the optimisations only occur
at the end of a fully converged simulation / assignment sequence, e.g., at the end
of MASL loops. At this stage the stage times and/or offsets are optimised and the
simulation /assignment loops re-started until convergence is again achieved. The
“outer-outer” loop is repeated NIPS times, where NIPS is a parameter set under
&PARAM in the original network .dat file.
Generally speaking it is recommended that NIPS should be a small number, e.g.,
1 or 2, since a very large value will simply repeat the problems noted earlier. If
NIPS = 0 the original method of continuous optimisation is followed. N.B. The
original default value of 0 was chosen primarily to retain upwards compatibility and
was not particularly recommended; post 10.9 the default was changed to 2.
We note that, if the optimisation changes are relatively small (as is generally to be
expected) then subsequent should converge very quickly. There is a good case,
therefore, for reducing MASL in proportion to NIPS (or, strictly NIPS+1). For
example, to carry out a maximum of 60 simulation/assignments with NIPS = 2,
then set MASL = 20 as that will give 20 loops followed by the first optimisation, 20
more followed by the second and 20 more to follow – a total of 60.
where:
If the KR option is not invoked on the command line, then SATALL expects to find
the parameters in the default control file SATALL0.DAT. (See 9.15.2.)
Note that the input file has the “new” extension .UFN and that the output file is
always .UFS whether or not the network is pure buffer or not. If network.UFN
does not exist but network.UFS does then it is renamed.
Further details of the SATURN .bat procedure are given in Section 14.3 and
special extensions thereto are described in Section 14.4.
10.1.1 Uses of MX
A more detailed description of each of the main options listed in the “Master
Menu” follows. These may be subdivided into:
♦ Input
♦ Changing matrices
♦ Analysis
♦ Output
10.1.1.1 Input
1) FILES MENU
The FILES option allows the user to define new input matrices (10.3.1), to request
basic information on these files (e.g. matrix title) and to introduce a supplementary
network UFS or GIS file (10.3.3) to supply, e.g., sector definitions (10.2.5.3) or
zone names (10.3.3) and to declare a matrix as following TfL zone name
conventions (5.1.7).
2) COPY/TRANSPOSE/RE-CODE AN INPUT .UFM FILE; REDEFINE
ZONES
Transfer an external input matrix into the internal memory where it can be
manipulated, analysed, etc., etc. The matrix may be either read “as is” or
transformed in various ways, e.g. by adding new zones or aggregating existing
zones. Using a simple “trick” this also allows the zonal structure of the internal
matrix to be edited.
3) BUILD/UPDATE THE INTERNAL MATRIX FROM A .DAT FILE
Construct a matrix from an external ascii data file. This may be either in a
“standard” SATURN format or in one set by the user, e.g., to facilitate matrix
transfer from other suites of programs or from a spreadsheet program. In
particular this function may be used in conjunction with the “dump” facility under
13 below to transfer a SATURN matrix file into, say, EXCEL, edit it and re-read it
within MX.
Under “Update” the matrix may be only partially set, e.g. within a selected area,
from the input .dat file or an existing matrix may be “incremented”.
0.5 ∗ ( X 1 + X 2 )
e −0.23 X1
transforms an input matrix into its corresponding negative exponential.
10.1.1.3 Analysis
1) STATISTICS (UNIVARIATE OR COMPARISON)
Compare two matrices, obtain a set of standard univariate statistics (mean, range,
etc.) for one matrix, or obtain a trip length distribution.
2) VIEW/EDIT MATRIX ELEMENTS
A flexible set of options to view the current internal matrix on the terminal. Cursor
control keys may be used to “move” through the matrix and more than one matrix
may be viewed simultaneously. In addition the values of cells in the internal
matrix may be “edited” using an interactive screen editor or window.
3) VIEW ROW AND COLUMN TOTALS
Display row and/or column totals interactively.
4) MATRIX GRAPHICS
Frequency and trip length distributions may be displayed graphically.
10.1.1.4 Output
1) PRINT MATRIX CELLS/SECTORS TO THE LP FILE
Produce a “standard” matrix listing to the line printer file intended for later
analysis.
2) PRINT/DUMP ROW AND COLUMN TOTALS
Produce a listing of row and column totals to either the line printer or a file.
3) DUMP MATRIX/SECTOR DATA TO A .DAT FILE
Output matrix file (in toto) to an external ascii (e.g. .dat) file. This may be either in
the standard SATURN format or in a format set by the user, e.g., so as to be able
to “export” a matrix to a spreadsheet. See also 3 above for the reverse operation.
4) DUMP/RE-CODE THE INTERNAL MATRIX TO A UFM FILE
The internal matrix file may be output (in to) to an external binary .UFM file for use
in other SATURN programs. This is the normal way to “save” a new matrix. As in
option 2 the matrix file may be output “as is” or transformed in various ways (e.g.
by recoding zones).
5) STACKING AND UNSTACKING .UFM FILES
A set of externally input square matrices may be combined together and output as
a single “stacked” matrix file (see 10.2.4) or, alternatively, if the internal matrix is
itself a stacked matrix it may be split into a full set of output individual matrices or
a single matrix from a single level.
6) MATRIX DEMAND CALCULATIONS
A prototype set of “formal” transport demand model steps such as
distribution or modal split are carried out using a combination of input
trip and cost matrices. These parallel the standard elastic demand
options within SATEASY (see sections 7.4 to 7.10) and demand
calculations by time period (see 17.12).
or to enter without any specific files in mind (e.g., to create a new .ufm matrix from
a text file; see 10.5) use:
MX I
Selected input and/or output filenames may also be set via the command line
by using “key words” such as OUT, KP and KR; type “MX” for a full list and for
name conventions.
In addition note that a Command Line with more than 10 “words” may be
accommodated via the XCL option described in Section 14.8.
Note that with SATURN 9.5 matrix .ufm files are held in a “zipped” format which is
invisible to the user and whose objective is to minimise the size of the files. For
example if a matrix row consists entirely of zeros the zipped format records this
with a single marker rather than n (number of columns) distinct values. A number
of other similar “tricks” are employed. This means that, for example, an observed
trip matrix, 95% of whose cells might be zero, only requires marginally more than
5% of a “full” matrix.
In theory MX can handle both square and non-square matrices; however, for the
reason above, MX is very seldom used in practice with non-square matrices so
some caution is advised if you do wish to work with non-square. The exception is
“stacked matrices” - see 10.2.4 - which are in effect a set of multiple square
matrices and are therefore standard.
For square matrices rows it is assumed that the same set of numerical names
and/or titles applies to both rows and columns.
For stacked (multiple-level) matrices, if zone names are applied to rows in the
“basic” square matrix (see 10.2.4) it is generally assumed that the same zone
names will be applied to upper levels as well, although this is not mandatory. For
example, if the row names are identical to sequential row numbers then this would
not be the case.
♦ the “dimensions” of the elements, e.g., whether they are times, distances,
costs, etc.;
We use the term “level” to refer to the different sub-matrices when stacked
vertically and “block” when stacked horizontally. We also use the term “base
matrix” to refer to the basic square matrix from which the levels and/or blocks are
built up and whose length/width dimension would normally correspond to the
number of zones in a corresponding network.
Stacked matrices by level are only used within the multiple user class assignment
options of SATURN so that the four matrices above might correspond to four
separate user classes. See Section 7.3.2 for further details.
Horizontally stacked matrices by block are used to represent multiple time periods
as used within SATURN's dynamic assignments (see 17.4.3).
At the moment it is not possible to stack by both levels and blocks at the same
time, e.g. to create a single trip matrix file which is both multiple user class and
multiple time period. But it will come!
For some operations in MX, e.g. displaying elements or row/column totals, it is
possible to optionally treat stacked matrices as though they were ‘interleaved’; i.e.
row 1 of level 1 is followed by row 1 of level 2 and row 1 of level 3 etc. etc. all
followed by the row 2’s. See 10.10.2.
N.B. Stacking by blocks was introduced in SATURN 10; previous versions may
only employ levels.
See Section 10.20 for various useful standard procedures (e.g., MXSTACK,
UNSTACK, etc.) for manipulating stacked matrices.
10.2.5.2 Groups
“Group” is the most general term applied to any user-set aggregation of zones and
may be used at any level of aggregation; e.g., 5,000 zones could be aggregated
into 5 groups or 500 into 250.
As with nodes and zones, groups have numerical “names” which need not be
sequential although in some applications there may be an upper limit, e.g., 999,
on the maximum group name. Again, as with nodes and zones, a “proper” group
cannot have a name of zero, although if a zone has not been allocated to an
explicit group then it is assigned to group 0 – which in certain applications will
result in a fatal error.
10.2.5.3 Sectors
Sectors play a very traditional role within SATURN and have fairly restricted
properties. They represent a very high level of zonal aggregation as described in
section 5.1.7 such that the maximum number of zones is 20 (or, strictly 21 since
sector 0 is regarded as a valid sector number unlike nodes, zones, groups etc.)
Sectors are common to both matrices and networks.
Like the alphanumeric zone names sector definitions may be obtained
“externally” from either:
an associated GIS file (see Block 8, App. Z),
would indicate that all zone names in the range 10 through 19 would be assigned
to group 2 (and that zone 9 would be assigned to group 1).
Note that 19 need not necessarily be a valid zone name itself, it simply represents
an upper limit, in which case the “true” upper limit would be the maximum zone
name lower than 19. The lower value of the range is the previous upper limit plus
one. If a negative number is used to indicate an interval the absolute value of the
negative number must be greater than the absolute of the previous number in the
list. If, as above, a positive number is used (e.g., 9) to set the previous line that
zone name must exist.
Therefore it is recommended that you use either all intervals (negative numbers)
or include all zone names in the Z2* file using the philosophy that the point of
using intervals is for the process not to fail and the point of using a zone by zone
list is that you want the process to warn you about missing elements by failing.
Errors occur and are noted if a record does not consist of two integers, if a zone
cannot be identified (excluding negative values above) and if some zones are not
assigned to groups. These may or may not result in the operation being rejected.
Blank records are allowed and ignored as are comments, i.e., records with a * in
column 1.
In order to process a Z2G file the zone names (and their number) must already be
known within MX but the set of group names and their total number are only
known and fully specified after the Z2G file has been processed.
Note that the Z2G format also corresponds to a simplified version of the
Records 2 used by the batch file MXM5; see Appendix W.3.
3) A single output .UFM matrix copied (at the user's request) from the internal
matrix to the “hard disk”.
These are illustrated in Figure 10.2 where the external files used for input are
denoted X1, X2, etc. up to Xn, the matrix in internal memory is denoted by Y and
the output matrix is Z. Thus, for example, two input matrices X1 and X2 may be
added to create a new internal matrix Y which is then “dumped” to the output file
Z. See 10.8.1.
By default, when one or more .ufm files are input, then initially the first input matrix
is copied directly into the internal RAM. Thus the command “MX mat” would
cause the matrix file mat.ufm to be read into the internal memory.
“Changes” are applied only to the internal matrix whereas the majority of “viewing”
or “analysis” operations can use both internal and external files.
Note that a single run of the program may use more than one input control file -
each file is “opened” and “closed” as and when needed by the program. Equally
the input .UFM files are not fixed and may be redefined during a run and more
than one output file may be created (but at any one time only one exists).
(matrices) being examined. Thus either may supply the necessary sector
definitions which (see 5.1.7 or 10.2.5.3) are originally set within the node co-
ordinate data sets on a network .dat file or the .gis file. Equally text names for
zones are only given within gis files.
A further application of an input network file is to define the zone “names” (see
10.2.2) when they have not been predefined as part of an input .ufm file. This
option is particularly useful when the matrix is being input from a .dat file and the
zone names are not known a priori (see 10.5). Post 11.1 the zone names are
applied to rows within all levels of a stacked matrix (previously they were only
applied to rows in the base matrix).
Alternatively, to transfer network zone names into a matrix: (1), read the matrix
into MX so that it becomes the internal matrix, (2) input the network .ufs file, (3)
choose to transfer the network zone names into the internal matrix (if the network
has the same names the choice is never presented) and (4), dump the internal
matrix into a .ufm file.
(and/or factored) from an existing zone’s row and column cells. Thus you
may create a new zone in a trip matrix which “looks like” an existing zone or,
under “copy”, the new elements may be the sum of multiple zones, an
average of multiple zones or a weighted sum of multiple zones. Alternatively,
the cell values in the new rows and/or columns may be set either (a) from an
external data source via the “update options” described in Section 10.5.1.2,
(b) via matrix manipulation equations (to selected rows/columns, 10.8.2)
described in 10.8.1 or (c) by screen editing (10.10.4).
3) Compression aggregates two or more existing zones (i.e. rows and
columns) into a single larger zone (“many to one”) by adding cell elements
together whereas renaming basically copies one zone into another with a
different name (“one to one”). Since compression is essentially similar to
that of defining sectors to be aggregates of zones it may sometimes be more
convenient to perform this step via sector definition; for example, with
sectors it is possible to view both the zonal and the sectoral matrices within
the same run.
4) The zones to be compressed may either be in a block of sequential zone
numbers (e.g. zones 4, 5, 6 and 7) or “mixed” (e.g. zones 1, 5, 7 and 8).
They may either be aggregated into a zone with a completely new number
(e.g. zones 4 to 7 go into zone 40) or an existing zone (e.g. zones 4 to 7 all
go into zone 4, in which case the original zone 4 effectively stays where it
was).
Renaming is straight forward - the row and column elements are moved to
the new sequential positions. In effect “renaming” is an alternative form of
compression, the difference being that with renaming a single zone is
converted into another single zone; with compression several zones are
converted into one. Renaming and compression are therefore included
within the same menu structure with the first two (many into one) being
effectively compression and the next two (one into one) being effectively
renaming.
5) The “Split” function may be used to divide a single zone into a set of 2 or
more sub-zones with separate factors by row and column. Normally at the
end of the process the old zone has been deleted. However the new sub-
zones may in fact contain the original zone number, so that this function
effectively duplicates renaming - split a zone 100% into a different zone -
and copying - split a zone 100% into itself and 100% into the new zone. Use
whichever seems most convenient. Note that certain options plus factors
leave the total number of elements in the matrix unchanged so that these
operations are suitable for matrices such as trip matrices but probably not
for matrices such as distance matrices where, if a block of zones were to be
aggregated together, one would wish to average the cell elements, not add
them together. Thus if you wanted to aggregate four zones from a trip
matrix choose factors of 1.0; if it were a distance matrix choose 0.25.
To a large extent the above functions mirror those available under “M5” (see
Section 10.16.3) and as a distinct batch file MXM5 (see 10.20.20) which dump the
internal matrix to an output .ufm file. Thus to aggregate a matrix from zones into,
say, “districts” one could either aggregate on input (as here) and produce a new
.ufm by simple output, or else read in the zonal matrix and aggregate to districts
on output. One difference is that the input options use only interactive input
commands whereas the outputs use control files. (Although through the use of
key files both can be run equally well in a purely batch mode.)
From version 10.7 it is possible to save the instructions input interactively (e.g.,
which zones to copy, which to delete, etc.) in the form of a “control file” as
required by the MXM5 procedure; see 10.20.20 and Appendix W.3.
𝑇𝐼𝐽 = � � 𝑇𝑖𝑗
𝑖∈𝐼 𝑗∈𝐽
where I and J represent the rows and columns of an aggregated matrix, i and j are
zonal rows and columns and i ∈ I denotes the fact that zone i is contained within
group I.
Note that this form of aggregation is appropriate for, say, a matrix of trips where it
is natural to add trips together but it would not be appropriate to a matrix of, say,
zone to zone distances where ideally the group-to-group distance should be some
form of weighted average of the zone-to-zone distances.
The rules for compression/aggregation may be specified via a number of different
formats: (1) an explicit mapping of zones into groups, (2) hierarchical numerical
rules and (3) specific TfL numbering conventions for traffic boroughs. These are
described in further detail below.
The conversion from zones into groups may be either set explicitly by an external
“Z2G” file or by pre-defined zone-to-group data.
𝑇𝑖𝑗 = 0 ∀ i=j
This could logically be applied to a matrix of, say, OD costs or factors but not to a
trip matrix where the group-to-group trips would need to be factored down when
disaggregated to a zonal level.
Note that MXG2Z sets the intra-zonal trips to zero. This may have implications in
later calculations if your original zonal matrix had values in the intra-zonals as
MXZ2G would have included these in any intra-sector totals.
♦ Non-zero elements only with I-J indicators (one record per cell)
♦ EMME/2 Format
10.5.1.2 Updates
It is also possible to use input from an ascii file to “update” all or part of the current
internal matrix (presumably read from an existing .ufm matrix) rather than writing it
“from scratch”. The choice between “build” and “update” is made immediately on
entering the top menu under Build/Update.
Matrix update data may use only some of the standard data input format
conventions described below; i.e., user-defined records (10.5.3), individual cell
records (10.5.4) and spreadsheets (10.5.5). Thus the standard SATURN format is
not available as an update option since, by construction, it must contain all cell
values.
The data set read need not contain all ij cell values but may be only a subset
which, in the case of user-defined and spreadsheet formats, must constitute a
“rectangle” within the matrix as defined by upper and lower row and column
numbers.
An update may either “replace” the existing cell value by the value which is read in
or “increment” it (i.e., add the existing and the input cell values together).
An advantage of updating an existing .ufm matrix rather than creating one totally
from scratch is that with updates the number of rows and columns plus any
“names” (see below) are pre-defined, only (certain) cell values are set.
FILZ2S TEXT Blank The filename of a file listing the sectors per
zone; see 10.2.5.3.
FILZ2G TEXT Blank The filename listing groups per zone (see
10.2.5.5).
d) The number of rows and columns (i.e., zones) if not already specified.
An example of such a data file with two header records, 8 rows and a single
column header entry per origin and format 6I5 might be:
Jonesville observed trips
15 January 1993
5 0 6 2 3 1
0 1 5
10 6 0 2 3 1
0 1 5
…
Thus the first zone is zone 5 with I-j elements (0.6…5), the second is zone 10 with
elements 6, 0…5). Whether or not the numerical entries are “real” or not (i.e.
have decimals or not) is determined by the format which follows standard
FORTRAN rules.
10.5.4 Non-zero matrix elements only, one O-D cell per record
*
Here each non-zero O-D entry occupies a single line or record giving some
(possibly all) of the following:
(i) sequential row and column numbers;
(ii) low and column zone names;
(iii) the matrix level (in the case of a stacked matrix);
(iv) the block (if stacked by blocks);
(v) the cell value.
Of these either i) and ii) (or both) are mandatory, iii) and iv) are generally not used
and v) is mandatory. Choices for the contents are defined interactively by the
user prior to input.
The records may either be read “formatted” (i.e. in pre-defined fixed columns) or
“free format/CSV” (i.e. with each record separated from its neighbours by one or
more spaces and/or commas). Note that fixed column data may also be read as
though it were free format (provided that there is always at least one space
between adjacent entries) but the converse is not true. It is strongly recommended
that the free format input option is selected. (With 10.6 it is now the default.)
Note that the form and contents of the input data must be fully and correctly
specified by the user interactively prior to reading in the data, otherwise input
errors will almost certainly result.
*
Although, optionally, more than one record per ij pair may appear and the inputs are added
together. This may be useful for, eg aggregating survey data.
For the moment header records, etc. cannot be explicitly included with single
records although, if they do appear, they will cause non-fatal read errors which do
not affect the final output matrix.
Indicating that cell (1,2) has a value 12.0, etc. etc. Alternatively, using spaces and
fixed columns, the same data might appear as:
1 2 12.0
1 3 13.0
…
And both data sets could be happily read as “free format”. Note that in this case
we are assuming that only sequential row and column numbers are given, not
their zone names (i.e., i) above but not ii)).
Alternatively, if the zone names for sequential zones 1,2,3 were 10,20,30, then
only names, not sequential numbers, (method ii) could be used, as in:
10,20,12.0
10,30,13.0
30,20,32.0
…
Finally, belt and braces, both sequential and zone names could be used as in:
1,2,10,20,12.0
1,3,10,30,13.0
3,2,30,20,32.0
…
Clearly in this case one would have to be careful that a sequential 1 was always
followed by the “name” 10 (whether input as a row or a column).
11 22 6.00
would imply a cell element of 6.00 for row (origin) 11 and column (destination) 22,
both 11 and 22 being zone “names” which would need to be converted into
sequential numbers.
Under option 1 the same line would imply the cell would be the 22nd column in the
11th row without any reference to the associated zone names.
Under option 3 the same cell might be specified by:
11 22 61 94 6.000000
where sequential row 11 is zone 61 and sequential column 22 is zone 94. This
method clearly requires “internal consistency” such that sequential row/column 11
is always associated with zone 61 etc.
However users may find it less complicated to input multiple-level trip matrices as
a series of simple square, one-purpose matrices created one at a time and then to
stack the resulting .ufm matrices into one large stacked matrix.
♦ There is one record per origin row containing n elements for each of n
columns (plus, optionally row and/or zone names; see below).
♦ a set of cell records, each including values from a single origin (row) plus one
or more destinations (columns).
On input the header records are ignored by SATURN. They are identified by
having an alphabetic character (normally ‘c’, ‘a’, or ‘t’) in the first character
whereas the data records which follow may be identified by having blanks in their
first characters per record.
The cell records consist of:
would define the cell values for ij pairs (1,2), (1,3), (1,5)…. Any “missing” values
(1,1), (1,4) etc would be assigned default values of zero. In addition spaces may
be allowed between the “:” and the cell values, and the cell values may be either
integer or real.
Note the zones may be referenced either by their sequential number or by their
numerical name (see 10.2.2) as an option selected by the user. The standard
EMME/2 default is to use zone names, not sequential numbers.
Due to EMME conventions only matrices which are “square” may be processed by
EMME; i.e., stacked matrices may not be created using an EMME format.).
The first menu, in addition to offering the option to define an input .dat or .ufm
matrix file, allows one to set a flat matrix with user-set numbers of rows and
columns
♦ “Value”, e.g. select only those cells whose value is greater than 10.
♦ A critical value.
Thus you could select cells in the second input trip matrix whose values are > 10.
Note that tests such as EQ or NE also imply equality within some plus/minus limits
which also need to be specified. The principles apply equally to link selection
within P1X or SATDB; see 11.6.1 for further details.
Note that selection by value is not “permanent” when applied to the internal
matrix. Thus if you select all internal matrix cells > 10.0, factor just those cells by
0.5, and then carry out another operation “with selection by value” the cells to be
selected in the second operation will be those whose current value is 10.0, i.e.
those cells who were originally > 20.0. In order to “fix” a selection by value using
the internal matrix you should copy it into a .ufm file (and add it as an input matrix)
and base your selection on that file so that the values do not change.
N.B. This is the opposite of link selection in SATDB, P1X etc where links, once
selected, are permanently “branded”.
Tij = fTij
where f is a user-defined factor and the cells which are factored may either
constitute the entire matrix or a selected subset (i.e. an “area”)
2) Row or Column Specific Factoring:
Tij = AT
i ij
or
Tij = B jTij
Tij = Ai B jTij
where the row and/or column balancing factors are chosen such that
∑T
i
ij = Dj
∑T
i
ij = Oi
where the row and column sums O i and D j are user input. (Under a singly -
constrained model only one set of constraints is applied as under 2); under doubly
- constrained, both are. Note that singly constrained Furnessing is effectively
equivalent to row/column factoring, the only difference being that the required trip
ends are defined under Furness as opposed to the trip end factors; e.g. O i as
opposed to O i / o i .)
All three forms are available through a combination of interactive commands
and/or data from external ascii control files. The choice of the form and the mode
of control is made both in the “top” menu within FACTOR and in the next sub-
menu; e.g. if you choose Furness at the top menu the choice of single/double
constraints and/or input mode is made at the next menu.
Note as well that, under doubly-constrained Furness, it is implicitly assumed that
the sum of all the row totals should equal the sum of all the column totals. If this
condition is not satisfied various options to correct are offered; e.g., factoring up
all row constraints so that they equal the column totals
Since factoring in transport applications is mostly applied to trip matrices the
documentation below refers for simplicity to ‘origins’ and ‘destinations’ and ‘trip
ends’ instead of ‘row totals’ or ‘column totals’, although the actual factoring
operations are applicable to any type of matrix.
♦ A factor
Certain options for the definition of the row and column factors may be selected
interactively before the file is processed. (N.B. Mixing interactive and file input
control is not ideal but it works and given how infrequently this method is probably
used it doesn’t seem worth introducing major changes; requests to DVV!)
Thus, rows and columns may be defined as either names or sequential numbers
via an option set interactively prior to processing the file. Names are then re-set
to the equivalent sequential values.
Similarly for stacked matrices the row and column numbers may be based either
on the full matrix or for a particular level within the stacked matrix. For example, if
one had 3 10x10 matrices stacked (so that the internal matrix has 30 rows and 10
columns) and one wished to factor rows 3 to 5 of level 2 then one could either
specify them as (sequential) rows 13 to 15 if a level were unset or rows 3 to 5 if
the level were pre-defined as 2.
Note that if the option to use zone names rather than sequential numbers has
been pre-selected then the only way to define rows within levels other than the
first is to pre-define the level.
Row or column numbers left blank (or equal to zero) are assumed to be either 1 or
the maximum row/column number as appropriate. Hence all blanks in columns 1
to 20 implies the whole matrix is to be factored.
To terminate the file put 99999 in columns 1 to 5 - or, strictly, any number or name
greater than the number of rows.
Alternatively the input data may be free format - again, a user-set option - in which
case each of the five inputs must be separated by blanks or commas.
These consist of a header record &PARAM, a record defining two possible logical
parameters NAMES and CSV plus an &END record.
Here NAMES =.TRUE. if the following records use zone “names” as opposed to
sequential row/column numbers. Default: .TRUE.
If CSV = .TRUE. the data records which follow are input as “comma separated
variables”, i.e., with the zone name/number and new total etc. in any columns as
long as they are separated by a comma or by one or more spaces. If CSV =
.FALSE. the fixed columns (with decimal points) specified below must be used.
Default: .TRUE. (post 10.7)
N.B. Where the specification indicates that a decimal “normally” appears in, say,
column 13 out of columns 6-15 this is not a rigid requirement. In fact the decimal
may appear in any column as long as the whole number is contained within the
columns specified. Thus, in the above case, the user would not be restricted to a
maximum of 2 decimal places in the input field.
terminated
by:
Record 1C - 99999 in columns 1-5.
terminated
by:
Record 2C - 99999 in cols 1-5.
Records 3B: One record per row and/or column constraint formatted
as:
Terminated
by:
Record 3C - 99999 in cols 1-5.
Terminated
by:
Record 4C - 99999 in cols 1-5.
Terminated
by:
Record 5C - 99999 in cols 1-5.
Terminated
by:
Record 6C - 99999 in cols 1-5.
RECORD 7 (MANDATORY)
A final ‘99999’ record.
0.5 ∗ ( X 1 + X 2 )
e −0.23 X1
0.5 ∗ (Y + Z )
would take the average of the (current) internal matrix and the (latest) output .ufm
file and store those values as the new internal matrix Y.
The equation can not only use the standard arithmetic operations - add, subtract,
multiply, divide and exponentiate - they can also use a number of standard
functions, e.g. EXP as illustrated above. The following functions are available:
♦ Exp (X)
♦ SQrt (X)
♦ Sin (X)
♦ Cos (X)
♦ Tan (X)
♦ Abs (X)
♦ Int (X)
♦ MAX (X, Y, …)
♦ MIN (X, Y, …)
( X1 + X 2 )
X3
the variables X1 and X2 are always added together prior to exponentiation. This
would not be the same as
X1 + X 2 X3
Users are advised, if in doubt, to carry out several steps with very simple
equations which create temporary data columns. For example by first calculating
X1 + X 2
X 4 X3
would have the same effect as above (although the final result might not be in the
same data column).
Y + 0.5 X 2
The selection of single rows and/or columns may also be very usefully applied to
setting the row/column values for newly created zones; see 10.4.2.
would imply that each new cell element equals the product of the row and column
totals of the first input .ufm file divided by its current internal matrix value.
Syntax rules are that either ROW or ROW(0) implies the row total from the internal
matrix. ROW(n) is the total from the n’th .ufm input matrix. Ditto COL, COL(0)
and COL(n).
Tij = TIJ
Tij ∀TIJ
T=
ij Aik + Bkj
A ik therefore represents the cost from the origin to the park and ride zone, and B kj
the subsequent cost to get from k to the final destination.
If the area currently on screen includes the “bottom” and/or the “right hand side” of
the matrix column and/or row sums will be included (space permitting). Equally
the total of all cells appears in the extreme lower right hand corner. Options are
provided such that the row and column totals always appear on the screen
display.
Two format “modes” are provided: the default prints all cells with two decimal
places, the alternative prints integers (and, because each column is narrower,
more columns are printed at a time). Alternatively under a “select mode” all non-
selected cells are left blank on the screen.
Not that each “screen” that appears is also sent to the output line printer (LPX) file
as a permanent record.
Note as well that under 32-bit the row and column integer headers are for
information only and may not be “edited”.
The trip length distribution (TFD) option is only available if you have two or more
matrices including the internal matrix; one defines the “trips” and the other the
“costs” although there are no checks whether or not the matrices you select are
indeed trips and costs. (Recall that cost matrices are generally obtained using
SATLOOK; see 15.27). It is also possible to print trip length distributions from two
different input trip matrices simultaneously (in which case at least two external
.ufm files plus a different internal matrix are required).
See also 10.9.3 for non-graphical methods to calculate TFDs.
MX can plot either to the screen or to other external devices defined in
GRAF.DAT. The screen image may also be dumped to a bitmap file (11.3.5) by
entering ‘X’ when the image is on the screen.
Note that if the output file has the extension .CSV (the default) then the output
format is automatically in CSV such that commas are added at the end of each
numerical field.
Note that the KP option may be usefully used to set the filename when a matrix is
“dumped” using a KEY (or KEY + VDU) file to generate the necessary commands
as in:
MX matrix2 KP tij2data.txt KEYVDU dump
cell values with a large number of decimals for maximum accuracy. In addition,
with stacked matrices, the level and/or block value may also be included, e.g. as
the third value on a record if only the sequential row/column numbers/names are
included, the fifth if both numbers and names are given.
Single-line records may be either “formatted” (i.e., output within fixed columns” or
free format/CSV (i.e., output with each item separated by a comma). The “fixed”
column widths are set large enough that spaces will certainly exist between each
item so that the formatted output may be effectively re-read in MX (see Section
10.5.4) as though it were free-format. At this stage, therefore, and as far as
subsequently re-inputting files back into MX goes, the choice is not particularly
important (although, for inputs, the free-format choice is strongly recommended;
10.5.4).
In Release 10.8.20 an extra option has been provided to suppress the final record
which, by default, consists of 99999 and which can be “awkward” if the ascii file is
being input to other suites of programs.
separate files. (Although clearly it is much more convenient to deal with one
rather than 10 files, so only use this as a last resort.)
Note that the number of decimal places used in CSV outputs may be an issue for
both numerical precision and record lengths; see 10.15.2 below. More precisely,
the maximum record length allowed is 16384 characters. If the required length
exceeds this the output record is truncated and produces a Non-fatal Error
message in the .LP file which may escape your notice
10.15.2.1 E- Formats
E-formats avoid problems when matrix cells contain both very large and very
small values. For example, take 2 cells with values 12345.67 and 0.0001234567.
Under E-formats (with 7 decimal places) they would be output as 0.1234567E+06
and 0.1234567E-03, whereas under decimal outputs they would become
12345.670000 and 0.0001235. In this case decimal outputs lose precision with the
smaller outputs while E-formats do not.
For maximum precision, minimum loss of accuracy it is recommended that users
choose E-formats with 7 decimal places as this corresponds roughly to the
numerical precision of single-precision real variables on the computer. Lack of
precision may be a serious problem if a matrix is being dumped to text in order to
export it to, say, EXCEL, manipulate it and then return it to MX. For “one-way”
transfers precision may be less of an issue.
single user class described in Sections 7.4 to 7.10. They also use the same
parameter names, for example setting MCGILL = 2 (see 7.7.1) in the demand
model sub-menu requests an incremental power law model of the form
where three input .ufm matrices must be defined, T ij o, c ij and c ij o, and the power p
set. These are also defined within the sub-menu with the matrices being equated
to external input files 1, 2, 3 etc.
Once all the necessary parameters have been defined choose “1- Do It Now!” to
perform the calculations. The resulting T ij values are stored in the internal matrix;
use main menu option 14 to permanently store them in a .ufm matrix file if desired.
Similarly to carry out a singly constrained trip distribution model set MCUBC = 1;
see 7.10.2.
Note that these functions are not applicable directly to multiple user class models
where the matrices are not square but stacked by levels to represent the different
user classes. To undertake demand calculations by user class it is necessary to
treat each user class separately with its own square matrix.
where A i and B j are row and column balancing constraints to satisfy the row and
column totals O i and D j .
It requires as input a skimmed cost matrix ufm file, say input as the first matrix file
plus (optionally but most conveniently) an existing trip matrix as the second file;
the latter is used below as a convenient method of obtaining the trip ends O i and
Dj.
Thus first create the cost matrix C ij as the internal matrix (which it will
automatically become if the first input .ufm matrix is the cost file). Then transform
it into the negative exponential (assuming β = 0.01) via the matrix manipulation
equation (see 10.8.1).
e(
−0.01Y )
Next enter the matrix factoring option and choose, first, option 3 to factor all rows
by factors you select to be the row totals (i.e. origins O i ) from the trip matrix ufm
file; see 10.7.4. Thus the internal matrix now becomes:
( −0.01Cij )
Oi e
Repeat with option 4 to factor all columns by the column totals D j to give:
( −0.01Cij )
Oi D j e
Alternatively, and probably more conveniently, the above three steps could be
reduced to a single step via the FORTRAN equation:
ROW ( 2 ) ∗ COL ( 2 ) ∗ e(
−0.01Y )
assuming as above that the input trip matrix is the second .ufm file.
Finally choose the matrix Furnessing (10.7.5) and set the trip ends again from the
second .ufm input file. Requesting the doubly constrained Furness option solves
the original equations.
Goodness of fit statistics comparing the distributed trip matrix (the internal matrix
Y) to the assumed observed trip matrix (X2) may be obtained under the Statistics
Option and a calibration exercise carried out by trial and error.
This may be calculated by inputting the 4 relevant trip matrices – T1, T2, C1, C2 –
as input files 1 to 4 respectively (recalling that cost matrices may be calculated as
described in Section 15.27.4) and then creating the internal matrix via the
equation:
0.5 ( X 1 + X 2 )( X 4 − X 3 )
The consumer benefits may then be viewed per cell, per origin/destination or in to
using master options 8 and 9.
Note that to “dump” the total benefit into an external file, e.g. as part of a iterative
process involving forecasts for a series of future years, you may make use of the
facilities described in 10.14.
More simply the R.O.H. calculations are available as part of a standard batch file;
see 10.20.8.
Using as input an ascii (text) file mat.dat in standard SATURN format it outputs a
file mat.ufm in binary format.
Carries out the full set of standard statistical comparisons between 2 .ufm matrix
files mat1.ufm and mat2.ufm and outputs the statistics to a line printer file
mat1.lp2. See 10.9.2.
Tij2 = XTij1
If a level n is defined for a stacked matrix then the factoring is applied to that
level only; otherwise the factor is applied to the entire stacked matrix. N.B.
Similar to the interactive process to select a single level; see 10.7.2.
Adds matrices mat1.ufm and mat2.ufm together to produce an output file mat
3.ufm; i.e.:
Tij=
3
Tij1 + Tij2
10.20.5 MXAVER2
MXAVER2 mat1 mat2 mat3
Takes a 50:50 average of two matrix files mat1.ufm and mat2.ufm to produce an
output file mat3.ufm where:
T=3
ij (T 1
ij + Tij2 ) / 2
10.20.6 MXMSA
MXMSA mat1 mat2 mat3 n
10.20.7 MXKK
MXKK TIJO CIJO CIJ TIJ BETA
Produces a new multiple time period trip matrix TIJ.ufm based on the incremental
logit model formulation of KK Chin. See 17.12.
Note that each matrix above must be “blocked” by time periods; see 10.2.4.
Calculates the economic benefits according to the “rule of a half” (see 10.19.2)
from a do-something scenario with trip matrix TDN.UFM and minimum cost matrix
CDS.UFM compared with the do-nothing scenario represented by the trip matrix
TDN.UFM and cost matrix CDN.UFM. The outputs are a matrix BEN.UFM and a
one-line text file BEN.DAT.
Note that MXROH works equally well with multiple user class networks.
Outputs a “stacked” matrix mat.ufm, built from the input matrices mat1.ufm,
mat2.ufm, etc. etc. in order. The list of input matrices may contain up to 8 inputs
(and clearly must have at least two in order to make sense).
N.B. The matrices are stacked “vertically” in levels, as appropriate for user
classes; cf MXBLOCK.
To stack more than 8 matrices see either STACK (10.20.11) or UFMSTACK
(10.20.17).
Outputs a “stacked” matrix mat.ufm, built from the input matrices mat1.ufm,
mat2.ufm, etc. etc. in order. The list of input matrices may contain up to 8 inputs
(and clearly must have at least two in order to make sense).
N.B. The matrices are stacked “horizontally” in blocks, as appropriate for time
periods; cf MXSTACK.
Outputs a “stacked” matrix mat.ufm, built from the input matrices mat1.ufm,
mat2.ufm, etc. etc. The number of sub-matrices n to be stacked depends on the
maximum existing matrix file matn.ufm and, unlike MXSTACK, isnot otherwise
restricted.
STACK differs from MXSTACK only in so far as the matrices to be stacked are not
explicitly named on the command line but are implied by their “root” name (i.e.,
“mat”). The converse of STACK is the UNSTACK procedure which creates a set of
sub-matrices based on a “root” filename.
STACK and UNSTACK may be conveniently used if you wish to perform the same
operation (e.g., editing the zone structure) on each level of a stacked matrix.
Subtracts matrix mat2.ufm from mat1.ufm together to produce an output file mat
3.ufm; i.e.:
Tij=
3
Tij1 − Tij2
Takes a weighted average of two matrix files mat1.ufm and mat2.ufm to produce
an output file mat3.ufm where:
dumps a “binary” matrix mat.ufm into a csv-formatted text file ‘text’ – or, if the
second parameter is not included, into a default value mat.txt. It therefore follows
(automatically) the procedures described in 10.15.1 (option 4).
A number of varieties of UFM2... exist, essentially one for each of the various
output options described in 10.15.1. Thus:
re-creates the “binary” matrix mat.ufm from a csv-formatted text file mat.txt. It
therefore follows (automatically) the procedures described in 10.5.5 but with the
proviso that the file mat.ufm already exists so that it is “updating” rather than
“building”. Thus the “new” version of mat.ufm takes all its “structure”, i.e., the
number of rows and columns, the zone names etc., from the “old” mat.ufm but re-
sets all its cell values as read from the .txt file.
Note, therefore, that these procedures are essentially “restore” or “rebuild” rather
than “build from scratch”. If you do wish to create an entirely new .ufm from a .csv
data file you should follow the interactive procedures outlined in Section 10.5,
preferably entering the program MX via the “batch file” command (see 10.1):
MX I
At a future date the ..2UFM batch files may be made sufficiently “clever” to detect
when a .ufm matrix does not pre-exist and must be built totally from scratch.
Essentially the …2UFM procedures are the reverse of the UFM2… procedures
described above; the latter converts a .ufm file into text, the former converts a text
A number of varieties of …2UFM procedures exist:
♦ LINE2UFM
♦ CSV2UFM
♦ EMME2UFM
♦ TBA12UFM
♦ TBA22UFM
♦ TBA3AUFM
following the conventions described in 10.20.13.
Specifying formats and/or decimal places is less important in reading from text
files than in writing to them (see 10.20.13 above) since, in general, the input
routines can detect whether a field is, say, E-formatted and deal with it as
appropriate.
Note that there are no procedures SATL2UFM or SATS2UFM as these are
effectively covered by the standard matrix build procedure MXM1 (See 4.1).
Outputs a “stacked” matrix using a set of filenames read from a text file “control”.
More specifically the first record in control gives the name of the output matrix to
be stacked while each following record lists a sub-matrix to be stacked. The
number of matrices to be stacked is therefore dictated only by the number of
records in the file. Thus it is not otherwise restricted by the number of matrices (8)
that MX can store internally (unlike MXSTACK, 10.20.9) since each matrix to be
stacked is read, copied and then closed immediately.
If the second parameter is ‘QUIET’ then the program runs in quiet mode; see 14.9.
Unstacks a matrix into a set of sub-matrices using a set of filenames read from a
text file “control”.
As with UFMSTACK the first record in “control” gives the name of the .ufm matrix
to be unstacked while each following record lists a sub-matrix. The number of sub-
matrices should be equal to the number of levels in the stacked matrix but is not
otherwise restricted.
If the second parameter is ‘QUIET’ then the program runs in quiet mode; see
14.9.Clearly UFMUNSTACK is the converse of UFMSTACK and the same control
file may be used for both.
Takes the “dot product” of matrices mat2.ufm and mat1.ufm together to produce
an output file mat 3.ufm; i.e.:
Tij3 = Tij1.Tij2
I.e., each cell element in matrix 1 is multiplied by the corresponding cell in matrix 2
so that if, say, matrix 1 is a trip matrix (pcus/hr) and matrix 2 is a skimmed time
matrix (hrs) then the resultant matrix is a matrix of pcu-hrs/hr.
N.B. This is not the normal mathematical definition of matrix multiplication but one
that is probably far more commonly used by network modellers.
Outputs a new matrix file mat2.ufm based on the input matrix mat1.ufm but with a
different set of zone definitions. Thus the existing zones may be combined
together (aggregated), split (disaggregated), names changed, factored, etc. etc.
according to the instructions in the control file control.dat. See Appendix W.3 for
the formatting of control.dat.
Similar operations may be carried out interactively as described in Section 10.4.2
and in 10.16.3.
Divides each cell in mat1.ufm by the corresponding cell in mat2 and outputs file
mat3.ufm; i.e.:
𝑇𝑖𝑗1
𝑇𝑖𝑗3 =
𝑇𝑖𝑗2
to examine the network file LIV93.UFS. For full format instructions type P1X etc.
on its own. (See also 14.1)
Note that all interactive programs automatically produce “line printer” files which
contain a permanent record of most of the interactive steps, relevant inputs and
outputs etc. plus (since release 11.2.11) a full listing of the “LOG” file generated
during execution (see 14.5.1)
On first entry to a run of P1X and on subsequent returns the “master menu” allows
access to a large set of sub-menus which may be classified into (with further
information given in the sections noted):
1) System/device definitions; 11.3.
2) File control; 11.4.
3) Network Windowing; 11.5.
4) Basic network display (including GIS, 5.7.1); 11.6.
5) Validation options; 11.7.
6) Analysis Options; 11.8.
7) Information Options; 11.8.4
8) Convergence statistics, 11.15
9) Edit options (including both network, GIS and PMAKE); 11.9.
10) SATDB-based facilities; 11.10.
11) SATLOOK-based facilities; 11.11.
12) Node graphics (SATED) display; 11.12.
13) Network cordoning (SATCH); 11.13.
14) (Pure) Matrix graphics; 11.14.
Certain of these facilities may also be accessed at points in the program other
than the “master” menu by commands in the menu bar. For example you may
change the network window, the network display options and (some) system
parameters from most locations within P1X. See 19.5. In addition a number of
other functions are only available through the menu bar; see, for example, 11.5.3.
To return to the master menu from any sub-menu within P1X click on “Master
Menu” under “Back” in the Menu bar and further select any of the 13 standard
“top” menus listed above (or the master menu itself) via the sub-list.
correctly scale the plot. This information is contained in a supplementary file with
the standard name ‘GRAF.DAT’ which contains all the information necessary to
“tell” the program about the output devices available to it. It is therefore
installation-specific.
The following data needs to be supplied for each potential device:
(i) Whether it is a vdu screen or a hard copy device. (A “screen” is any device
for which column 30 on the first record for that device contains a 1 or greater
whereas a “printer” contains a zero.)
(ii) Its maximum X and Y dimensions, both in physical millimetres and in
(device) pixels.
(iii) The number of “pens” (/colours) available (SATURN programs assume 16
but the output device may have fewer, in which case it is necessary to “map”
the 16 SATURN colours into the smaller set.)
(iv) “Pen mappings”, either for the above reason or if, say, you wish to have
output in red when SATURN thinks it is outputting in green.
(v) Various universal scaling parameters to, for example, make the output text
characters bigger or smaller.
For a full description of the contents of GRAF.DAT, its format etc the reader is
referred to the file itself which, after the initial data set, contains documentation.
A standard version of GRAF.DAT is supplied with SATURN with a number of
standard device definitions; users may well need to modify this file to suit their
own available devices. If for any reason a SATURN program cannot locate
GRAF.DAT an internal default set of device definitions is used. This contains
specifications for common device types - the screen and printer under 32-bit as
mentioned above - and should therefore be sufficient for most users’ applications.
The correction factor compensates for poor communication between the programs
and the device drivers and is related to the device/screen resolution. Ideally the
correction factor should be 1.0; however, empirically, a value of 1.35 appears to
be required for the majority of screen settings to which SATURN is applied and
that is therefore (currently) the default.
Generally the problem of over-sized characters occurs with low-resolution screen
settings; therefore one solution to the problem may be to increase your screen
resolution. If this is not feasible or does not work the only alternative is to adjust
the correction factor within P1X. From the menu enter “Primary dev”, select
Correction Factor and input a new value. Some trial and error testing may be
necessary.
Since the default value, i.e., the 1.35 above, is read from the graf.dat control file
users may also wish to change graf.dat. This may however be a bit difficult with
networked computers if the same central version of graf.dat is being used by a
number of different machines.
The same considerations apply to the alternative (i.e., printer) devices if output
characters are universally over- or under-sized; either change the correction factor
for the secondary device interactively prior to printing or (preferably) ensure that it
is changed in graf.dat. Unlike terminal screens, however, a default value of 1.0 is
probably fairly safe.
an angle (e.g. annotation along a link in P1X). Thus you may observe that the link
annotation, which should appear “just above” or “just below” the line may, be
shifted away/towards the line. The rotational shift parameter (defined as fractions
of character heights) moves the text up or down depending on the sign. N.B. It
has no effect on either horizontal or vertical annotation where the problem does
not occur.
A more drastic solution to the same problem is to use a set of SATURN “DIY”
fonts as described in 11.3.8.
Equally bitmap files may be used as inputs to P1X and displayed, e.g. as
“background” to SATURN plots. A “default” bitmap file may be defined via the
parameter FILBMP under &PARAM network parameters in the network .dat file;
see 6.3.4 and 15.43.
Alternatively, (post release 11.3.11), FILBMP need only define the folder in which
the required bitmap files are located. Thus FILBMP = ‘C:\bitmaps\’ defines a
folder, FILBMP = ‘C:\bitmaps\one.bmp’ defines an individual file. The advantage of
setting the folder is that it makes much easier to search for bitmap files
interactively.
Bitmap files open up all sorts of interesting applications, for example directly
inserting SATURN graphics into word-processed documents or putting your own
logo onto a SATURN plot. However there are restrictions as to the type of files
which FTN77 can import and export so that SATURN is effectively restricted to
“pcx” and “bmp” files and screen images sent to and from the clipboard.
To create an output bitmap file choose either pcx, bmp, jpg (post release 10.8.20)
or clipboard through the menu bar (under Files). If pcx, a file with extension “.pcx”
is then created. The initial part of the “pathname” is composed from a “root” which
may be set within the Systems/device menu (11.3.3) and a sequential number.
Thus, if your root name is “harry”, the output files are, in succession, harry1.pcx,
harry2.pcx, etc. Similarly, if bmp, the output files will be harry1.bmp, etc etc.
Optionally, using a parameter set within the Banner Display Menu (11.6.9), the
menu choices displayed within the banner may be excluded from the output
bitmap file.
SATURN also allows bitmap files to be read as input files and displayed on the
screen so that they may be used as a “background” to a P1X plot. Thus you may
superimpose P1X plots on, e.g., OS-style plots of the same area. See Section
15.43 and under PMAKE, section 18.
Note that, at the moment (release 10.8.20), only .bmp and.or .pcx files may be
input, not .jpg. It is hoped that jpg inputs will be made available shortly.
♦ global changes;
♦ individual applications.
Thus under global pen changes it is possible to “map” one pen into another. For
example if the standard pink pen (#13) is very faint on your device it may be
mapped into, say, the red pen (#4) using the Pen Definitions menu under
System/Device.
Alternatively if one particular application uses a colour you don’t like, for example
the pen colour used to annotate nodes on link plots, then there are menus where
particular pen definitions may be changed without making that change global. In
particular, the “background colour” of the plots (which defaults to white) may be
re-set within this menu.
file, rather than the A0 device directly, and only spool those print files that you
really need. But quite how you spool printer (.prn?) files later on I have no
experience with.
1 Certain options may either read or create external files on an “open-and-close” basis; the files
referred to here generally exist throughout the program.
e) A bitmap or pcx file which may be used as a background to the network plot
(see 11.3.6).
f) A “.wxy” file which contains old plot window definitions; see 11.5.2.
The general principles are described in 15.2. Thus if you wish to permanently
change arrow dimensions you must use the appropriate menus to change the
values within that particular program run; then, at some later stage of the same
run, output an updated version of the preferences file such that the new parameter
values become the defaults.
Note that some care is needed with file management here in that a new output
preferences file is, by default, stored in your current sub-directory whereas the
default file read on input may be stored in another specific sub-directory. You
must therefore either explicitly create the new file in that sub-directory or else copy
your output file into it after the program run.
The preferences file P1X0.DAT is rather long and what the parameter “names”
represent is not always obvious. Version 10.5 has added short explanations as
“comments” on the right-hand side of each definition record but the list is still only
partial. All queries to either Atkins or DVV.
3) The “corners” are set by direct manipulation, e.g. by moving the window or by
defining them with the mouse.
The choice of the initial window (by default the full network) is described in Section
11.5.6 below.
Once set up the “window” may be moved or re-defined using a range of options
described next.
At the simplest level the window may be shifted UP, DOWN, LEFT and RIGHT by
standard amounts or expanded/reduced (PAN/ZOOM) by key commands (Note
that “Pan” is used as the opposite of “Zoom”.)
A new form of shifting the window, denoted by MOVE, has been introduced in
10.8. MOVE allows the window to be shifted in any direction and by a variable
degree. The direction of shift is determined by the position of the mouse relative to
the centre of the plot and the amount of overlap by its distance from the centre. By
contrast, LEFT, RIGHT, etc. can move in four directions only by fixed amounts.
The “BOX” option allows the user to set a sub-window within the current window
by first clicking on a corner with the mouse and then clicking on the opposite
corner. The new boundaries are displayed as “rubber bands”. Selecting outside
the current window is not permitted.
“DRAGing” is accomplished by first selecting a node on the current plot (point and
click) and then clicking on a new point within the current window for that node to
be moved to. This is particularly useful when a bitmap background map is being
used and you wish to correctly locate the plotted map on the background.
In a similar way the “SCALE” option allows two nodes to be located at their
desired position, in which case the plot is not only shifted but scaled up or down
as well.
In all cases the (user) co-ordinates of the four corners of the plotted window are
held in variables Xmin, Xmax, Ymin and Ymax where X refers to the horizontal
and Y to the vertical. For more precise positioning these variables may be set
explicitly (useful for selecting the same area as in a different run, although see
11.5.2 below for an alternative method).
network plots either the entire network or an area with the current main window at
its centre (depending on which one is smaller) at a reduced scale in the lower right
hand corner and with only links displayed as straight lines; i.e., no annotation,
node information etc.
The useful bit however is that the current main window is illustrated as a red
rectangle within the plot, thus showing you where the current window is located
within the full network. See below.
If the window is changed in any way then the “new” auxiliary plot will appear
automatically. However if any other operation is requested the auxiliary plot is
minimised.
The auxiliary network plot also functions within node graphics (11.12.3), in which
case the currently selected node is marked as the centre of a red rectangle within
a larger section of the network.
Users should find these facilities simpler and more intuitive than operating through
the banner or via the pull-down options under Window simply because the mouse
does not move after the click-request so that if, for example, you wish to
continually zoom in more than once it is simply a question of locating the mouse
over Nav-Z and clicking repeatedly to zoom in continuously.
Note that it is normally quite helpful to turn on the auxiliary network plot (see
11.5.4) whilst re-defining the window as this gives an instant indication as to
where the current window is in relation to the full network.
relating, e.g., to trees or select link flows will be superimposed on to the basic
network plot but disappears once that option is completed.
The link attribute used in the tests may also be specified as either its actual or its
absolute value.
links on a bus route. However these displays are only being temporary and the
links thus selected are not part of the “permanent” selection described above
♦ Flows;
♦ Emission data.
The precise contents of each depend on the input network so that, for example,
“LANES” would not apply to a buffer-only network.
There is also a choice of a “full” list including all items under (a) to (e) above but,
generally speaking, the full list is long and unwieldy.
A full list of all possible data items in the standard lists is given in Appendix I.1with
an explanation of what each contains plus, where applicable, their equivalent DA
code.
In general and where appropriate the flows listed explicitly differentiate between
actual and demand flows but in the case of five “sub-flows” - bus flows, pre-loaded
flows, passq flows, (total) fixed flows and entry flows from centroids - there is an
explicit 3-way choice under Options to request either demand, actual or queued
upstream flows to be created.
Equally annotated link data may be generated via, for example, Select Link
Analysis (11.8.1), tree building (11.8.3), etc. etc. Bus routes are annotated by
writing the number of the route along the constituent links.
A further form of link annotation - which must be “text” - is that of link “names” as
available under GIS displays. See 11.6.10.
which case, see below, they are displayed on every subsequent plot until
cancelled).
We note that P1X and SATDB share a common internal data base (see Section
11.10.1) such that data selected for display under non Pick’n’Plot is added to the
data base exactly as though it had been generated within SATDB. Conversely this
means that the analysis options from SATDB may therefore be accessed from
within P1X, e.g., the ability to create new data columns via FORTRAN equations
or to look at the data numerically on the screen.
Note that “link data” selected by P1X does not only refer to data to be annotated
on links by P1X since a number of the items also apply to simulation turns, e.g.,
link flows, in which case if the data is stored as a data base column the turn data
is also there to be viewed and/or manipulated via SATDB.
By default all data items in the permanent data base (independently of how they
were created) are displayed in all network plots although under the
“housekeeping” options plotting may be suppressed.
More than one variable may be annotated at once, although with numerical
display the program checks whether or not enough space is available and
suppresses any figures that would “over-run” the link. However before
suppressing any numbers the program first tries to “compress” the annotation by
writing smaller numbers; the system parameter SHRINK (set under the “current
device parameters” sub-menu within the system/device menu; 11.3.4) sets a limit
to the compression, so that if SHRINK = 0.7 the smallest permitted characters are
70% of the normal size.
negative numbers are plotted as different colours. This is very useful when, for
example, displaying the differences in flows, etc., between two different networks.
Each option has a corresponding proportionality parameter which may be
changed whether or not that option is currently invoked; for example, under (1)
above a parameter value of 100 units/mm would imply that a link whose data
value was 376 would have a band of width 3.76 mm displayed.
♦ Alternatively, if more than one item of link data is being displayed, each item
may have a different colour.
♦ Different colours may denote positive and negative entries per data item.
♦ The colours may depend on “range bands” such that, e.g., all data values in
the range 0 to 100 are plotted in red, 100 to 200 in blue, etc. etc. with different
pen colours/ranges for different data sets (see 11.6.3.6).
♦ Alternatively the colours of each individual data item may be defined by the
range bands of another single “master” data item (see 11.6.3.7).
The most basic choice is between basic pen definitions which depend only on
data item plus positive/negative and those which are range-based. The default is
the former with pen choices which differ by both data item and by
positive/negative, although these may be changed by the user to be based more
on single uniform colours.
Colour choices in P1X are made by entering “Pen and/or range defs” under Link
Annotation Display Options where the following basic options are presented:
♦ The choice of range bands or single colours per data item (11.6.3.6);
♦ The choice of a “master” data item to define colour bands for all data
(11.6.3.7).
Once set the current colours and/or range limits may be displayed along with the
plot via the A-Z banner (11.6.9).
Note that they may be preserved for future applications by storing them on a new
preferences file – see 11.6.3.9.
In the case of bandwidth notation averaged data appears (equally) on both sides
of two-way links and on the “correct” side of one-way links. For summed data the
bandwidths always “straddle” the link whether it is one-way or two-way.
For all other display modes, i.e., numerical presentation and geometrical options
(2) to (4) under 11.6.3.2, averaged data appears as per bandwidths but summed
data on 2-way links appears on one side of the link only (where the choice of side
is decided by link numbers).
banner. (If the lanes appear too large or too small by a factor of 10 it
probably means that the parameter XYUNIT has been incorrectly defined.)
It is logical to combine this form of link representation with the representation
of simulation nodes by lane-based diagrams; see 11.6.5.1 (4) below.
Note that, if lane display is “on” the width of the lane, which defaults to 3.75
metres “on the ground”, may be re-set to provide more or less “width” as required
9) One-way links are (by default) indicated by arrows at the mid-point in the
appropriate direction; the length of the “barb” may be adjusted or, in the limit,
set to zero in order to suppress the arrows totally.
NODE SHAPES
Under option (1) above (ONLY!) different junction types are represented by
geometric shapes and/or colours. Thus simulated roundabouts are represented by
circles, traffic signals by squares, priority junctions by rectangles, external nodes
by pentagons while dummy nodes are either (post 10.8) given by a number only
or by a star. In the buffer network all “real” nodes are represented by a hexagon.
Zones, whether in the simulation or buffer networks, are represented by triangles.
In addition each shape can have its own unique colour and be either “solid” (i.e.,
in-filled) or “open”. If, however, numerical node data is included then the shape
must be open in order to accommodate that data; see below.
Various options are provided to: (a) suppress node shapes altogether; (b), to use
a single pen colour for all node types and/or to distinguish different node types by
different colours; (c) to distinguish zone sectors by distinct colours; and (d) to
factor the size of the shapes up or down by a user-set factor (default 1.0).
h) By selecting those nodes which are retained in a “spider web network” (see
15.56.2)
i) By selecting those simulation nodes which may be treated as “moons” in
terms of the order in which simulation nodes are simulated (see 8.3.5)
j) By selecting simulation nodes which have been converted to Fixed Cost
Function (FCF) operation; see 15.1.6.
In addition the selections may be built up as a sequence of “AND” or “OR”
conditions; e.g. you may select nodes which are both traffic signals AND have
entry flows of more than 1000.
Thus under a) one might select only signalized simulation nodes, all junctions
excluding zones etc.
Option b) can select, e.g. nodes where the delay is greater than x seconds, etc. In
this case the “property” on which the test is applied may be:
♦ (most commonly) the node data currently annotated (if there is one),
♦ a newly selected data item from the standard list of node data.
The numerical criteria on which the test may be based are similar to those used
for link selection by numerical attribute; see 11.6.1.1. Thus not only may they
include “GT 30”, “LT 0” etc. they may also include “Top Ten” so that one might
select the 10 worst converged simulation nodes.
Option c) simply tests on the basis of numbers; e.g., select those nodes whose
numbers are between 100 and 200.
Option d) provides a somewhat crude “select by location” using the definition of
the current plotting window to “cordon off” a set of nodes/zones. A more
sophisticated selection may however also be done using the cordon options
proper within P1X as accessed from the master menu (11.13).
Option e) allows the user to select nodes by point-and-click with the mouse which
may be extremely convenient if a small number of nodes are to be selected and/or
the basis for their selection is otherwise difficult to specify.
Option f), network comparison, may either work at the rather crude level of
selecting nodes which, e.g., appear in network 1 but not in network 2, etc. It may
also use a more precise system of selecting common nodes by identifying
simulation nodes which are coded differently between the two networks.
Note that the node selection rules in P1X are, effectively, identical with those
applied within the SATDB node data base (11.10.5) so that selections made here
will affect, e.g., the node data tables as printed by SATDB and vice-versa.
particular this technique is used to highlight nodes where certain errors have been
detected while building the network in SATNET.
Thus one may opt to highlight all those nodes where, e.g., one or more Serious
Warnings have occurred – or, in greater detail, one may display only nodes where
one particular Serious Warning occurred. The objective of the exercise is to make
it easier for users to identify where errors have occurred and, hopefully, to correct
them.
Similarly data from .ERL files (see 15.58) may be used to highlight nodes where
certain forms of coding errors have been detected, the difference in this case
being that not necessarily all errors detected by SATNET are displayed, only
those that are suitably identified within the .ERL file as controlled by the user. Full
details are given in 15.58.2.
The highlight options may be entered either by clicking on “Highlight Errors”, “1st
ERL Field” etc. under Display Options in the Menu Bar or on “highlight Errors” etc.
in the banner under Display Options. In either case the user is prompted with a
menu to select, e.g., all Serious Warnings, one particular Serious Warning by
number, etc. etc.
A further highlighting option selects those simulation nodes where there are
differences in the coding between networks 1 and 2, e.g., different signal timings.
This is a useful option to identify where changes have been made to a network,
e.g., by an over-zealous colleague when you are away on holiday! A full listing of
differences may also be obtained within SATLOOK; see 11.11.18.
This option is extremely useful for network debugging in that it enables the user to
quickly identify where in the network particular errors have occurred rather than
trying to identify particular error messages in a .LPN file and locating the
corresponding nodes using P1X.
Note that having identified a sub-set of nodes displaying a particular error it is then
possible to automatically “loop” over those nodes in order to view the source of
the error via node graphics. In addition, the same “loop” may be invoked under
Network Editing in order to be able to correct any coding errors immediately and
to produce a corrected .dat file.
Similarly nodes may also be highlighted (and looped over) within the Convergence
Menu “10 worst” options (11.15) so that, for example, the locations of the nodes
where the 10 biggest discrepancies in delays calculated by the simulation and
assignment sub-models have occurred are highlighted. This is also an extremely
useful tool in quickly identifying potential trouble spots in terms of assignment-
simulation convergence and correcting them. (Note, however, that the source of
the convergence problem may not be as immediately obvious or as easy to
correct as it might be with specific coding errors.)
In the latter case, described here, there are two “main” display modes:
a) data such as turning flows; or
b) banned turn indicators
(plus a third choice, the default, of no turn display)
Under a) turn data may be displayed in one of three distinct modes:
(i) As arrows drawn parallel to the link with the arrowhead in the direction of the
exit link and with numerical values at the end of the shaft;
(ii) As “tubies” - in-filled curved bandwidths whose widths are proportional to the
turn data displayed;
(iii) As “boxed data” with the values for each exit turn from a link printed
horizontally within a box attached to the relevant link.
Note that only simulation junctions have turn data associated with them. The data
to be displayed is chosen from a menu. It may also be “selected” based on the
selection rules for nodes (11.6.5.3).
Under b) an arrow with a perpendicular bar at the end is used to indicate all
banned turns.
(N.B. Prior to release 10.7 “Banned turns” in the context used here referred only
to turning movements coded with a zero saturation flow under 11111; they did not
include any turns which have been banned via the 44444 data inputs, primarily
since in the latter case the ban or bans may be user-class specific. However, post
10.7, turns which have at least one user class banned under 44444 are also
included.)
Indeed, given the vast amount of data contained in individual o-d cells and even
row and column totals, displaying matrix data via sectors can often be far easier to
digest.
♦ The width of an extra blank border down the left-hand side (useful for
reports).
♦ The pen colours used for general drawing, e.g. link colours, the legend etc.
♦ XYUNIT (which, if incorrectly set in the original network file, is a pain to reset
without rerunning the entire network).
♦ An option to suppress the exterior lines enclosing the window which may be
useful for plots to be transferred into reports.
♦ An option to use either the full available screen or to reduce the window to fit
the network window plotted.
In short, any parameters that don’t fit conveniently anywhere else go here!
♦ where the banner appears (essentially on the right, on the top or not at all);
♦ whether the banner menu choices are included or not in output plots to the
alternative device or to bitmap files (11.3.5 and 11.3.6);
♦ choices as to what appears in the A-Z banner, e.g. whether or not you want
the WS Atkins/ITS logo to appear;
♦ the pen colours and standard character height as used in the banner.
♦ Polygon
♦ Lines
♦ Icons
♦ Text
♦ Node names
♦ Link names
♦ Curved/straight links
Note that while the “names” set in a GIS file are normally titles such as “Hyde
Park” or “M62” they are essentially just text so that you may use this facility to
include comments such as “New Signals” or “Congested” on the plots.
By default all GIS displays are “off” but the default settings are in fact stored within
the P1X preferences file (11.6.10) such that if you turn, say, curved links “on” and
then store a new preferences file then curved links will be the default from, then
on. More specifically the Namelist “names” associated with the 8 options above
are of the form GIS1, GIS2, … GIS8; i.e. an entry of the form: GIS8 = T sets
curved links to “on”.
If more than one count field per link has been used (MCCS>1) than one particular
field may be used. Finally the analysis may be applied to links only, turns only or
(the default) all input records.
The modelled flow may be defined in a number of different ways, i.e. actual vrs.
demand flows, bus flows included or excluded and one/all user classes.
Full numerical output statistics are included in the .lpp file; summaries are
(optionally) sent to the screen. Optionally validation criteria as recommended by
the UK Department of Transport are set out; these include:
1) For flows > 700 pcu/h the percentage of modelled flow within + 15% of the
count.
2) For flows <700 pcu/h the percentage of modelled flows within + 100 of the
count.
3) The percentage of counted links where the GEH statistic (15.6) is less than
5.0.
In all 3 cases the Department’s recommendation is that 85% of the counts should
satisfy the above criteria. (N.B. The flow split between 1) and 2) in SATURN is
based on flow units of PCU/h, not VEHICLES/h as strictly used by DETR.)
The scatterplots plot modelled vrs observed flows and (again, subject to options)
best fit lines of the form y = a + bx, y = bx and y = x with plus/minus GEH limits
included. Thus if you ask for y = a + bx only and GEH error = 5 then the linear
plot is given with upper and lower curves corresponding to modelled flows which
would be within a GEH value of +5.
Note that the same set of options may also be invoked under option 13 of
SATLOOK, 11.11.13.
Points in the scatterplot are plotted as small squares; optionally the count
“number” (as it appears in the full list of counts) may appear above and to the right
of the squares. Although probably not legible in a mass of points near the 45
degree line they are useful for quick identification of outliers.
Also plotted is the observed time vrs distance plot. Note that this is assumed to
be the time to the stop line so it should be compared to the upper point at
simulation nodes.
The observed times may also contain “error bars”, i.e. vertical lines at each point
representing the spread of measured values if more than one observation run has
been undertaken (as should be highly recommended in practice). Spreads are
(optionally) input in the second input field within brackets in the network 66666
records (see 6.9.5).
Optionally the node annotation at each point may be displayed, in exactly the
same way that they are currently displayed in the network plots, for example as a
node shape with its node number offset. Similarly an option to include annotation
along each link, again as it currently appears in the network plots, will be
introduced “soon”.
Equally a short line whose slope represents the mean route speed (to the nearest
integer kph) is plotted in the lower right hand corner in order to provide a scale.
The table also tests whether or not the modelled times satisfy the standard DfT
criterion of being within either 1 minute or +-15% of the observed times. The total
number of “OK” observations is also recorded.
♦ request link, bus or node-based etc. information for display in a text window;
ditto network-based information (11.8.4);
In certain of these operations the link data created, e.g. forests, may be
permanently stored within the internal data base for later further analysis or
display.
Since certain of the analysis options may – dependent upon the network
configuration – use either UFC or UFO options (see 15.23.6) to reconstruct OD
routes and/or use aggregated (SPIDER) networks (see 15.56) for analysis options
are provided at the level of the top Analysis menu to choose between these
options. For example, see 11.8.1.12.
On the other hand it is always worth remembering that the precise route flows
generated by a Wardrop equilibrium assignment (and indeed for stochastic
assignment as well) are not unique, therefore neither is an SLA. Furthermore any
output data at this level of disaggregation should always be taken with a large
pinch of salt. We therefore recommend treating any SLA outputs as
“representative” rather than precise estimates.
In addition please bear in mind that the SLA flows arise only from the trip matrix
assigned and that they therefore exclude, e.g., bus flows or other fixed flows.
Hence SLA flows are very often significantly lower than the “total” flows - a
perennial source of confusion!
Thus under i) the flow considered to cross the selected link(s) is the full flow
demand flow as given by the input trip matrix whereas under ii) if the routes pass
through over-capacity links or turns it is the actual (reduced) flow which reaches
the selected link that is monitored. Note that any reduction to SLA flows is only
applied to over-capacity turns between the origin and the selected link; what
happens to those flows after the selected link is not relevant.
Queued flow is essentially the difference between the demand and the actual
(expressed in units of pcus/hr).
The same flow definitions also apply to SLA matrices (11.8.1.3). Thus, for
example, an actual trip matrix for a particular link represents those flows that,
starting from their origins, actually reached that link; i.e., any flow reductions after
the link are not considered.
By default, to be “selected” as part of a screen line SLA, an O-D path must use at
least one of the links within the screen line – although there are variations if a path
crosses more than one link as explained in 11.8.1.10.
SLA screen lines may be defined in one of five ways:
1) by selecting links interactively using the mouse;
2) via a set of links input under the 7777 records;
3) those links currently “selected” (in the sense of 11.6.1);
4) via an external ASCII or text file; or
5) as a set of 666 combined constraints defined by a .ME2 file.
Under options (2) and (3) turns may also be included. In all five cases links are
“directional”.
The external file consists simply of a set of individual records, each containing a
link A-node and B-node. The format is “free” in that the 2 nodes must be
separated either by a comma or a space. Thus standard “fixed 5-column”
SATURN link records (e.g., 6.10) are acceptable unless 5-digit node numbers are
used, in which case it is possible that column 6 will not be blank. The file is
(preferably) terminated by a 99999 record.
Options (2) and (3) are also available within SATDB (see 11.10.7.5).
Thus the totals is made up of 500 O-D trips which use A-B only, 1500 which use
C-D only and 500 which use both. The sum of the reported link flows, 3,000, less
the totals, 2,500, equals (in this case) the flow 500 which uses both. (N.B. This is
not a general rule since if one had more than 2 links in the screen line as would be
normal then there are all sorts of permutations and combinations of multiple
crossings to be considered and the difference between totals and sum would be
increased.)
If the Minimum Crossings had been set to 2 in the above example then only the
500 trips that use both would be picked up and the Full Stats Table would give:
A B 500.00
C D 500.00
TOTALS: 500.00
So that the sum of A-B and C-D less the totals still gives 500 – but again this is
not a general rule.
Note that if one chooses to output a matrix rather than link flows then the total
number of trips in the matrix should equal the number given under TOTALS.
N.B. Setting Minimum Crossings, etc. only works for analyses based on .UFC
files, not .UFO (as produced by OBA, for example).
• On the link
use an alternative definition whereby the additional delay added at the end of link
A-B would be the average delay for all turns out of A-B. While this may not make
much sense in terms of analysing a particular route it does have the advantage
that if the available comparison data for calibration (e.g., from GPS systems) only
records the average delay at the end of a link, not for a particular movement.
See Section 15.26 for further explanations of the concepts. Note that not all the
above options, e.g., e) and g), may appear under OBA where explicit paths may
not be stored (see 22.5.2).
A summary banner which displays, e.g., the cumulative (“skimmed”) time, distance
etc. associated with the displayed route is included when appropriate. See Section
11.8.2.1 under Joyrides for further explanation of the data displayed.
With certain options, e.g. forests, it is possible to “store” the link data generated as
an extra column in the link (SATDB) data base, e.g., for further analysis.
Trees may also be displayed “in reverse”, i.e. into a destination as opposed to out
of an origin. However the destination-based options are limited essentially to
building “full trees” from all nodes since specific O-D tree information is provided
only within the origin-based menu.
11.8.3.3 Isochrones
A related display, still very much under development, shows “isochrones” of equi-
cost bands from the origin as overlapping in-filled coloured bands. These are
based not just on the costs from the origin to discrete points along the road but to
any point in the 2-dimensional space within the network by the additional
assumption of a “walking speed”. Thus the cost to reach any point (X, Y) is made
up of the cost to get to the “nearest” point on the road network plus the extra
time/cost to “walk” from the road (assuming the minimum crow fly distance).
Parameters to be set include:
♦ The definition of “cost” (e.g., minimum time, distance, generalised cost, etc.
etc.)
and this could then be fed into a “proper” GIS system which could then produce
“proper” line contours in whatever format is desired.
Under (b) the node data could be manipulated internally as desired; see 11.10.5.
For example, the node minimum costs could be displayed using any of the
standard node display options (11.6.5). Alternatively, one could do things such as
calculating the isochrone minimum cost to several zones representing, say,
hospitals so that taking the minimum over several data columns would then give
you the (minimum) cost from every node to the nearest hospital.
δ AB = Σ pij∈AB T pij (C A * + C AB - C B *)
Where C A/B * is the minimum cost from origin I to node A / B
C AB is the cost on link (A,B)
T pij is the flow on path p from origin I to destination j
pij∈AB denotes those paths that use the link (A,B)
The “cost” term in the brackets represents the extra cost above and beyond a
minimum cost path that a vehicle from I to j would incur by using link (A,B) and is
therefore a measure of its departure from Wardrop Equilibrium. Under perfect
equilibrium if the cost term is positive then T pij should be zero; if T pij is positive then
the cost term should be zero.
We may note that summing δ AB over all links would give us the same numerator
as the equation (7.3) for Delta (Section 7.1.4)
Link delta values may be further disaggregated by, e.g., only considering a single
origin. Equally we could produce an origin-specific delta value by summing over
all links with the origin i fixed.
The banner provides several options for calculation and display. Thus we may
calculate δ AB for the single selected origin or summed over all origins. (The former
is generally recommended for large networks since the cpu time required to sum
over all origins is roughly equivalent to carrying out a full assignment and, if you
choose an origin whose trips cover most of the network it should pick out those
links which have problems of convergence.)
Note that link delta values are set by assignment links which therefore, in the
context of a simulation network, contain both simulation roads and turns. In order
to view the full set they may be stored as a data base column and viewed
normally.
However, once set, link delta values are automatically displayed as link annotation
but, in this case, the value displayed for a simulation link (A,B) will have been
incremented by (a) all delta values for its exit turns (i.e., A-B-C) and (b) by all its
entry turns. The reason for this is that the turn values – which may well be more
significant than the pure link values – are otherwise not obvious. Large delta
values on, say, links A-B and B-C probably indicate a large contribution to both
from the turn A-B-C.
The times used in the calculation of generalized cost above may be either taken
post-assignment or post-simulation. In the former case δ AB is comparable to the
delta function (7.1.4); in the latter case it is comparable to the gap function (9.2.1).
♦ Links
♦ Nodes
♦ Zones
♦ (Bus) routes
♦ X,Y co-ordinates
Secondly, a range of options as otherwise provided by SATLOOK:
♦ Network parameters
♦ A list of the “must have” or essential files in order to run this network.
These are described in sub-sections 11.8.4.2 to 11.8.4.11.
2 The .dat file name should be recorded within the .ufs file and therefore opened automatically,
but, if not, the user must supply the correct file.
♦ sub data text files, e.g., .RGS and .XY (see 11.9.14 and 11.9.7 respectively);
♦ an updated .dat network file with data sub-sets created as $INCLUDE files.
Please note that none of the new file formats above are automatically created but
must be specially requested by the user (see the output options within the edit
banner menu). The following sub-sections describe each of the above options in
greater detail.
3 Note that certain options within P1X re-read simulation data from the input .ufs file and therefore over-
write any internal simulation data that has been modified; for example re-assignment options under
SATDB (11.10.7) based on networks other than network 1. Therefore if you wish to save an updated
.ufs file you are advised to do so immediately after editing.
which optimises the stage times and/or offsets automatically using P1X by default
uses method (b); i.e., it incorporates all the old sub-files within the new .dat file.
N.B. The above material applies equally to files which are created using either of
the methods described in 11.9.2.1 or 11.9.2.6. Thus, in the latter case, a newly
created $INCLUDE sub-file may contain internal references to other $INCLUDE
files if they were referenced in the original network .dat file.
The “Error Listing” gives a list of those errors which would be detected within
SATNET if the current net node coding were input there, including errors to the
signal definitions (separately available within the signals sub-menu).
Current errors are also noted under the Print option where the numbers of
warnings, non-fatal errors etc originally detected at this node by SATNET are also
listed (but not the explicit messages); some of these may of course have been
corrected by the current editing. Note however that certain errors found in
SATNET may not be detected within the node graphics if they are only detected
as the result of the coding of two or more simulation junctions. For such errors the
.lpn listing from SATNET will need to be consulted.
Centroid connectors within the simulation network (as defined by the network
22222 records, 6.6, and distinct from those in the buffer network) may be altered
in seven ways:
(i) By modifying an existing zone record (i.e. one that already exists within the
22222 records);
(ii) By deleting an existing 22222 zone record;
(iii) By adding a new 22222 record (from a zone currently connected within the
buffer network);
(iv) By creating a new zone plus simulation centroid connectors;
(v) By replacing an existing centroid connector to a link with a “stub” connection
to a new dummy node created mid-link (11.9.4.1);
(vi) By screen editing;
(vii) By deleting any “duplicate” zones which have identical centroid connectors
and aggregating them into a single zone (where the remaining zone is the
zone with the lowest number).
In cases i) to iii) zones are neither created nor removed (this must be done using
PMAKE); thus with ii) the zone should presumably remain connected within the
buffer network while iii) is more a question of transferring an existing zone from
the buffer to the simulation network.
However invoking any of the options above will change the location of the centroid
connectors and hence the definition of the map network “topology”. Hence this
option is like PMAKE in respect to topology such that, once changes are made
here, certain restrictions on what further steps may be taken in P1X come into
force. Clearly iv) is also topological in that it creates both zones and connectors.
Under i) a listing of the current zone record appears on the plot as the “legend”
and is continually updated as changes are made. Under iii) once a new zone is
selected for addition a new blank record is created and option i) is automatically
entered. Those changes affect both the .dat file and the map network but not the
structure of either the assignment or simulation networks.
Thus if the existing network were coded as in the upper diagram with zone 5
connected to simulation link (3,5) option v) would create two new nodes, 6 and 7
in the lower diagram and connect the zone to zone 7. Here node 6 would be a 3-
arm priority junction with all three arms being coded as “major”; clearly further
editing of that node would be desirable.
The node numbers (i.e., “names”) allocated to the two new nodes would be (as in
the above example) n + 1 and n + 2 where n is currently the highest node number
used.
Stub creation may be applied either to individually selected zones or, with some
caution, to all internal simulation zones. It does not however apply to “external”
simulation zones.
Note that stub/spigot connectors are prime candidates for “network aggregation”
as described in Section 15.56.2.3.
Note that link properties which are “added” within SATURN, such as flows or the
speeds/times at those flows, cannot be edited at this stage, only the input
properties as defined under 6.6.
Two further procedures are also optionally provided under buffer link editing:
1) An option to delete all “second line” KNOBS data records; see 15.14.7
2) An option to correct all duplicated link records by deleting the second
occurrence of a repeated A,B record (if any exist).
Note that a supplementary “.xy” sub-file may also be an input file to P1X. Any
value read in over-writes the current value as read from the .ufs input file. See
11.4.1.
applied internally and would therefore be included on an output .ufs file; a “toggle”
is provided within the relevant P1X banner. This may be useful if, for example,
one wished to change, say, ISTOP before doing a continuation run of SATALL
(9.12.1).
As in Section 6.3 the variables are subdivided into Logical, Integer, Real and
Character.
An “examination” option is also provided to check for any current parameter
settings – or combinations of parameter settings – which are likely to create errors
of some description within SATNET. You are not, however, obliged to change
them.
♦ banned turns;
Secondly, however, if one of the buffer nodes A connected to the new node B is
already an external simulation node, e.g. if A has another neighbour C which is an
internal simulation node as sketched below, and A has no other connections.
Then leaving A as an external simulation node leads to fatal errors in the
assignment network (see 18.8). Under these circumstances A is automatically
converted into a priority node and either added to the 11111 data records or
suitably modified if it already exists there.
♦ offset optimisation,
♦ “import/export” of signal timings via .rgs files (i.e., from another network)
♦ direct updates of all stage times and offsets on the .dat file.
These are described in the following sub-sections and in 11.9.14 (.rgs files).
Note that the “stand-alone” procedure SIGOPT described in Section 15.31.6 uses
the P1X options as described below but in a “batch format”.
Once created a .rgs file may be read either by P1X and its signal settings used to
replace those in the current network or (post 11.3.11) by SATNET, in which case
the timings on the .rgs file replace those read in from the network .dat file (see
6.4.3.5). (In a sense a .rgs file is a bit like a $INCLUDE file in that it includes a
specific sub-set of network data.)
Thus, if you have, say, an AM and a PM network which differ only in terms of their
signal settings and you edit the link data in the AM network it is normal to wish to
transfer those same changes into the PM network but retaining the PM signal
timings. This can be accomplished by simply copying the “new” AM network file
into a “new” PM network file, processing the new PM network through SATNET
and then using the signal transplant option within P1X to copy over the signal
settings from the “old” PM network and to create a new output .dat file for the PM
network.
Or, more simply post release 11.3.11, the “new/revised” PM network .dat file as
copied from the AM file may contain the namelist parameter FILRGS which
specifies the old PM signal timings and those timings will be retained with the new
network structure.
Note that transplanting is only possible if the nodes have the same topology in
both networks. Thus if a node has been re-coded from a 3-arm signalised junction
into a 4-arm the old signal data will no longer be applicable and in this case the
changes will probably best be done “manually”.
The format of .rgs files has been changed in version 10.5 such that the cycle time,
in addition to the offset, is also stored per node. Older versions of .rgs files may
also be read by 10.5 but the converse is not true; i.e., a 10.5 .rgs file cannot be
read by the 10.4 version of P1X.
Windows edit box where it may be edited as desired and, if saved, replace the
existing data.
Note that the editing here is only applied to the .dat file and is NOT processed by
the program itself. For example, if you add an extra line within the 333 data
records to add an extra buffer link that link will not appear on the plot or be
accessible to buffer link editing. However, by rebuilding the .dat file into a .ufn file
(see 11.9.2) the changes will then be incorporated into the network as viewed on
the screen and indeed screen editing in this context is most usefully applied in
conjunction with rebuilding.
We may further note here a distinction between screen editing the .dat file as a
whole and screen editing individual lines (or collection of lines) as may generally
be done within the specific data editing routines described in Section 11.9.2 to
11.9.10. Thus if you screen edit, e.g., the subset of link counts these are read by
the program and included within its internal “memory”.
11.9.17 Editing “Data Fields” via ASCII Text Files and/or Internal Data Base Columns
Alternatively, the data may be created by a combination of methods (1) and (2)
whereby “raw” data is read into the internal data base and then manipulated
internally before it is added to the internal .dat file. See below for an example of
how to create turn saturation flows in this way.
The input data files may refer to either simulation nodes, links or turns and their
format must reflect the differences. Thus a node data file would be of the form “N
data1 data2 …” where N is a simulation node number, link data would be of the
form “A B data1 …” and turn data “A B C data …”. In all cases the “data” may
contain several different fields (e.g., link distance, link speed, etc. etc.) and the
user must then define each individual data item in the list.
Similarly node data must be transferred from the SATDB node data base
(11.10.5) but both link and turn data are accessed from the link data base.
♦ GAP – Minimum gap at priority junctions and/or roundabouts (In “real” units of
seconds, not integer tenths of seconds as per normal .dat files)
♦ Number of lanes
♦ Capacity Index (as stored on the second link record unlike the first five which
are all on the “main” link record)
For turns the available data fields include:
11.9.17.5 Discussion
Note that there are strong similarities within the use of X-Files to input data
directly under SATNET and indeed the same files might be used in either context;
see Section 6.13.
11.10.1 Introduction
The program SATDB brings together many elements of statistical analysis
packages, file editing systems, spread sheets and data bases in ways which are
particularly convenient for the specific task of analysing road networks.
Nowadays it may perhaps be best thought of as a poor man’s version of EXCEL!
The functions within SATDB may be accessed by either running SATDB as a self-
contained program or as a sub-program within P1X. The former is useful for
operations that do not require any graphical network plots or for jobs which are
being run in an essentially batch or off-line mode. When run within P1X there is a
certain overlap of functions; for example select link analysis can be done either
within P1X or SATDB, the main difference being the way in which the choices are
made.
At the heart of SATDB (and, equally, P1X) is the concept of an “internal data
base” which may be thought of as a matrix of rows and columns as illustrated
below:
(link) A B C D1 D2 D3 ...
1 a1 b1 d11 d12
2 a2 b2 c2 d21 d22
...
L
In the case of the “link” data base (as distinguished from the node data base, see
11.10.5) each row corresponds to an “assignment link”, the most basic level of
network definition within SATURN (see 5.5.1). These in turn may be sub-divided
into: simulation links (often referred to as “roads” to distinguish them from links
which correspond to the missing direction of a one-way road:), buffer links,
simulation turns and centroid connectors in both the buffer and simulation
networks. Thus “L”, the total number of rows, represents the total number of
assignment links.
The three “fixed” columns denoted A, B and C above identify links by node
numbers where C is only used in the case of a turn, or for a simulation centroid
connector where the zone is connected to a link. The letter C in front of a number
distinguishes a zone from a “real” node. (See 11.10.4 for more precise
definitions.)
The remaining data columns D1, D2, etc. are created by the user either by
reading directly from the input .uf* file(s) or by a wide range of alternative options.
For example data column D1 might represent link flows and D2, link times. Hence
entry d 11 would be the flow on link 1, d 12 the time on link 1 etc. A third data
column to represent, say, veh-hrs could be created as the product of columns 1
and 2.
By default the links are ordered such that all centroid connectors come first
followed by simulation links (plus turns) and buffer links. However the order may
be changed such that, for example if one data column contains flows the display is
ordered such that the link(s) with the maximum flow appear at the head of the
display.
Once created the data base may be viewed either interactively from the terminal
screen or “dumped” to an external file. In addition a number of very important
options are provided to select the lines that are displayed, for example you can
choose to look only at data from links whose V/C ratio exceeds 1.1, or only at
simulation turns, etc. etc.
Data is displayed either in an integer format - no decimal - or a “real” format - 2
figures after the decimal. In addition certain data values may be “missing” in
which case they are displayed by an “m”; for example a data field which refers,
say, to simulation turn saturation flows would yield missing values for centroid
connectors. If desired, lines which contain all missing values may be suppressed
in the listings; See 11.10.11.
The basic idea therefore is to give the user complete control over what data is
displayed and the manner in which it is displayed.
An extension to the link-based data described above, introduced in SATURN 9.4,
has been to add an alternative node-based data base in which each row
corresponds to a junction (including zones) and the data columns consist of node
data, for example average delay. In this case the first three “fixed” columns A, B
and C may be reduced to just one, the node or zone number. The subsequent
options available to the node data base closely parallel those available to links.
Section 11.10.5 gives further details.
The “Special Menu” offers a range of functions for inputting new data columns
from either uf* or other files, including:
♦ Link counts;
♦ Trees and/or forests for selected O-D pairs; (see also 11.8.3)
♦ All-or-nothing assignment;
Very similar procedures are available to create and manipulate new matrices
as described in 10.8.1.
Further options allow data to be “reversed” in the sense that the data for link
A-B appears for link B-A. This in turn allows, for example, the calculation of
two-way link flows from one-way.
9) EXTERNAL DIRECT INPUT AND/OR EDITING
Essentially an indirect method to “screen edit” the existing data. The user
“dumps” the entire internal data base to a scratch file, temporarily exits from
SATDB in order to use a local edit program to change the scratch file, and
then re-enters SATDB in order to re-read the file and replace the old data
base. (But see Option 15 below.)
10) STATISTICAL ANALYSIS
Two forms of analysis are available: either a univariate analysis of a single
data column (mean, standard deviation, etc) or a comparison of two columns
(mean difference, etc.) Output is normally numerical but graphical options are
available (e.g. scatter plots).
N.B. The statistical facilities within SATURN are essentially BASIC, e.g. to
calculate the mean difference between modelled flows and counts. If you
want to do more complex statistical operations such as analysis of variance
you are advised to use SATDB to gather together the data you require and
then dump them to an external file for transfer to SPSS or EXCEL for
example.
11) REMOVE ONE (OR ALL) DATA COLUMNS
To reduce the size of the data base: useful, for example, since only a
maximum of six columns may be printed at once.
12) PRINT THE FULL DATA BASE ON THE LINE PRINTER
Spools the full (selected) set of link data records to the LPD file with suitable
column headers and pagination.
13) DUMP THE FULL DATA BASE TO AN ASCII FILE (11.10.9)
Spools the full (selected) set of link data records to an ASCII file. These
outputs differ from those under 12 in that they do not contain column headers
or pagination. These files, edited if desired, may be read back into SATDB
under option 6.
14) BASIC HOUSEKEEPING OF DATA BASE HEADER RECORDS (See
11.10.10)
Each data column has an alpha-numeric title associated with it; these may be
modified as desired. Equally display formats, whether to print/plot or not etc.
may be modified.
15) DISPLAY/EDIT THE DATA BASE ON SCREEN (11.10.11)
This option enters an “edit-like” environment whereby the user may “browse”
through the internal data base with a “window” equal to the terminal screen
which may be moved up or down through the data base. The order of printing
may also be changed so that, for example, it is “sorted” according to one
column.
A “screen-edit” environment is also provided such that the values stored in
the data base may be altered on screen. To a large extent this renders option
9 above obsolete (except, for example, if multiple edits are to be performed).
16) CREATE A NEW SATURN UF FILE (See 11.10.12)
Having created new data columns within the internal data base you may
preserve this data in a new .ufs file.
17) SATURN GENERAL PARAMETERS MENU
This contains parameters such as the number of lines on the terminal screen
and which do not fit conveniently anywhere else.
18) ENTER THE NODE-BASED DATA BASE (11.10.5)
Or, if you are currently within the node data base, option 18 returns you to the
link data base.
5) One of the “create new data column” options allows you to “transfer” data
either from a link to its exit turns or from all turns to a link, e.g., to aggregate
turn data and to store it as link data. Thus one could aggregate primary
stops per turn to produce total primary stops per link, or divide link flow
between its turns. This opens up a range of operations which previously
could only be done by “programming”. See also 11.10.8.
6) SATDB provides the main mechanism within SATURN for the transfer of
network data to and from other suites of programs. Thus option 13 creates
selected data files in standard ASCII format which may be accessed by
other suites, while option 6 permits data input to SATURN. “Other suites”
could encompass not only the obvious example of other transport models
but also GIS models, pollutant dispersion models, etc. See also 11.10.9.
11.10.6.6 X, Y Co-ordinates
X, Y co-ordinates are read from the input network UF file as originally defined
under the 55555 data records input to SATNET (see 6.8). For all “pure” links in
the SATDB data base (i.e. excluding turns) four columns are created containing
the X co-ordinate of the A-node (first node), the Y co-ordinate of A followed by X
and Y for the B-node.
This option is very useful if one wishes to transfer SATURN data to a GIS system
such as ARC-INFO where the node numbers as used in SATURN have no
significance, but the coordinates do. In these cases the “real” data to be
transferred e.g. flows, is added to extra data columns and the whole data base is
dumped to an external ASCII file (11.10.9).
bus-only roads, etc, are stored as “packed” variables with 5 or 6 within the same
DA array. The packed values appear meaningless; these two options allow
individual data items to be “unpacked” and entered in individual DB columns.
The full list of items (per turn) which may be unpacked includes:
♦ Saturation flow with a negative sign to indicate bus-only (as used in data input
conventions; 6.4.4)
and per link:
♦ Distance
♦ A lane-mixing marker (0 or 1)
♦ Major/minor (1/0)
♦ Number of lanes to include a negative sign for bus-only lanes (as used in data
input conventions; 6.4.4)
♦ Merge indicators
DESTINATION TREES
Alternatively one may build a single tree into a destination zone, in which case the
tree will consist of the set of all shortest routes from any zone/node in the network
to the nominated destination zone. A destination tree is built only if an origin is not
specified. (If both are specified then the minimum cost O-D route should be the
same whether it is built out of the origin or into the destination; in this case the tree
is always built in an outbound sense.)
origin/buffer node being set equal to zero. (Or, in the case of destination-based
trees, the tree is built into B.)
If a simulation node N is selected the tree starts with zero cost at any of the
expanded assignment nodes at the upstream ends of the exit simulation links;
e.g., from nodes B 1 ,C 1 etc. in Figure 5.2. For a destination-based tree then the
starting (zero cost) points would be the downstream ends of the entry links, e.g.,
A1, B2, etc. in Figure 5.2.
If a link is chosen then, in effect, routes are allowed to begin/end their journeys at
the end of a specific link rather than at a specific assignment node. If an “origin
link” A-B is chosen then the tree is built starting at (possibly) two assignment
network nodes: the node at the downstream end of A-B and also (if the two-way
option has been selected) at the (downstream) assignment node on B-A. If A-B is
a “destination link” then the tree is built inwards to the upstream ends of A-B
and/or B-A. Note that if A-B is a buffer link the start/end assignment nodes are the
same in both cases (i.e., the nodes at either end of the link) but if A-B is simulation
then the precise starting nodes differ since they are defined as expanded
assignment nodes.
However the starting point(s) are defined, they are always nodes within the
assignment network so there is no difference in the tree-building algorithms used.
network and the total number of trips generated by the site. It avoids the need to
add a zone to the network and matrix and, because it assumes that the
development traffic will not significantly affect routing, avoids the need to re-
converge the network – a process that may take several hours given the size of
the Greater Manchester network. The system is designed to be used by those
with little or no modelling expertise to predict, given the creation of a new
“development” (e.g., shopping centre) within a network which will generate a
certain number of new trips to and from the site, where those trips will appear on
the network.
In the first call to SATDB, therefore, the site is used to define the origin for a
single tree build to determine the travel costs from the site to the other the zones
in the network. The procedure is then repeated with a “destination” tree in order to
create a column of costs to the new site. These two sets of costs are then
dumped to an external file which GMTU uses with a catchment area technique to
determine the origin and destination zones of the generated trips, which are then
saved as two columns of data representing the number of trips beginning and
ending in each zone.
In the second call to SATDB the matrix (or columns) of trips generated above is
input to the node database and the tree-build options repeated (twice – both to
and from the site), but this time with the loading option invoked. This will produce
two link data base columns containing the in-bound and out-bound link flows
which may then be added to together to produce the total generated trips per link.
All three flows (or just the totals) may now be dumped as Ascii files and read by
other DEVTRIPS procedures to carry out supplementary analysis of the flows.
Alternatively, the flows can be displayed graphically within P1X by saving the
information in the database as a new UFN/UFS.
as defined in 7.1.4 since all times/costs are post assignment. In either case of
course the assigned flows have been obtained from the assignment.
With multiple user classes the user may select only one of the user classes at a
time and therefore loop over all of them “manually”; there is not, as yet, an option
to automatically loop over all user classes and/or sum all user classes.
The “screen line” may be defined in one of two ways: (i) as the set of all currently
selected links (11.6.1) or (ii) as the set of links within a 77777 input segment of the
original network .dat file. If neither of these two options exist the screen line
option is not available.
An essential difference between the “chain” and “screen line” options is that the
chains use an AND test - the route must go through every node - while the screen
lines (under SATDB) use an OR test - only one crossing is sufficient.
Note that the interactive P1X version of Select Link Assignment allows alternative
options for defining screen lines (11.8.1.9) and alternatives to the simple OR test
above for dealing with multiple crossings (11.8.1.10).
With multiple user classes the analysis may be performed for one particular user
class, for each of the n user classes in turn (in which case n new data columns
and/or n new .ufm matrices are created) or for all user classes summed together
(i.e., one new data column, one .ufm matrix).
See also One Song to the Tune of Another in Section 11.10.7.7 which carries out
similar functions
11.10.8) which, however, are not added as an extra data base column but
included in the output file (see below).
As with SATRAP (11.10.7.4) the assignment may either be based on full o-d
routes or a “partial-route” assignment may be carried out.
between the two routes and hence the selected link will only be assigned 2.5 trips,
not the original 5.
Very similar procedures are available to create and manipulate new matrices as
described in 10.8.1; the syntax rules are the same in both cases.
In particular the “non-standard” function GEH which is used to compare link flows
(see 15.6.2) may be calculated directly by a statement such as:
GEH (X1, X2)
♦ A link(/turn) identifier
♦ Data values
Options specify how each part is formatted.
At the highest level the format choice is between full formatting into fixed columns
or “free” or “comma separated” CSV formats where each item in both a) and b)
appears separated by commas (best for transmission to spreadsheets such as
EXCEL).
Under CSV output turns must always be identified by three entries (A, B and C-
nodes) while, strictly speaking, links only require two entries, A and B. However,
since it is generally easier for whichever system is to read the data files to have a
fixed number of entries per record, an option is provided to include a third “blank”
entry for all links; in essence this means that an extra comma is inserted after the
B-node.
At a lower level the link identification may either follow the basic SATURN
conventions described in 11.10.4 and 11.18.2 or they may contain simply two
sequential node numbers as used internally within SATURN (useful for
transferring data to other suites which number nodes sequentially). Within the
data values integer variables appear without decimals, real variables have them.
The precise format of real variables is either as determined under “housekeeping”
(11.10.10) or they may all appear as high precision values using the FORTRAN E-
format.
Further options exist to include or not column headers and/or comment cards at
the head of the output file.
Unlike output to the screen there is effectively no limit to the “width” of each output
record so that up to 24 data columns (the internal limit) may be included in each
record.
The order of the data records is either sorted by link type as is the default within
SATURN (i.e., all centroid connectors either inbound or outbound appear first) or
in strict numerical order by assignment link numbers.
♦ its DA code;
♦ the “width” of the data, print outs (in terms of the number of characters);
♦ Quit (return)
♦ Order
♦ Parameters
The last two require some extra explanation.
“Order” enables the user to change the vertical order of the links in the printed
data base, for example you may ask for them to be printed in descending order in
terms of the entries in column 2. Thus ordering requires: (a) a column: (b)
whether descending or ascending and (c) whether based on actual or absolute
values.
Parameters allow the user the choices of whether or not to print lines based on
centroid connectors (or zones under the node data base) and/or lines which
contain all missing values.
♦ the DA code
The general principles of DA codes are explained in 15.21; a list of those already
in use in a particular file may be obtained within Option 4 (link data input) or a full
list of general codes is given in Appendix J. Generally one needs to choose a
non-standard and unused code but also one less than 5003. Recommended /
“reserved” values are in the range 3003 to 3293.
(N.B. the Capacity Index of a turn A-B-C is considered to be the Index of the entry
link A-B. All links without a Capacity Index are judged to have an Index 0.)
Disaggregated statistics by TfL boroughs are output if both BYGRUP = T and TFL
= T as set in the original network .dat file. Alternatively, if BYGRUP = T but TFL =
F and a “node group” file has been defined as FILN2G, then the disaggregation
will follow the aggregation rules set in FILN2G.
It is also possible with option 2 to disaggregate the outputs by any integer link
variable defined within the SATDB link data base. For example, to disaggregate
output statistics into “traffic boroughs” it is first necessary to create a link data
base column containing integer Traffic Borough numbers (e.g., by inputting an
ascii file of the form A B Ntb where link A-B is “in” Traffic Borough Ntb). Then
select the menu option for Disaggregation by Data Base Column and the
appropriate column.
Further notes: It is not always easy to specify a data base column as integer
since the default, e.g., from text file input, is to assume “real” (decimalised) values
with a DA code ending in 3. It may therefore be necessary to use Housekeeping
to change a column header from 3 into 4.
Furthermore the option to disaggregate by a data column is not available within
“pure” SATLOOK, only within P1X where the facilities within SATDB and
SATLOOK may both be invoked together.
Note as well that the precise order of the headline statistics also depends on the
permutations and combinations of network properties so that, for example, there is
no guarantee that total vehicle-kms always appears in column 8.
Please get in touch with DVV if any of the above creates problems.
of emissions per link, reliability per link etc. etc, Thus any data which may be set
up by the user within a SATDB data column – including data read from an external
text file – may be skimmed. Thus, for example, if the link data is fuel consumption
per vehicle per link then the skimmed matrix will give fuel consumption per vehicle
per OD pair as possibly required by an evaluation model.
The second controls the output mode: by default output is to a .ufm file but it is
also possible to output the o-d skimmed data as ASCII text files, specifically in one
of the three standard formats required by the UK evaluation program Tuba (as
used by the SATURN procedure SATTUBA, see 15.41). Within text files there are
additional sub-options, e.g., to control the number of decimal places used.
Note that the default values for, e.g., output mode, may be user-set by making
changes to the preferences file, satlook0.dat.
Forest skimming is used by a number of batch files, e.g., SKIMDIST (see 15.27.7)
to produce matrices of average OD distances, tolls, etc. etc.
See also 15.27.8 which describes an optional parameter NUSKIM introduced in
10.9.17 which uses more CPU-efficient algorithms.
One point of difference between count comparisons in SATLOOK and P1X is that
in SATLOOK it is possible to alternatively read the count data from an input text
(ASCII) file rather than relying only on the original 77777 records. At the moment
this is not yet possible within P1X.
Thus at the centre of the plot is a diagrammatic representation of the junction with
the lanes and turn markers on each arm displayed approximately to scale
assuming that each lane is 3.75 m and that the distance to the end of each arm as
shown is 40 m.
A flared lane, either nearside or offside, is represented by an extra lane at the stop
line which is terminated at a representative distance back – where
“representative” implies halfway for a flare length of two PCUs, increasing up to ¾
of the length of the arm as the flare tends to infinity or to ¼ as it tends to zero.
If, as in the illustration above, the junction is signalized each entry arm has a stop
line included; at priority junctions major arms do not have a stop line, minor do.
Permitted turning movements per lane are represented by arrows within the lane,
generally coloured green but with the convention that: (a) turns with a priority
marker X are in red, (b) filter turns (F) are orange and (c) merges (M) are light red.
Along each entry arm a “kerb line” is plotted in light grey while the background of
each “block” is filled in dark grey; both are optional as are the colours used.
In this example V/C ratios (as %) have been annotated for each turn with arrows
to indicate which turns are which.
The street names are obtained from an input GIS file as the “name” of the junction
(lower left, main plot). The junction number is given lower right.
Links which are blocking back, either into or out of the central node, are indicated
by red bars across the entry/exit link with the “space” in the centre of the bar
indicating how much of the capacity is left after blocking back has been applied.
For example, if a link is severely blocking back such that it has a blocking back
factor of 0.2 – an 80% reduction in capacity – 80% of the bar will be red with 20%
blank in the middle.
At the top left hand corner the three sub-boxes represent the three stages of the
signals with the green movements in each stage depicted by a green “tubie”
arrow. In each box the number in the lower left is the (coded) green time and in
the lower right, the inter-green. The signal offset is written upper left in the first
box.
The numbers given upper right in each stage box represent the “factored stage
times” which differ from the “coded” green times since - in this particular case - the
cycle time has been set to 60 seconds but the sum of all the input green and inter-
green times is 90 seconds. Hence the stage green times are factored down such
that they sum along with the (unfactored) inter-greens to 60 seconds.
The banner (which in this case has been generated by “A-Z” as opposed to the
more normal list of available options) briefly summarises the contents of the plot.
♦ Modify general display parameters, e.g. whether lane markings are included,
their width, etc.;
♦ Data displayed, e.g. turning volumes, general tables of link data; and its
“mode” (arrows, tubies, etc.);
♦ Print a summary table within the banner of the most important properties of
that node (“Information”);
♦ Print standard tables of node data such as appear in SATLOOK using either
a text or window-based mode, including “table 2” (flows and delays) as a
standard option plus the last table displayed as a further explicit menu option;
♦ To “print” the node description as it would appear within a network .dat file
input to SATNET; see 6.4;
♦ Shift to another node, numerically either the next node up or down, or use the
mouse to “point” to a node at the end of an arm;
* (N.B. Within P1X node editing when accessed via “node graphics” is largely experimental in that
the changes are not saved; if you wish to save these changes on either a .ufs or .dat file you must
enter via network editing; see 11.9.3).
♦ Add an “auxiliary network plot”, i.e., a small network plot showing the location
of the node being displayed; see 11.5.4.
♦ They may convert a buffer node as read from an input UFS file into a
simulation node.
Having edited one or more junction properties the node may be “re-simulated” and
the effect of the changes evaluated.
Note that in the “display mode” – as opposed to the “network editing mode”
(11.9.3) – any changes to node properties are not permanently stored in, e.g., a
network .dat file although they are stored temporarily. The menus, however, are
virtually identical.
The data to be edited may be selected in one of two basic “modes”. Thus,
originally, all choices were made through a series of banner menus such that if
one wanted to change, say, the distance on a particular link one would first select
“Link Data”, then nominate the link, then nominate distance and input the new
length.
Alternatively, post 10.9.20, the same operation may be affected by clicking a
“target box” at the end of an arm to select that link for editing and then clicking on
either Record 1 or Record 2 for that link in order to alter any of the standard basic
link properties such as distance, speed, number of lanes etc. using a standard
Windows “edit box”, or, equally, by clicking on a target box at the end of an exit
arm in order to edit turning properties such as saturation flow, lane choice etc. for
a particular turning movement..
♦ Network calibration, whereby the user can determine interactively the most
appropriate data values for an individual junction. For example the user might
wish to examine a change to the saturation flow for an individual turn or to its
lane structure, etc., etc. An alternative procedure to (1) would be to make the
changes in the basic network DAT file input to SATNET, re-run the entire set
of SATURN programs and examine the effect of the changes - a somewhat
cumbersome and potentially expensive operation. Using node editing effects
can be seen immediately. The difference between editing a single node and a
full SATURN run is that editing does not allow for any re-assignment in
response to the changes; the flows remain at their assigned values (although
it is also possible to investigate the impact of changing the flows on a
particular link or turn).
♦ User “education”, by which I mean that the user can experiment with, e.g.,
different values of gap acceptances to see the effect that changes to a
variable have on results.
♦ (i.e., those which are either totally inside or totally outside the cordon) and
removes them. If there are none no changes are made. The number of such
errors is reported in the banner.
♦ Further editing of the cordon, e.g. to add extra links to “plug” any holes.
♦ Produce a network .dat file for the cordoned area suitable for input to
SATNET (analogous to DONET in SATCH).
♦ Produce a .ufm trip matrix and/or print the matrix for the cordoned network
based on the routes used in the full network (analogous to DOMAT in
SATCH); see 11.13.6.
♦ Produce a file specifying the assigned route flows inside the cordoned
network as per SATPIG (see 12.6); see 11.13.7.
♦ Use the cordon to “select” either those links and/or nodes inside or outside for
further analysis with P1X; see 11.13.3.
♦ If there are “holes” in the cordon the “tree trace” helps to detect them by
tracing a path from “outside” to “inside”. Return via the edit option to correct
the cordon.
It is recommended that the cordon correction option be run (if necessary) prior to
any output files being produced as there may be spurious zones created at the
redundant links. Equally the options to create matrices, route files etc. will not
function if there are any errors in the cordon definition.
Note that if both a cordoned network file and a trip matrix are created it should be
feasible to do a full run of SATURN on the sub-network without any further
intermediate steps. However please note the cautionary advice in Section 12.1.4
that the logic of the cordoning procedures may not be 100% fool-proof with
respect to, e.g., bus route definitions, so that some manual editing and cross-
checking may be necessary.
Spines in P1X are closely related to the SPINE parameter in SATCH (see note 6
in 12.1.4) but extend the idea such that in P1X the spine may be defined by more
than 2 nodes so that the spine can “go around corners”.
♦ A list of all instances where MAXQCT and/or MAXDTP were applied (if any)
(8.4.6);
or, alternatively:
&PARAM
MODET = 1
&END
Supplementary Programs
♦ ‘cordon zones’ corresponding to exit and/or entry points about the cordoned
area
At the same time the program condenses the original network data file net.DAT so
that only those records corresponding to links ‘inside’ the cordon are retained in
full within the “cordon network”. Nodes at the outer end of cordon links are
converted into external nodes and, optionally (ADDXZ = T), the “cordon” zones
are added, both being within the appropriate data segments in the network file.
The cordoned network file - denoted ‘cordon.KP’ in 12.1 - may then be fed into the
network build program SATNET (either directly or, commonly, with additional
editing by the user plus a change of extension to .DAT), following which the
iterative simulation/assignment loop can be invoked using the cordoned trip matrix
‘cormat.UFM’.
Note that the (compulsory) control file, cordon.dat in Figure 12.1, is best prepared
initially using the mouse-based options in P1X in order to guarantee that the
cordon is ‘watertight’; see 11.13. However it may be necessary to ‘edit’ the
resulting file in order to select some of the other options described below. Indeed
most of the functions within SATCH may also be carried out within P1X; see
12.1.5.
Supplementary Programs
Supplementary Programs
Supplementary Programs
Notes:
a) The link can be either one-way or two-way; if two-way, it only needs to be
defined once.
b) Either node may be defined as the A-node, but the program will later redefine
the A-node as being the node which is ‘inside’ the cordon and the B-node as
being on the ‘outside’.
Supplementary Programs
c) The links are those that are ‘cut’ by the cordon as opposed to a continuous
set of links that are themselves the cordon.
d) If DUTCH is TRUE in the input SATURN UF file then the nodes are defined in
columns 1-10 and 11-20.
e) Centroid connectors are not valid cordon links and are ignored by the program
in defining the cordoned network.
f) Either simulation or buffer links are permitted as cordon links.
Supplementary Programs
Supplementary Programs
Under SPINE the parameters DOMAT and PRINT are automatically set to
TRUE since the only reason for using these options is to look at the trips, and
DONET is automatically set to FALSE since the network itself would be of
little interest.
8) If ADDXZ = T (its default) new cordon zones are created at the outer end of
each cordon link, for which there are various options for creating their zone
names.
(i) If the logical parameter AZONE is FALSE (its default) then their numbers
start at the first available multiple of 100 plus 1 above the highest zone
number in the full network. Thus if the full network had zones up to number
437 the cordon zones would be numbered 501, 502, ...
(ii) Alternatively if AZONE is TRUE then the cordon point zone numbers are
set equal to the outer cordon node number (the ‘B-node’ under note 5 above).
This option is very useful if you only wish to ‘look at’ the cordoned trip matrix,
in which case referring to a cordon point as, say, zone 21 if it was at node 21
is more informative than referring to it as zone 501. However this option will
create severe problems if you wish to cordon both a matrix and a network to
run together in SATURN since the network will assume that the zones are
sorted in order of increasing zone number in the trip matrix whereas under
AZONE they need not be; hence cordon trips may enter/leave at the ‘wrong’
points when assigned.
(iii) If SZONE = T (independent of the value of AZONE) then the cordoned
zones are numbered sequentially 1, 2, 3… with the internal zones numbered
first followed by the cordon point zones. Note that the order in which the
zones appear is the same as above; the only difference is in the zone names
used.
9) Having first identified all nodes which are inside the cordon, and if DONET is
TRUE, the program creates the cordoned network file by reading through the
network data records input on channel 8 and copies to the output data file on
channel 7:
(i) Any ‘general’ records, e.g. the &PARAM cards;
Supplementary Programs
(ii) Any records referring to internal nodes and/or links within data segments
11111, 22222 etc. etc.
Note the 88888 data records which define generalised costs etc. are copied
verbatim to the output data file since their contents are not node/link specific.
10) If the Namelist parameter INCLUD = T the new 11111 etc. data segments are
not included directly within the new data file but in a series of $INCLUDE files.
Thus if the main output file is control.KP then the $INCLUDE files will be
named control_11111.dat up to control_77777.dat (the 88888 data records
are all within control.KP) and the 11111 segment within control.KP will contain
the single record $INCLUDE control_11111.dat etc. etc.
11) The network reduction ‘logic’ is not 100% perfect. For example, if you cordon
a joint simulation/buffer network so as to totally exclude the simulation
network you will (probably) get output records which include: 11111
immediately followed by 99999 which would imply that simulation data is
included (the 11111 card) but then no data appears. SATNET might - with
some justification - take umbrage at this apparent thoughtlessness on your
part.
Users may therefore need to further edit the data file before input to SATNET.
In particular they will probably wish to change the network title (which is
copied verbatim by SATCH).
12) Trips which follow routes that criss-cross in and out of the cordoned network
will appear as multiple trips in the cordoned matrix. For example, the trips
from S to T below would be counted as both S-A (internal zone to cordon
point), B-C (cordon to cordon) and D-T (cordon to internal zone) in the
cordoned matrix.
13) All routes used in the assignment are re-created and traced and the trips
added to the trip matrix appropriately factored. Thus, if the assignment
assigns 12% of the entire trip matrix to the free-flow routes, only 12% of Tij
would be included along these routes in the cordoned matrix.
Supplementary Programs
Note that the original network file must have set the parameter SAVEIT to
.TRUE. so that a network UFC file would have been created so that SATCH
can re-create the trees built at each stage of the assignment.
If USESPI = T (and SPIDER = T for the original network) then the O-D routes
are re-created using a “hybrid network” formulation which uses both
aggregated and original network links where appropriate and which reduces
the (assignment only) CPU time by factors of around 10; see 15.56.7.2. At the
same time zero-flow spider links are eliminated from the path building and
tracing (15.56.5.3)
14) Note that the ascii control file specifying, inter alia, the links in the cordon may
be conveniently created using mouse based options within P1X and that it is
possible using this facility to check visually for ‘holes’ in the cordon. See
Section 11.13.
15) If the input network .dat file contains $INCLUDE records referencing other
files the data from these files will be included as necessary in the output
cordoned .dat file but all within the file, not as externally referenced
$INCLUDE files.
16) Any intra-zonal cells in the “full” trip matrix are automatically included as intra-
zonals in the “cordoned” trip matrix if the parameter INTRAS = T. Clearly this
only applies to internal zones; external zones at cordon points may, in
principle, have intra-zonals but only if, in the original full network, paths would
have entered and left by the same link (thereby, in effect, executing a U-turn).
17) Bus routes in the “full” network are truncated such that only that portion of the
route which is within the cordon is retained. If FOZZY = T (so that
interpolation between non-adjacent nodes is permitted) then only those nodes
that are included within the full network definitions are included within the
cordoned route definitions (with the exception that any entry and exit points at
cordons are automatically included).
Note, however, that if a route exits the cordoned network and later on re-enters
the cordon only the first segment of the route is included. (Unlike routes used by
the assigned trip matrix; see note 10 above.
♦ Produce an output cordon.dat network file as under the DONET option within
SATCH.
Supplementary Programs
Supplementary Programs
In addition, if NOMAD > 1, then no output network .dat file is created on the
assumption that the option is being used within SATCH_MC so that an output
network .dat file is only created once when SATCH is called with NOMAD = 1.
The main reason for adding this option is so that several runs of SATCH may run
simultaneously using different processors, one per user class, as controlled by the
batch file SATCH_MC. See 12.1.12 and 15.53.2.6. Since each run produces a
separate square matrix ctij1.ufm, ctij2.ufm, … these may be stacked into a single
MUC matrix at the end.
Supplementary Programs
summation of those entering the network. In this case the output matrix is “singly
constrained” to match the actual origin flows and convergence is not an issue.
Note, therefore, that if DEMAND = F and FURNES is “on” we would not
necessarily expect the destination total flows in the cordoned trip matrix to match
the actual flows at the cordon points (see Tables 1 and 2 in the .LPC file). There
are two reasons for this: (a) errors in retracing the original path flows and, (b),
ignoring any flow metering due to queues between the cordon origins and
destinations.
Supplementary Programs
Supplementary Programs
Supplementary Programs
Supplementary Programs
itself such that an updated and re-simulated .ufs file is produced directly; see
12.2.4.)
Hence the ‘final’ set of results is obtained after the repeated run of SATALL with
the optimised offsets.
The above sequence could be run using individual program “dos” commands as
illustrated by:
Satnet net
Satall net trips
Satoff net
Satsim net
Satall net trips RESTART
Where we note that the RESTART option is used in order that the second run of
SATALL takes its input from the file net.ufs rather than, as in the first run, a file
net.ufn. It may be usful to rename the output .ufa file each time SATOFF is run as,
say, net2.ufa etc.
To produce a network .dat file containing the updated signal offsets (since
SATOFF only produces updated .uf files) use the network edit options within P1X;
see 9.11.13.2. Equally one may wish to make use of an output .rgs file (see
9.11.14) to transfer the optimised offsets between networks.
It must be stressed that SATOFF and the associated operating rules are new and
that therefore some caution in its use is to be recommended. However
experience to date does suggest that it can produce stable and realistic offsets
and that therefore it can be used with some confidence to overcome the problem
of evaluating future and/or alternative networks within which the offsets are
indeterminate.
Supplementary Programs
If the offsets are being optimised within P1X it is possible to re-set MANOFF at
that point. The definition of MANOFF – and its fixed offset – is retained within the
various network .uf* files.
WARNING: Using MANOFF when there is a range of cycle times between
different signalised nodes is not recommended since nodes with different cycle
times cannot, as far as the modelling assumption within SATURN are concerned,
be properly co-ordinated; the concept of a relative offset in those circumstances is
not well defined. Therefore, post 10.9.22, only signalised nodes with the same
cycle time as MANOFF have their offsets adjusted.
Will (a) output a file net2.ufa from SATOFF rather than net1.ufa, and (b) run
SATSIM with net2.ufa as input and net2.ufs as output in order to automatically
carry out the necessary steps for either the inner or outer loops in Figure 12.2.
Supplementary Programs
users the same information is much more conveniently supplied by SATDB which
will not only give values for all items in an array such as the link volumes in 4503
but also lists it in a table along with the link A-node and B-node. On the other
hand DALOOK is more convenient to examine the contents of ‘non-link-based’
data arrays.
To run the program using standard procedures type:
DALOOK LIVNET
or
DALOOK I
Supplementary Programs
12.6.1 Introduction
SATPIG is a relatively ad hoc program designed to produce a file of origin-
destination route flows from a SATURN assignment, in particular to facilitate
interfaces with micro-simulation network analysis programs such as DRACULA
which require as input a file describing the number of ij trips per distinct route as
opposed to a trip matrix which gives total trips independent of route. It follows the
general principles for re-constructing routes using the SAVEIT option as described
in 15.23.
TRPFOR
The route flow data is embedded within the .kp/.trp files with one set of records
per O-D pair with positive flow ordered by increasing destination within increasing
origin. The format (and extension) used is determined by the LOGICAL
parameter TRPFOR such that:
RECORD 1:
Cols 1-10 Origin zone (name)
11-20 Destination zone (name)
21-25 User class number (NOMADS>1)
26-30 Route number 1, 2, 3 for the O-D pair
Supplementary Programs
RECORD(S) 2:
The series of nodes making up the route in format I10, i.e. up to eight nodes per
line, 10 columns each.
♦ TRPFOR = T each set of records is output using the .trp format conventions
such that:
RECORD 1:
Cols 1-10 Origin zone (name)
11-20 Destination zone (name)
21-25 User class number (NOMADS>1)
26-35 Route flow (pcu/hr) in format F10.2 (i.e. decimal in
columns 33)
36-45 Fractional route flow in format F10.6
RECORD(S) 2:
The series of nodes making up the route is in free format and enclosed within
leading and trailing % symbols. I.e., each node is separated from its neighbour by
a space with up to 80 characters per record; multiple records are used if
necessary.
CSVFOR
If .TRUE. the output data contains the same basic data entries as per TRPFOR =
T but with one variable-length record per path in CSV format.
N.B. CSVFOR and TRPFOR cannot both be T at the same time; if both are T then
TRPFOR takes precedence and CSVFOR = F.
NAMES
If .TRUE. all output files use node “names” as opposed to sequential numbers.
ALLOD
If .TRUE. all O-D pairs are included even if they have zero trips in the trip matrix
cell, in which case the FPHMIN criterion below can never be satisfied. However if
their nominal fraction of use exceeds PODMIN (see below) they are included.
If none of the nominal routes satisfy PODMIN and/or FPHMIN the “best” single
route – as defined by having the maximum usage - is always included unless
PODMIN is negative (see below).
Supplementary Programs
UTURNS
If .TRUE. only paths which pass through the same node twice (e.g. a U-turn) are
recorded on the output file.
FPHMIN
Any route flows less than FPHMIN are ignored in the .lpg and/or .trp outputs.
PODMIN
Any routes with fractional flow greater than PODMIN of the total flow are included
whether or not the FPHMIN criterion is satisfied or not. Thus the criterion for
inclusion is an either/or rule of both absolute and fractional flows.
Note. However, that if PODMIN is set negative then it is never invoked and
whether or not a path is included in the output file is determined purely by the
ALLOD and FPHMIN rules.
NOMAD
If positive NOMAD specifies the particular user class to be analysed for a network
with multiple user classes; if zero all user classes will be analysed.
Notes:
1) Under method (i) the origin and destination zone names are included as the
first and last entries in the route names under record 2, but under (ii) only the
“real” nodes are entered under record 2.
2) If there is only one route used per ij pair then the route number on record 1 is
simply 1; otherwise it increases by 1 each set.
3) Route flow records are terminated by a blank line.
4) Multiple user classes are sorted such that all O-D records for class 1 come
first (with a 1 in column 25), followed by all class 2 records (2 in column 25),
etc. etc.
The program is still very basic; forward requests for extra facilities to DVV.
12.6.4 The Role of the Trip Matrix in SATPIG: Restricted O-D Pairs
We note that the input trip matrix used within SATPIG need not necessarily be the
same trip matrix as that used during the assignment, although logically and
generally speaking it should be. Its role is essentially to define the total number of
trips to be divided between the various paths identified for each O-D pair.
However it has a possible secondary use which is to restrict the O-D pairs
analysed in that if an O-D cell in the trip matrix is zero – or if an entire row is zero
– then that O-D pair/origin is not analysed. Thus if you are only interested in
generating a representative set of paths rather than the complete set this may be
done by factoring the non-required areas of the trip matrix to zeros prior to running
SATPIG.
Supplementary Programs
12.7.1 Introduction
SATDYSK skims minimum origin-destination times for a network run with multiple
time periods (e.g. using SATTPX and SATSUMA, see Section 17) with the
important property that the skims are taken at fixed intervals of either precise
arrival or departure time throughout the full time period modelled and the “on-path”
link travel times are calculated dynamically. It differs in several respects from the
skimming techniques available through SATCOST (15.27.4) which in turn uses
SATLOOK.
Thus if a network is modelled by four 30 minute time slices from 8:00 to 10:00
SATDYSK could be used to calculate the minimum travel times for vehicles
departing from their origins at, e.g. 8:00, 8:10, 8:20…., 9:50, 10:00. All 13 skims
are output to one matrix of dimension 13n Z rows x n Z columns (where n Z is the
number of zones). The 10 minute interval is user-set. By contrast SATCOST
could be used to skim four separate matrices of “representative” OD time for the
four separate time slices.
Another point of difference between the time skims and those in SATCOST is that
in SATDYSK the skims may be calculated backwards from the destination. Thus
the 8:50 O-D time skim could reflect the time taken for trips arriving at their
destination D at exactly 8:50, as opposed to a forward time skim when 8:50
would represent the exact departure time from the origin O. (At the programming
level this has necessitated a new set of tree building routines which build
“backwards” as opposed to the traditional SATURN method of building trees
“forward” from the origin.)
A third difference is that, whether origin - or destination-based, the link times used
in the tree building are instantaneous dynamic times so that the travel time on
link a is a continuous function of the “clock time”. Thus, if building a set of
shortest paths (tree) for trips arriving at D at 8:50 and the tree algorithm has
reached a link which is 7 minutes “back” from the destination than the time
assumed on that link would be the time at 8:43 exactly, as opposed to the
normally modelled average link time in the 8:30 to 9:00 time slice.
One application of the program is to enable the derivatives of O-D travel times to
be estimated with respect to either arrival or departure times by taking the
differences in skimmed times between two successive times and to use that as
part of a peak-spreading model.
The “skims” are based on calculating minimum time routes independent of
whether or not the original assignment model was based on pure time or
generalised cost so the paths found are not necessarily those used by the original
model. In effect the original model is simply being used to generate a set of
dynamic link times and/or delays by clock time.
Supplementary Programs
Supplementary Programs
Thus, in the case of origin or departure time based skims, the first row in the
matrix contains the times from origin 1 to all destinations (columns) departing at
the earliest time skimmed, row 2 will contain the times from origin 1 of the second
departure time, row M+1 contains the earliest departure times from origin 2, etc,
etc.
Note, somewhat perversely and it probably should be changed, in the arrival-
based or backwards mode each row of the output matrix represents skimmed
times for a destination so that e.g., the Jth element in such a row would be the
time FROM origin J to that destination. In the other mode the row defines an
origin and the column a destination.
Note that the values of TOM and NTOM should presumably reflect the total length
of the time period modelled. Thus the defaults cover a range of departure times of
6000 seconds, 1 hour and 40 minutes. If the model were of three 30-minute time
slices then the last two skims would probably be redundant; if the model covered
2 hours then the range would probably need to be extended.
followed by:
Supplementary Programs
SATDYSK net
Supplementary Programs
Modelled flows may, in turn, be directly compared with (for the base year, at least)
observed flows obtained from, for example, automatic vehicle detectors.
As also noted in Section 2.1, there are three general sources of errors – trip
matrix, network coding and route finding - of which errors in the trip matrix are
probably the single biggest source of error. What the process known as ME2
attempts to do therefore is, by essentially working backwards through Figure 13.1,
to establish a trip matrix which, when assigned, will give the desired answer, i.e.,
will reproduce the observed flows.
Thus we seek a trip matrix T ij which satisfies, for each of the observed counts, the
following condition:
Equation 13.1
∑T P ij
ij ija = Vaobs
where:
T ij is the output matrix;
P ija is the fraction of trips from i to j using link a
V a obs is the observed flow (in pcu/hr) on counted link a
We may think of Equation 13.1 as a “constraint” on the trip matrix arising from the
observed flow on link a.
In addition we would like a trip matrix which is as “near” as possible (or as “least
different” as possible) from any existing estimate of the trip matrix. In more
mathematical terms we seek to minimize some “distance measure” │T – t│
between the updated trip matrix T and the “prior” trip matrix t = t ij . The entropy
maximising model differs from other forms of matrix-estimation models in the way
that it defines its measure of distance and, as a consequence, the resultant
equations for T.
Thus the ME2 “distance” definition used to update an existing trip matrix may be
written as:
Equation 13.2
D (T , t )
= ∑ (T
ij
ij log (Tij / tij ) − Tij + tij )
And the resulting equation giving the “maximum entropy” solution may be written:
Equation 13.3
Tij = tij ∏ X aPija
a
where:
t ij is the prior matrix,
X a is the ‘balancing factor’ associated with counted link a,
Π is the multiplicative equivalent to Σ for summations
SATME2 uses an iterative procedure to find a set of balancing factors X a for each
counted link to ensure that the assigned flows match the counts within certain
user-defined limits (See 13.1.8)
The procedure is in fact very similar to that used in the well-established Furness
matrix-balancing procedure with the exception that Furness constrains the flows
into or out of (all) zones as opposed to the flows on selected links. In fact zonal
constraints are just a special case of link constraints and as such may be input
directly to SATME2 (See 13.1.5 and13.3.2).
An alternative “distance” measure could be the well-known “sum of squares”:
Equation 13.4
D (=
T,t) ∑ (T − tij )
2
ij
ij
And indeed a large number of alternative matrix estimation models have been
constructed using this definition.
Thus SATME2 requires a “PIJA” file, each element of which represents the
proportion (P) of trips between a particular origin-destination pair (IJ) which uses
the counted link (A). The PIJA data are obtained through the program SATPIJA
following a SATURN assignment using the SAVEIT option (15.23).
More precisely SATPIJA analyses the output .ufs and .ufc/.ufo (see 13.3.14) files
from a full run of SATURN in order to produce a ‘.ufp’ file which contains the “PIJA
factors”. This information is then fed into SATME2, along with the prior trip matrix,
in order to produce an updated trip matrix.
Both SATPIJA and SATME2 require control data files as described in Section
13.2 below. The count data may either be included in the SATPIJA file or taken
from the 77777 data segment in the network .dat file originally input to SATNET
(see 13.2.1)
Note that, in common with all definitions of “flow” within SATURN (see 15.17), the
counts used in SATME2 must be defined in terms of pcus/hr (or, strictly speaking,
in the same units as all the other flows; see 15.17).
Several complications and/or extensions are introduced into the definition of the
constraint counts in SATME2 due to the level of sophistication inherent in
SATURN assignments.
by SATME2 as demand flows and any corrections due to flow metering are
ignored.
Alternatively, if counts are “corrected” using the 11111 data segment within the
SATME2 control file (see 13.2.2), then it is assumed that the input flow is the
correct demand flow which will not therefore be factored up as it would be if it
were processed within SATPIJA. Some care may be necessary here if that is not
what you intend.
N.B. Table 1 within the SATME2 .LPM file prints both the original (actual flow)
counts plus the target or demand version of the flows.
Tij = Ai B j tij
where the row and/or column balancing factors are chosen such that
∑Ti
ij = Dj
∑T
j
ij = Oi
In the case of SATME2 the row and column sums O i and D j are user input as
zonal constraints.
Under Furness the balancing factors Ai and Bj are calculated using a “bi-
proportional” technique and they play a highly similar role to the Xa factors in ME2
(which are calculated by a “multi-proportional” technique). Note, however, that the
zonal balancing factors are not explicitly raised to a power of Pija as in Figure
13.3. (Although, since the flows to or from a zone are 100% to or from that zone
and no other, their effective Pija factors are 1 and we could think of the Ai and Bj
factors as being implicitly raised to a power of 1.)
In principle it would be possible to carry out a full Furness procedure using
SATME2 by inputting the complete set of origin and destination flows (and no link
counts) although this would not be particularly efficient. The equivalent techniques
available in MX (10.7) are preferable.
Post release 10.9 a table (11.c) is included in the output .LPM file from SATME2
listing all origin / destination zonal totals both before and after ME2 is applied,
their changes and (if appropriate) their constrained totals.
♦ Greater than/less than constraints, in which case the factor X a remains at 1.0
(no effect on the trip matrix) unless the constraint is violated, in which case
the constraint is treated as an equality and balanced exactly.
Note that with “less than” constraints X a factors can only be less than or equal 1
(in order to reduce the flow through that link), while with “greater than” constraints
they must exceed 1.
All counts input on the .ufp file are assumed to be of the same “constraint type” as
specified by the SATME2 Namelist parameter LEG (which stands for Less
than/Equal/Greater than) but it is possible to have mixed constraints by using the
“change of mind” input records described below.
The same concept of constraint types applies equally to zone origin and/or
destination constraints as input under the 22222/33333 data records in the
SATME2 control file (13.2.2).
There is, however, one major distinction between GT/LT constraints on zones and
on links which is that, with zones, it is possible to have both a LT and GT
constraint on the same zone O or D, in which case the constraints specify a range
of values. In this case at most one of the two constraints will be “active” depending
on whether all other constraints take the zone total above or below the appropriate
limit. Alternatively neither can be active if the total is otherwise within range.
Note that in order to set a zonal O/D range it is necessary to input two records
under 22222/33333: one with the LT constraint and the other with the GT
constraint. Obvious error checks are carried out to determine if the LT value is
indeed greater than the GT value.
Note that the definition of less than etc. constraints is only made on entry to
SATME2; the Pija calculations carried out by SATPIJA are the same no matter
what form of analysis is eventually carried out in SATME2.
This option may help to correct errors and/or inconsistencies introduced by the
assignment. It may also be used to satisfy the total flows measured crossing a
screen line or cordon.
An example of a potential inconsistency between the assignment and the counts
is illustrated below where there are two alternative (parallel) routes between
nodes A and B via K and L. Suppose that the counted flows on AK and AL are
2,000 and 1,000 respectively but that the assignment (for whatever reason) will
always assign more flow via L than via K. In this case it will be impossible for ME2
to find a trip matrix which can simultaneously satisfy both counts and assigned
proportions. However if the total flow between A and B is constrained to equal
3,000 then the precise split of trips between K and L is no longer a problem.
Note that the root of the inconsistency could be either the assignment or the
counts themselves, combining the counts dodges the issue. An alternative
solution would be to remove the counts altogether.
K
O ---------------A B------------ D
L
To use this option the individual links which are to be combined into a single
constraint are listed within a single set of 66666 records on the input SATME2
control file; see 13.2.2 (No specific advance action is required in SATPIJA except
that each individual link which is to become a member of a combined constraint
with its count must be defined as an input to SATPIJA.) The count which is to be
satisfied is the sum of all the individual counts while the PIJA factors are assumed
to be the sum of the individual PIJA factors.
Note that once an individual link count has been included within a combined count
it is no longer applied as an individual constraint, only as part of the combined
constraint.
absolute certainty what a complicated system such as ME2 will do). For example,
if two links A,B and B,C in series both have counts of 1,000 and both are
(inadvertently) combined together then their combined screen line count constraint
will be 2,000. However if a particular OD pair has Pija factors of 1.0 on both then
the summed Pija factor of 2.0 will be reduced to 1.0. Since the “correct” solution in
this case should be a Pija factor of 1.0 and a count of 1,000 ME2 will therefore
produce extra trips by trying to create 2,000 trips on A to C, not 1,000.
Post 11.2.5 a summation is kept of all Tij * (Pija – 1) to quantify the extent of the
problem due to “capped” Pija factors. The information is printed to the .LPM files.
If the capped flows are less than, say, 1% of the total target flows then the
problem may not be serious in the overall ME2 procedures but if they exceed, say,
10% then the problem becomes serious.
We should also note that double/multiple crossings may still occur even when the
summed Pija factors are less than 1.0. For example, if two links are directly in
series and they are used by an OD pair with a Pija factor of 0.4 (i.e., 40% of the
trips from that OD pair use each of the two links in question) then their combined
Pija factor would be 0.8, no capping would take place and no error messages
would be generated. Hence the test on Pija > 1 is not guaranteed to detect all
multiple crossings, only the worst cases. If in doubt use the SLA screen line
crossing analysis in P1X (11.8.1.10) to test for multiple crossings.
Figure 13.3 – (A) A single o-d path with three count sites
(B) A single o-d pair with two o-d paths and 3 count sites
If at count 1 the original modelled flow (assigned using t ij ) was less than the
observed flow W 1 then the balancing factor X 1 would (all other things being equal)
be greater than 1 in order to increase all the o-d pairs assigned to that link (in
either case). Similarly if count 2 were over-assigned W 2 would be less than 1 in
order to reduce the number of trips through it.
It is easy to see that the balancing factors are not unique. For example in Figure
13.3 (a), if all three counts were under-assigned by 50% and OD was the only trip
pair through all three count sites then setting one of the three W’s to 2.0 and the
other two to 1.0 would correctly double the flow on all three counts. Alternatively
setting all three to the cube root of 2 would have exactly the same effect.
As a general rule one would expect that counts which are under-assigned initially
would have a balancing factor greater than 1 and, conversely, if under-assigned
X a less than 1. Equally, the greater the difference in the original assigned and
modelled flows, the greater the difference of X a from 1.0.
However, given the interaction and non-uniqueness of the balancing factors noted
above, such simple rules do not always apply. Thus if X 1 >>1.0 in either Figure
13.3 (a) or (b) to correct for a large under-assignment at W 1 it may be that, if W 2
were only marginally under-assigned, then X 2 < 1.0 in order to counter-act the
large increases in path flows caused by X 1 .
We also note briefly at this point, and discuss it more fully under 13.3.1, that the
balancing factors X a are restricted to lie in the range (1/XAMAX, XAMAX) where
XAMAX is a user-set parameter. These restrictions are in place in order to
prevent the matrix from being “over-distorted” by ME2 trying to satisfy all counts
when, for many possible reasons, this is not possible. A value of X a equal to either
the minimum or maximum values is a strong indication that there may be
something funny going on at that particular count site.
For analysis purposes it is sometimes beneficial to transform the X a factors into
the alternative form X a ’ where:
X a′ =
X a − 1.0 X a > 1.0
− (1.0 / X a − 1.0 )
X a′ = X a < 1.0
Thus X a = 1 (no changes to the matrix elements using that counts ite) transforms
to X a ’ = 0, values of X a > 1 are positive and values of X a < 1 become negative.
The transformed values are particularly useful when being displayed in P1X (see
11.8.5) in that those values that increase the trip matrix are positive and in one
colour while those that decrease the trip matrix are negative and in a different
colour.
likely after six loops or whether people simply get fed up after six loops is hard to
judge.)
The iterative procedure commences with a full run of SATURN using an old trip
matrix. (If no such matrix is available then one should either create a purely
artificial trip matrix with ‘roughly’ correct elements in each cell or, preferably,
‘Furness’ a matrix using MX from either known or estimated origin and destination
totals). Subsequent runs of SATURN will use the latest updated trip matrix from
SATME2; considerable computer time may be used by taking advantage of the re-
start facility described in Section 15.4.
As noted earlier there is a potential problem within matrix estimation of finding a
solution whereby the trip matrix estimated is based on PIJA factors which in turn
are the same as those produced by assigning that trip matrix. This is a well-
known theoretical problem for which no (computationally feasible) guaranteed
solutions are available; the iterative loops shown Figure 13.2 are only heuristic
procedures and cannot be guaranteed to converge.
Highly congested networks, where route choice is very sensitive to the number of
trips to be assigned, generally present the most severe problems. One possible
solution method here may be to “soften” the changes in the trip matrix by
averaging successive trip matrices, e.g. by using a 1/n rule as in assignment (see
7.2.2) but applied to trip matrices, not flows.
The problem may also be associated with a small number of link counts, possibly
those that are inconsistent between themselves. Identifying and removing them
may improve the situation (see 13.3.4).
difference between the prior totals and the counted totals is greater than
10%/20%/50% the .lpm file will contain a Warning/Serious Warning/Extremely
Serious Warning message.
For example, if Table 5a gives a ratio of 2.0 of target counts to input modelled
flows the most obvious course of action is to simply factor your prior matrix by a
factor of 2.0. On the other hand it might be that all your counts are monitoring
flows in a north-south direction, in which case it might be more appropriate to
factor only north-south o-d pairs (hint: use sectors in MX) by 2.0 rather than the
full matrix. (This depends on what you “think” north-south counts are telling you
about east-west movements; it might be the case that previous east-west trips
have now “migrated” to north-south trips and that the east-west cells should
actually be factored down rather than up.).
Equally if you have either a complete or partial set of origin/destination counts you
may wish to consider using a Furness factoring procedure (see 10.7) to balance
the o-d counts prior to running SATME2 (see 13.1.5). Note that with a partial set
of O-D counts it will be necessary to expand this to a full set by, e.g.,
guestimating, the missing totals prior to Furnessing. As long as the estimated O-D
totals are a relatively small component of the total or may be estimated with some
reliability, then this approach has a lot to recommend it.
Equally with multiple user classes (See 13.4) where more than one class may
share a single “level” of the “stacked” trip matrix then the expectation is that the
sum of the individual shares (i.e., the sum of the factors in columns 11-15 in the
8888 network data records, see 6.11) should equal 1, otherwise a form of GONZO
factor has been introduced. Again, warnings are printed within SATPIJA if this
happens.
N.B. Similar problems occur with SATCH; see Section 12.1.7.
N.B. Counts may refer to either simulation or buffer links, but to turns ONLY in the
simulation network. Centroid connectors are not allowed, nor are repeated entries
with the same A-B-C. In addition there is no way to split the counts into separate
sub-sets as with multiple 77777 records in network data files.
N.B. Alternatively you may use a $INCLUDE record to define an external data file.
See note 5 below.
END OF THE INPUT DATA
NOTES
1) The links or turns to be analysed within SATPIJA (and, by implication, within
SATME2) may be either: (a) those already stored on the input .ufs file (as
originally input to SATNET as 77777 data; see 6.10) if UFFLOW = T; or (b) an
entirely new set of links/turns included in the control file as Records 2 above if
UFFLOW = F.
2) If UFFLOW = T, in general, all input links/turns read from the .ufs file are used.
However, if they were input in SATNET as multiple sets of 77777 records
(see notes 1, 2 and 15 in 6.10), then you may select a sub-set of those sets by
using the SATPIJA subscripted logical parameters SET777. For example, if
you had two sets of 77777 data records then setting SET777(1) = F and
SET777(2) = T would mean that SATPIJA would only analyse those
links/turns in set 2.
3) If you had a large number of 77777 count sets of which only one or two are to
be used then the simplest method is to first include a namelist definition
‘SET777 = .FALSE.’ which will “exclude” all 77777 count sets and then
explicitly define, e.g., SET777(29) = T etc. if set 29 is to be included.
4) If UFFLOW = T and more than 1 count field was used in the original .7777
data sets (MCCS > 1; see 6.10), then the Namelist parameter MCC above
selects the relevant count field.
(*) The program terminates if either ITERMX is reached OR all estimated and
observed link flows are either, in relative terms, within EPSILN of one another or
the upper/lower limits on their balancing factor limits are reached.
Additional data input follows the same general principle as used in the network
.dat files input to SATNET; i.e., each section is preceded by a 11111, 22222, etc.
record and terminated by a 99999 record. Data sections must be in increasing
numerical order and not all sections need to be included - indeed no additional
data need be included at all apart from records 7 and 8, the new matrix title.
The set of records must be terminated by a final 99999 record - and note that if no
data is included then a single 99999 record is still required.
RECORD 1.1
Cols. 1-5 11111 start of the change of mind records
RECORD 1.2
One record for each link/turn count to be modified with format (if DUTCH = F):
Cols. 1 – 5 The A node
Cols. 6 – 10 The B node
Cols. 11 – 15 The C node
Cols. 17 The (new) constraint type:
L – Less than
E – Equality
G - Greater than
Or
X - Exclude from the calculations
Cols 18-25 The (modified demand) flow in pcus/hr
or, if DUTCH = T, 10 columns per node with constraint in col 32 and flow in cols
33-40.
The program will search the list of input counts on the .UFP file to find that one
with identical A- B- and C-node values and replace the constraint type and/or flow
with that specified. If the constraint type (col. 17) or the flow is left blank then no
change is made. An unmatched set of nodes results in a non-fatal error.
Note that the flow input is assumed to be the target demand flow, not an actual
flow as would be input into SATPIJA and potentially factored up to reflect flow
metering from queued junctions upstream. See 13.1.4.2.
The X or “exclusion” option is introduced so that if you find that one or more
counts are giving problems then they are removed without the potentially time-
consuming necessity of deriving a new set of PIJA factors.
Note that the definition of A, B and C are identical to that used as input to
SATPIJA (13.2.1 above) but the flow here occupies 8 columns not 5. Note
equally that if DUTCH = T a different format applies and each node occupies 10
columns, not 5; see 15.20).
RECORD 1.3
Cols 1- 5 99999 End of the change of mind records
One record for each link/turn count to be modified with format:
RECORD 2.1
Cols 1- 5 22222 Start of the origin constraints
RECORD(S) 2.2
One record for each origin sum to be constrained with format:
Cols 1- 5 The zone name (N.B. NOT its sequential number)
Cols 7 The constraint type:
L - Less than
E – Equality
G - Greater than
Cols 8 – 15 The desired origin total flow in pcus/hr (as an integer)
If column 7 is left blank the default constraint type as specified by
the parameter LEG is assumed.
Note that if a range of zonal origin values is required (13.1.7) two
records are required with the same zone name in cols. 1-5.
RECORD 2.3
Cols 1- 5 99999 End of the change of origin constraints
RECORD 3.1
Cols 1- 5 33333 start of the destination constraints
RECORD(S) 3.2
One record for each destination sum to be constrained with format:
Cols 1- 5 The zone name (N.B. NOT its sequential number)
Cols 7 The constraint type:
L - Less than
E – Equality
G - Greater than
Cols 8 - 15 The desired destination total flow in pcus/hr (as an integer)
(N.B. Destination flows must be factored up by the user into
“demand” flows as opposed to “observed” flows. See 13.3.2).
If column 7 is left blank the default constraint type as specified by
the parameter LEG is assumed.
RECORD 3.3
Cols 1- 5 99999 End of the change of destination constraints
Note that a second S is not necessary and, also, if the second sector is left blank
(or zero) it is assumed equal to the first.
RECORD 4.1
Cols 1- 5 44444 start of the frozen zone records
RECORD(S) 4.2
Cols 1- 5 Start zone name (not sequential)
Cols 6-10 Finish zone of block (greater than or equal to the start zone)
Record type 4.2 is repeated for each ‘frozen’ block of zones.
RECORD 4.3
Cols 1- 5 99999 End of the frozen zone records
RECORD 5.1
Cols 1- 5 55555 start of the frozen cell records
RECORD(S) 5.2
Cols 1- 5 Start origin zone name (/sector if column 1 = S)
Cols 6-10 Finish origin zone name (> = start origin)
Cols 11-15 Number of destination zone pairs to follow
Cols 16-20 Start destination zone name (block 1)
Cols 21-25 Finish destination zone name (block 1)
Cols 26-30 Start destination zone name (block 2)
Cols 31-35 Finish destination zone (block 2)
etc. for further destination zone name pairs
Thus the number of entries to be read following column 15 will be twice the
number that appears in columns 11-15 up to a maximum of 12 per line.
RECORD 5.3
Cols 1- 5 99999 End of the frozen cell records
RECORD 6.1
Cols 1- 5 66666 start of a set of combined constraints (with any “title” following
66666 being displayed within the .LPM file)
RECORD(S) 6.2
Cols 1- 5 The A-node (In columns 1-10 etc. etc. under DUTCH = T or free
format if FREE6 = T))
Cols 6-10 The B-node
Cols 11-15 The C-node (if a turn)
RECORD 6.3
Cols 1- 5 99999 End of a set of combined constraints
In addition certain other options which may be invoked within SATME2 are
documented.
considerably reduce the size of the UFP file if there are a large number of such
cells.
XAMAX - In general one would expect the link balancing factors (X a in equation
(13.1)) in the ‘update’ mode (PRIOR = T) to be somewhere near 1, and a
balancing factor very much different indicates that the corresponding count is very
different from what the original matrix would have given. This may therefore imply
that the count itself is unreliable. By setting maximum and minimum values on the
balancing factors we therefore limit the effect that any one count can have. On
the other hand with PRIOR = F one should probably allow larger values of XAMAX
since in this case we have much less reason to suspect that the initial ‘flat’ matrix
should give reasonable link flows.
It should also be borne in mind, see equation (13.1), that an individual ij pair may
use several counted links so that the maximum change possible in T ij could be
XAMAX to the power n, where n is the number of counted links, each at a factor
XAMAX. There is a case therefore for reducing XAMAX considerably, e.g., to a
value of 2.0 or even less, if you have a large number of counts that could be used
multiple times.
One useful strategy might be to start off with the default value of XAMAX but, if it
seems appropriate, to reduce it for later runs. There is a case for at least seeing
initially what size of X a factors are required and how many counts require the
maximum/minimum before enforcing a stricter criterion.
ODXMAX – By default (ODXMAX = T) the max/min factors set by XAMAX apply
to both link counts and o-d counts (if any). Setting ODXMAX = F effectively “de-
couples” o-d counts from link counts such that the o-d counts will always be
satisfied independent of the size of factor required to do so. Thus if the o-d counts
are a long way away from the equivalent sums in the prior trip matrix then an
exact balance will be achieved.
However, it should be noted, that if you do need to set ODXMAX = F then it
almost certainly means that you should have paid more attention to setting
realistic o-d totals in the input prior matrix yourself rather than passing the buck to
SATME2. Alternatively, it may be that the o-d counts and the link counts are
mutually incompatible and that the program is having difficulties in balancing both.
In either case you need to check your inputs carefully.
SUBFIX - In general this should be TRUE on the assumption that you wish to
update a full trip matrix and that the counts include both assigned and fixed
components. Exceptions to this rule include (a) updating a sub-matrix under MUC
assignment (see 13.4.8 below), in which case it should almost certainly be FALSE
on the assumption that the counts are specifically for one class of vehicles; and
(b) when there are no fixed flows, in which case the value of SUBFIX does not
matter.
SUBPQ – This is a special case of SUBFIX where only the PASSQ element of
the fixed flows is subtracted from the counts. Since the PASSQ flows arise from
queued elements of the trip matrix from the previous time period, not the current
trip matrix which is being updated from counts, they should not be included in the
update procedure. Hence we would recommend, if there are PASSQ flows, to set
SUBPQ = T if SUBFIX is not already set to T. See also 13.4.8.
not equal the observed flows out, in violation of “Kirchoff’s Rule” (as originally
applied to electrical circuits). However, more complicated situations may also
arise with two counts (or sets of counts) which are physically separated by
intervening links but where the assignment pattern is such that all flows using the
first count (set) must be routed through the second. A further example of
inconsistencies between counts and assignment was given in 13.1.8. Equally
frozen cells may create problems.
The common thread in all such cases is that it is not mathematically possible to
calculate a trip matrix which will satisfy all constraints.
Similar, but slightly less severe, problems may occur with counts that are, strictly
speaking, consistent in that trip matrices that satisfy equations (13.1) do exist but
which, given the assigned routes, frozen cells, etc., would involve severely
distorting the original matrix.
To a certain extent inconsistent counts as above may simply cancel one another
out. For example, if counts have been taken on the same road above and below a
pedestrian crossing node and they differ – so that Kirchoff’s Rule is violated at the
pedestrian crossing - the higher flow will continually attempt to increase the flow
through it by increasing its X a factor until it reaches the maximum allowed value
XAMAX while the lower flow will go in the opposite direction until its X a factor
reaches the minimum 1/XAMAX. The two multipliers will then cancel one another
out so that, in effect, the two counts have been removed. At more complex
intersections the end effect may not be that “simple”.
Inconsistent counts generally manifest themselves by problems of non-
convergence or very slow convergence within SATME2 whereby the loops are
terminated by the maximum number of iterations ITERMX rather than the EPSILN
criterion. They are also indicated by a large number of X a factors at either their
minimum or maximum values.
The obvious solution to these problems is to remove or modify the inconsistent
counts before carrying out the ME2 calculations but, clearly, this is easier said
than done. However, certain analyses and statistics output by SATPIJA and/or
SATME2 may help the user to detect the problems.
(see 13.3.1), to subtract the residual queues from the counts or not depending on
whether the count is assumed to be taken at the stop-line itself or mid-link
(upstream of any residual queues).
However, given these ambiguities there is a strong case for not including such
counts within ME2 on the basis that they are not actually adding information about
O-D travel patterns but simply confusing the issue. In addition, if the link continues
to queue in the current time period (or, strictly, is modelled to queue) then it could
be argued that the count is actually giving you more information about the link
capacity rather than flows and should be used to calibrate the link capacity (e.g.,
by adjusting saturation flows) rather than within SATME2.
N.B. None of the above problems apply to counts on turning movements where it
is assumed that the counts are taken at the junction. However see 13.3.8 for a
discussion as to the advisability of using turn counts in the first place.
bottleneck rather than the demand trip matrix. This can lead to problems of
inconsistencies in SATME2 if, for example, you have a counted flow of, say, 1500
pcu/hr immediately downstream from a link whose (SATURN - estimated) capacity
is 1000 pcu/hr - either the count or the capacity is wrong. In fact this is an extreme
example of the effect of flow metering on counted flows (see 13.1.10) where, in
this case, the flow metering affects 100% of the traffic and occurs immediately
upstream.
The practical problem that this gives rise to in SATURN is one of potential
exponential growth in the demand trip matrix if one iterates between matrix
estimation and assignment. For example, in the above case imagine the
bottleneck and count are fed by a single OD pair whose initial cell value is 2000 -
of which 1000 will queue at the bottleneck and 1000 will reach the counted link.
Therefore on the first iteration only 50% of the demand reaches the count and
therefore the “demand target” is factored up from 1500 to 3000 - see 13.1.3. To
achieve this demand target the first run of ME2 increases the trip matrix to cell to
3000. However on reassigning the new matrix again only 1000 pcus - of the
total - reach the count, so that the new demand target becomes 4500. Each
succeeding iteration continues to increase the trip matrix without ever satisfying
the count.
The short-term solution to the above problem is clear – either remove the count or
remove the bottleneck. The long-term solution may well be to enable the model to
recognise the situation and take appropriate action.
Alternatively you could use the mechanism for combining counts together (13.1.8)
to aggregate turn counts into link counts but, given the extra effort of specifying
the combined constraints within SATME2, it is probably better to do it in other
ways.
whole network rather than, say, concentrated in a city centre where the most
reliable counting methods have been employed.
On the other hand, even if a count is deemed to be highly reliable, it may be
somehow inconsistent with the assigned paths and/or other counts (possibly
evidenced by a value of X a at its minimum or maximum value) and it is therefore
best to remove it.
There is also a reliability issue related to the “order” in which counts are input as
discussed in 13.3.3.6; essentially there is a case for putting the most reliable
counts at the bottom of the input lists so that they are more likely to be exactly
satisfied.
An alternative (and not necessarily highly recommended) strategy for dealing with
less reliable count constraints – or counts which are proving difficult to satisfy – is
to convert them into less than / greater than constraints (13.1.7). For example, if
one has a not very reliable link count of 1,000 which empirically appears to be
difficult to satisfy even with X a at the maximum value of XAMAX it may make
sense to replace it by a >=900 constraint. However the problem with replacing all
unreliable counts with GT/LT constraints is that: (a) one does not know a priori
which alternative should be selected and (b) the problem with a GT/LT constraint
is that even if ME2 can easily satisfy the exact constraint with a GT/LT constraint it
simply stops when it hits the upper/lower boundary.
Unfortunately removing and/or ordering and/or redefining constraints is more an
art than a science and users will need to deal with the problem manually on a
case by case basis. What is, however, virtually certain is that if some selection of
counts is not undertaken the resulting output trip matrices will be sub-optimal. If
you treat ME2 as a black box sausage machine you will wind up with egg on your
face (to mix culinary metaphors!).
ME2 calculations have taken place, lists a number of relevant statistics per
constraint and defines three different “sensitivity ratios” which may help to identify
“problem counts”.
However, it is not possible to define a single unambiguous measure of sensitivity
per constraint and the interactions between counts and output matrices are
complex. E.g., it is not possible to say that adding one extra pcu/hr to a given
count will generate X extra pcu/hr in certain cells in the trip matrix; there is a large
degree of overlap between the various counts as well as problems of non-
uniqueness (see 13.1.9).
The statistics provided and their interpretation is as follows:
LINK Flows IN / OUT / Diff (DF): The first two numbers give the total (demand)
flows assigned to the link using the original trip matrix and the output trip matrix.
Their difference, DF, represents the net impact of running ME2 on this link.
TIJS IN / OUT: This column gives the sum of all T ij which are assigned to the link
in question independent of the proportion assigned per path (i.e., the sum of T ij
where P ija > 0 whether P ija = 0.999 or 0.001). These numbers are always, by
definition, greater than those in the previous column by virtue of the fact that the
former are all reduced by, in effect, the P ija factors. The ratio of, say, Flows(IN) /
TIJS(IN) would represent a weighted average P ija factor for that link.
Their difference, DT, is a measure of how much the trips associated with link A
have been adjusted as a result of running ME2.
DT / DF: The ratio of DT to DF represents, in a certain sense, the “sensitivity” of
the changes in the trip matrix to the corresponding changes in link counts. Ideally
this should be as close to 1.0 as possible indicating that for every trip
added/subtracted on a counted link there has been a corresponding trip added to /
subtracted from the trip matrix. A ratio >> 1.0 indicates that major changes have
had to be made to the trip matrix in order to satisfy that particular constraint.
Equally a negative DT/DF ratio may be taken as an indication that the changes on
that link are “going against the flow” of all the other changes and that, possibly,
this count is inconsistent with the other counts.
However, a conceptual problem with DT, and therefore with DT/DF, is that DT
includes all T ij cells using a link without regard to their level of usage, i.e., P ija ; the
next two measures take usage into account.
Cumulative Changes to Tij : the summation of all changes to T ij throughout the
internal ME2 algorithm iterations each time X a is adjusted.
Changes to Tijs if XA = 1: the summation of all changes to T ij if X a were re-set to
1.0. This uses the formula:
∆T = Σ T ij (1 – X a –Pija )
Note that a negative value of ∆T indicates that (using) the count acts to reduce the
total trip matrix by this amount and, conversely, that a positive value indicates that
the count increases the matrix by this amount.
Arguably this represents the best measure available to assess the effect of using
the count but it does not tell us exactly what the effect of not using the count
would be. For example, in an extreme case, if we have the same count on two
consecutive links separated by a pelican crossing, it is essentially arbitrary which
count has an X a factor of 1.0 (i.e., is “inactive”) and which has an “active” X a
factor. If we remove the active count the second would become active and the
updated matrix would be the same.
Equally other counts may be actively factoring the same cells in an opposite
direction, thus negating the effects of this particular count. If we were to re-run
matrix estimation without the count then the factors for these other counts would
be slightly closer to 1.0 since they would not have to “work so hard” to counter the
effect of the count that had been removed.
than .UFC files but, on the other hand, they may require extra CPU time to create
them in the first place; see 15.23.7.
If both a .UFC and a .UFO file exist for a particular network then either may be
used by SATPIJA; the choice is controlled by a Namelist parameter USEUFO
(13.2.1). The default is to use a .UFC file (on the basis that .UFC files are almost
always created by a SATURN assignment, .UFO less frequently); however, given
that the PIJA calculations are generally much, much faster using .UFO, the
recommendation is to set USEUFO = T.
Note that if a network has been run using OBA then the use of a .UFO file is
effectively mandatory since there is no .ufc file.
♦ the first matrix level representing car trips split by fixed proportions into three
purposes (say, Work, Education and Other);
which are not simple proportions of a common car trip matrix. However, assuming
that we could only observe total car flows, only the sum of the three matrices may
be updated, not the individual matrices (see 13.4.6).
Similar levels of aggregation/disaggregation must also apply to the constraints.
For a single un-stacked trip matrix divided into user classes by fixed proportions
we require a single set of counts aggregated over all user classes. If each user
class has a separate trip matrix then ideally we need a set of observed counts per
user class. If this is not possible; alternative methods are available (see 13.4.6 for
more details).
In order to apply ME2 in the above 5-UC three-matrix example we would need
observed link counts disaggregated by car/LGV/HGV; each separate set of counts
would be used to update the corresponding trip matrix level. But, unless we had
some way of distinguishing three separate purposes for observed car counts, it is
not possible to apply separate matrix estimation by purpose.
Equally, if we had three separate stacked matrices for car trips by Work,
Education and Other which are not simple factors of a common car trip matrix and
we can only observe total car flows, only the sum of the three matrices may be
updated, not the individual matrices (see 13.4.6 below).
Therefore, in terms of MUC ME2, we shall assume that we have a set of one or
more prior trip matrices, each one of which constitutes a separate level within the
assigned stacked trip matrix or is the sum of two or more UC/levels, and a
corresponding set of observed flows which we wish to use to produce improved
estimates of those matrices in order to satisfy equation (13.1).
The next section considers how SATPIJA identifies the sub-matrices to be
analysed for Pija factors while the following sections consider different options for
using SATPIJA and SATME2 together.
13.4.2 SATPIJA Options for Defining User Classes: KLASS, LEVEL and IVC
Within SATPIJA the set of one or more user classes for which Pija factors are
required are set using the three parameters KLASS, LEVEL and IVC:
a) A single user class (set by KLASS),
b) All user classes based on the same “level” of the input stacked trip matrix (set
by LEVEL)
c) All user classes which share a common “vehicle class” (set by IVC).
In cases (b) and (c) the output PIJA factors are “weighted” averages of the user
classes within that level; see equations (13.5) and (13.6) respectively. Under (a)
the value of LEVEL is effectively set by the matrix level used by user class KLASS
as defined in the .UFS network file.
Only one of these parameters needs to be specified; if the MUC assignment is
structured so that each user class corresponds to a separate level in the trip
matrix then either KLASS or LEVEL may be used (or, if both are specified, belt
and braces, they must be equal).
Option (a), to analyse a single user class KLASS, is not always appropriate since
it may be difficult to associate counts with a particular user class. For example, if
you had car trips split by purpose into separate sub-matrices, each with its own
level, it might not be possible to similarly disaggregate observed counts of cars by
purpose/level. However, this would not apply if, say, HGVs were specified as a
single user class / level and HGV counts could be easily identified separately.
Note that defining a single value KLASS is only possible if the trip matrix for that
user class is defined in a discrete level; if it “shares” its matrix level with other user
classes it is not possible to do a “partial” update of that level.
In the most common case of a single trip matrix all three parameters LEVEL,
KLASS and IVC are redundant; in effect, all three equal to 1.
= ∑ P ijaW
m m
P ija
m
where Pijam is the normal Pija factor for user class m and Wm is the “fraction” of
the trip matrix associated with user class m as defined within columns 11-15 of the
88888 data records within the original network .dat file
All matrix files shown in Figure 13.2 are simple square trip matrix files (i.e., not
stacked) and SATME2 updates that single trip matrix.
13.4.4 Multiple Level Stacked Trip Matrices: Updating Levels via Separate Matrices
In a more complicated case the trip matrix may contain several different sub-
matrices stacked by level with distinct user classes being defined as universal
factors of a single level (where the factors are input under the 88888 data in a
network .dat file). Most commonly a particular level will correspond to a single
user class, in which case the factor should be 1.0; less frequently a level will
contain multiple user classes, in which case the sum of the factors should be 1.0.
In the former case updating a level is fully equivalent to updating a single user
class.
The objective is therefore to update each separate level using a correspondingly
aggregated set of constraints. There are two basic ways to proceed: either:
a) Users may first unstack the trip matrix into individual square trip matrices,
update each sub-matrix/level individually and finally re-stack them; or
b) Users may (post 10.8) update an individual level within the full stacked matrix
while leaving the “other” levels unaltered.
Both cases require separate runs of SATPIJA to calculate PIJA factors and
SATME2 to update the matrix for the designated level; i.e., it is not possible to
produce multiple sets of Pija factors using SATPIJA and/or to update multiple
matrix levels within SATME2.
Case (a) is described in more detail below; case (b) in the following sub-section,
13.4.5.
In both cases SATPIJA is run in an identical fashion in order to calculate weighted
PIJA factors for all user classes within the nominated level using the selected links
within their chosen routes. See equation (13.5)
The level is identified by the value of LEVEL in Control File A as input to SATPIJA
(See note (5), 13.2.1). Note that if a level contains only one user class it is
equally possible to identify the level using the parameter KLASS.
The counts MUST refer to the total flows corresponding to that level or sub-matrix
(and thus SUBFIX should almost certainly be set to FALSE in SATME2 to avoid
subtracting fixed flows; see 13.4.8). For example, if you had stacked a Car and
an HGV matrix into a stacked two-level matrix file you could identify all car trips on
selected links and use that PIJA data plus car-specific counts to update the Car
matrix.
In this case the prior trip matrix input to SATME2 is the single-level un-stacked
car-only prior matrix, the matrix output from SATME2 is an updated car matrix
(also un-stacked) whereas the matrices input to SATURN and/or SATPIJA must
be stacked matrices (since in order to carry out the full assignment both matrices
are required). Thus it is necessary to insert one or two extra steps in the update
process:
♦ Prior to running SATME2 un-stack the full prior trip matrix to produce one or
more square sub-matrices for the level(s) to be updated (N.B. Not necessary
if the stacked prior matrix was itself built from sub-matrices in the first place);
♦ After obtaining a new Car matrix re-stack it with the (current) HGV matrix to
produce a new stacked matrix to use in SATURN.
Having updated the Car matrix to match the counts you could of course then carry
on to update the HGV matrix (with no doubt some extra problems of feedback and
convergence in addition to those described in 13.1.10 since updating the car
matrix may affect the routes taken by both cars and HGVs which will in turn affect
the ME2 HGV calculations!). The main point is that both steps must be carried out
separately.
The end result is identical, the only difference is that the procedures described
below are easier to implement.
As with 13.4.4 first run SATPIJA to produce a .UFP PIJA file for the level of the
trip matrix to be updated and then run SATME2 to update that level.
SATME2 distinguishes between the updating of a square sub-matrix and updating
a stacked matrix purely by the properties of the input prior matrix. If the prior
matrix is square SATME2 follows the procedures described in 13.4.4; if the matrix
is stacked, it follows the procedures described here.
The value of the level to be updated is set by the parameter LEVEL as input to
SATPIJA and passed to SATME2 via the .UFP file.
The procedure is then repeated once per level (or once for each level which is to
be updated). N.B. As yet there is no automatic procedure to carry out a PIJA
analysis for all levels in SATPIJA and then to update all matrix levels with
SATME2. However it should not be difficult for clever users to set up their own
batch files to run the procedure automatically - further advice is available upon
request.
Note that one very good reason for not putting the complete procedure into a
single “black box” is the user needs to be making decisions after each run of
SATME2, for example whether to repeat the assignment immediately, whether to
repeat the run of SATME2 but with certain counts removed, etc. etc.
where newod0.ufm might be a straight copy of priorod.ufm (but, N.B. it must have
a different filename).
13.4.6 Multiple User Classes Aggregated by Vehicle Class: IVC and TURBO
This section describes the situation where, say, you have three separate matrices
of car trips disaggregated by purpose – e.g., Work, Education and Other – each
stored as a separate matrix level for assignment purposes with, possibly, different
values of PPM, PPK etc. and therefore different route choices. In addition you
may have link counts and/or other constraints based on total cars, i.e., not
disaggregated by purpose.
In this case it is possible (post 10.8.13) to use SATME2 to update a prior matrix
which is the sum of all three car trip sub-matrices (and therefore a square matrix)
and to subsequently split the updated matrix back into separate matrices for Work,
Education and Other. (The method of splitting may either be left entirely up to the
user post SATME2 or done automatically within SATME2 by using an option
TURBO described below.).
Thus, with reference to equation (13.1) T ij is the total car trip matrix, P ija is the
probability that a car trip from origin i to destination j uses link a and V a is the total
car flow on link a. Thus P ija is a weighted sum over all purposes defined by:
Equation 13.6
= ∑ P ija P ij
m m
P ija
m
where P ij m is the probability (i.e., split) that a car trip from i to j is by purpose (user
class) m.
In order to calculate P ija within SATPIJA it is first necessary to ensure that the all
the sub-matrices (i.e., levels of the stacked matrix) which are to be treated
together have been grouped within the same “vehicle class” using the 88888 data
records of the network .dat file (see 6.11). The namelist parameter IVC identifies
the vehicle class to be used and must be invoked as the only option which
defines multiple levels within SATPIJA
necessary and SUBFIX should be explicitly set as F (i.e., changed from its default
of T).
On the other hand, if you are using PASSQ, it will be virtually impossible for the
counts to have differentiated between vehicles from this time period and previous
time periods, in which case there are very cogent reasons for making use of the
SUBPQ option in order to subtract the UC-specific PASSQ flows from the target
counts.
There is, however, a technical problem here in that the queued-up flows from the
previous time period as recorded under PASSQ are the TOTAL queued flows
and are not disaggregated by, e.g., user class. In order to correct for this problem
when one is updating only one particular level / user class in the stacked trip
matrix SATPIJA calculates the total PASSQ flow per counted links and then
factors it down by the ratio of the user class flow relative to the total flow on the
link in the previous time period. This information is then passed to SATME2 via
the .UFP file. Clearly this is only an approximation but, given the normally
relatively small contribution of PASSQ flows to total flows, it is felt to be justified.
A similar correction is also made to initial residual queues which are subtracted
from the target flow if SUBSLQ = T (see 13.3.1).
N.B. If, for some strange reason, the PASSQ-ed network had a different link
structure from the “current” network then, post 10.9.19, the flows are correctly
“translated” from the old structure into the new. Previously this was not possible:
SUBPQ was set to F in SATME2 and a Serious Warning generated.
and copied into a single .UFP file which contains the PIJA data for all zones as
per normal.
Technically each sub .UFP is identified by a suffix _PART such that (see 13.7.2)
the standard filenames would be counts_1.UFP, counts_2.UFP … whereas the
aggregate .UFP file would be named counts.UFP.
b) a logical parameter GROUPS has been set T under Namelist (default F).
then SATPIJA will produce a .UFP file based on the groups or aggregated zones.
All other inputs, including Namelist parameters, are unchanged.
A fatal error results if only one of the above conditions is fulfilled (e.g., GROUPS =
T but the trip matrix has not been aggregated).
All the necessary information to map zones into groups for example will be
contained within the .UFM file.
In brief, the procedure works by tracing all OD routes per FW iteration at the
normal zonal level but then, instead of building up Pija factors at the zonal level,
accumulates for each count ‘a’ a matrix of total group-to-group trips T IJa . At the
conclusion of the procedure T IJa is divided by T IJ , the total group-based trip matrix,
to give the P IJa factors at the group level. (Where I and J represent group origins
and destinations, i and j zonal O’s and D’s.)
- Create an aggregated trip matrix TIJ_G.UFM from the current zonal trip matrix
TIJ_Z.UFM using the zone-to-group definitions in FILZ2G.Z2G
- Ditto create an aggregate version of a prior trip matrix (if one is needed by
SATME2)
CALL SATPIJA NETWORK TIJ_G COUNTS
- Divide the updated group-based trip matrix by the input group-based trip
matrix (here assumed to be TIJ_G but it could also be a prior matrix) to obtain
a matrix of group-based growth factors per IJ cell FACTOR_G.UFM.
CALL MXG2Z FACTOR_G FACTOR_Z
- Factor the input zonal trip matrix TIJ_Z (alternatively the prior trip matrix) by
the zonal growth factors to obtain the updated zonal trip matrix TIJ_Z_UP.
Notes:
(i) PRIOR is only used when the program is run in the “update” mode. Since the
default file SATME20.DAT sets the update mode if KR is absent then PRIOR
must be used in this case
♦ A-node.
♦ B-node.
and Pija is the fraction of Tij trips which pass through link(/turn) a. Figure 13.4
illustrates the order of programs (cf. Figure 13.2).
Once produced the T ija matrix may be printed using MX or perhaps re-assigned
using SATDB. However given the probable “sparsity” of the matrix most users
probably prefer to aggregate the “zonal” trip matrix into, say, a “sector-to-sector”
matrix using MX.
SATU2 may produce more than one matrix in a single run, although the links or
turns need to be defined first via the input to SATPIJA (Figure 13.4).
♦ It also allows the user to determine the links used by the selected trips before
and after using the selected link.
Hence SATDB is generally recommended in preference to SATU2.
♦ The (demand) target flow (i.e., with fixed flows etc. removed);
♦ The number of the 66666 data set if the link is part of a combined set
♦ Target flows etc. for combined sets (as above for single constraints).
The end of the data file is indicated by a final record containing (as is standard in
SATURN data files) 99999.
Note that it is very likely that the contents and precise format of the above file will
change over time as further needs for post-ME2 analysis are identified. For
example, the current files do not contain any information on zone constraints so
these may be added at a later date.
from the terminal, where ‘network’ and ‘trips’ specify particular network and trip
matrix files which need not be further specified. Alternatively, under “pure”
Windows, one might select SATEASY as an icon or from a SATWIN list and then
select the files interactively. In the first case a ‘control procedure’ or bat file
‘SATEASY.BAT’ has been set up in order to remove most of the hard work.
For every program in the Suite there is an equivalent .bat file with the same
“name” as the .exe file (so that the SATEASY.BAT procedure runs the
$SATEASY.EXE program) and which requires a Command Line containing a
particular sequence of keywords and/or file names. The .bat files exist under both
DOS and/or Windows, although their functionality may differ within different
operating environments.
The main function of the bat file is to form a “bridge” between the user and the
program exe file such that file names etc get passed back and forwards between
the two. Previously under 16-bit “pure” dos this involved, to a greater or lesser
extent, logical checks and steps within the .bat file; with 32-bit programs and/or
Windows the emphasis has changed and the .bat file simply transfers the
command line into the program and the logic all takes place within the program.
This may make it more difficult for “users” to set up their own “clever” bat files to
control SATURN programs. But not impossible; see 14.11.
Command line parameters or “tokens” (e.g. “network” and “trips” in the above
example) may be divided into mandatory and optional with the mandatory
parameters coming first in a fixed order followed by the optional parameters in any
order. For example to run SATEASY there are two mandatory parameters as in:
specifies input files net.ufn and trips.ufm plus output files net.ufs and net.lpt
through the command line.
However the trip matrix name could also have been defined in the original data file
net.dat under &PARAM (see 6.3.4) via FILTIJ = ‘trips.ufm’ and passed to SATALL
via net.ufn - (option ii above), in which case the command line:
SATALL net
Interactive file specification is used as and when files not already defined under i)
or ii) are needed. Generally speaking this is most common with the purely
interactive programs such as P1X whereas the non-interactive programs such as
SATNET or SATALL should only use methods i) and ii).
Command line filename definitions may include the extension but it is not
essential; it may also be implied either by its position in the command line or by
keywords immediately before or after. For example:
P1X livnet.ufs
will also input livnet.ufs where the extension .ufs is implied by default.
Alternatively either:
P1X livnet UFT
or
P1X livnet.uft
both define an input file “livnet.uft”. In the former case UFT is an example of a
keyword which appears after the filename it amplifies; in the latter case the
extension is explicit.
Note, however, that:
P1X livnet.uft UFT
implies an input file tijθ.ufm under the REDMEN option where here the keyword
REDMEN appears before the filename it describes.
Note that the “names” used in the command line may be based on either
“filenames” or “pathnames”. Thus either:
SATNET net
or
SATNET C:/JOB/DAT/net
could both be used to specify the file C:/JOB/DAT/net.dat, where the first definition
relies on the current home directory and/or “append” search definitions to locate
the file. SATURN uf* files store both a “filename” and a “pathname” to help locate
the required files at later stages.
would imply the two input files net1.ufs and net2.ufs since net2 is neither a
standard extension nor keyword and .ufs is the default extension. Equally:
P1X net1.ufs net2.ufs
file describing the trip matrix to be assigned. Outputs include both binary UF* files
and ascii line printer files.
A basic distinction is whether or not the simulation/assignment loop is carried out
by one program, SATALL - the strongly recommended technique - or by two
programs, SATEASY and SATSIM, the original approach. Both are currently
available via, respectively, procedures SATURN and SATURN8; however
SATURN8 is effectively redundant but still, just about, available.
In order to run SATURN the user must issue a command of the form:
SATURN network
or, if the trip matrix filename trips.ufm is not defined in the network .dat file
(which it should be!):
SATURN network trips
or (SATURN8)
This does not of course imply that the network file must have the name
‘network.DAT’ - the user can choose any filename for the input file, but it must
have the extension DAT. Similarly all other files have a user-supplied filename
but fixed extensions as defined above.
In the case of buffer-only networks under SATURN8 the simulation program
SATSIM is not run and therefore no UFS or LPS files are created directly;
however the final output .ufa file is renamed as a .ufs file to maintain consistency.
Equally with SATURN the output file from a buffer network is always .ufs.
executes a normal SATURN run, starting with the network ‘net2.DAT’, but any
queues detected by previously running SATURN on ‘net1’ are passed to ‘net2’. In
other words ‘net2’ represents the time period immediately following that simulated
by ‘net1’.
Logically, the &OPTION namelist record in ‘net2.DAT’ should define PASSQ = T
but, if not and a PASSQ file is defined, PASSQ is automatically set to T. In either
case file ‘net1.UFS’ must exist.
The alternative method to invoke PASSQ using just input to the net2 .dat file
would involve the following namelist specification:
&OPTION
PASSQ = T
PQFILE = ‘net1.ufs’
…
&END
as per normal.
Note that if, belt’n’braces, the PASSQ file is defined both under &OPTION and on
the command line then the file on the command line is always used.
executes a normal SATURN run but with the data input file ‘net2.DAT’ being an
improved version (and presumably representing the same time period) as a
previous run based on net1.
Logically, the &OPTION namelist record in net2.dat should define UPDATE = T
but, if not and an UPDATE file is defined via the SATURN command line,
UPDATE is automatically set to T within SATNET. In either case file ‘net1.UFS’
must exist.
Alternatively the update file may be specified using the UPFILE parameter under
&PARAM as per PASSQ in 14.4.1 above. Note that if, belt’n’braces, the UPDATE
file is defined both under &OPTION and on the command line then the file on the
command line is always used.
Note as well that a network can “update itself”; i.e., the command:
SATURN net trips UPDATE net
Would use the file net.ufs as the update file input to SATNET in order to
supplement the data in file net.dat. Ultimately, post SATALL, the original file
net.ufs would be over-written by the new version. This option enables the user to
edit the file net.dat without having to create a new filename for the file.
executes the normal iterative sequence of assignment and simulation but, instead
of starting with the default flow-delay curves from a .ufn network file as input from
the network build program SATNET, the procedure starts with flow-delay curves
from the file network.ufs which had previously been processed by SATALL. At
the end of the program the file network.ufs will have been over-written.
The RESTART option is useful either for continuing a SATURN run to obtain
improved convergence or, much more frequently, to re-run an existing network
with a new trip matrix, e.g., as obtained from the update program SATME2.
executes a normal SATURN run with the data input file, ‘net2.DAT’, but with the
total assigned flows from a SATURN output file ‘net1.UFS’ being pre-loaded as
fixed flows onto net2.
Note that the extension of net1 above may be explicitly included in the command
line, e.g.:
SATURN net2 trips PLOD net1.ufa
Then the fixed flows would be read from a text file flows.dat; see 15.5.4.
As above the &OPTION namelist record in net2.DAT should define PLOD = T but,
if not and if a PLOD file is defined in the command line, PLOD is automatically set
to T. In either case the pre-load file “net1.UFS”, “flows.dat” etc. must exist.
Alternatively the pre-loaded file may be defined via the parameter PLDFIL (6.1) in
net2.dat, in which case the PLOD specification above is unnecessary in the
command line.
Note that, unlike PASSQ and UPDATE above, if a pre-load file is defined both
within &OPTION and on the Command Line then the file set under &OPTION is
used.
14.5 “LOG”, “KEY” and “VDU” Files: Running Interactive Programs “Off-
line”
LOG FILES
All interactive programs automatically create a “log file” which contains a complete
record of all user inputs during the running of that program. “Inputs” include not
only keyboard responses, filenames etc. but also mouse operations. The “format”
of the file distinguishes between the different input styles; see 14.5.2 and 14.5.3
for details.
Post release 11.2.11 a full listing of the log file is given at the end of the relevant
.LP file which should make it simpler to re-create a particular job, particularly if the
LP file has been preserved but not the log file.
Log files have standard filenames based on the program names such as
P1Xn.LOG, SATDBn.LOG, etc. where the ”generation number” n is appended
each time a program is run (within that particular subdirectory). This feature is
provided to deal with multi-tasking but - N.B.!! - it requires frequent file cleaning on
the part of the user. The maximum generation number is 99.
KEY FILES
The main use of the LOG files is to create “KEY files” which are used to re-run
interactive programs such as SATDB, MX or P1X in an “off-line” or “quasi-batch”
mode whereby the normal commands which are supplied by the user via the
keyboard and/or mouse are instead taken (in sequence) from a “dummy terminal”
or “key” file. Thus the second key-based run of SATDB would follow exactly the
same series of instructions as the first, the difference being that the sequence of
commands is read from successive records in the key file rather than being
directly generated by the user. This means that, for example, having performed a
particular operation interactively on file-1 it is possible to automatically repeat the
identical operations on file-2 without having to laboriously repeat the same
sequence of keyboard operations.
More precise details as to how log/key files are constituted and applied are given
in sections 14.5.2 to 14.5.10.
A similar facility to KEY files is also available under command line options as
described in 14.7. Note however that KEY files are, from the point of view of a
SATURN user as opposed to the SATURN developers, far more flexible.
VDU FILES
In addition there is a further option available in conjunction with the KEY option
whereby the terminal output from an interactive program may be directed either to
a terminal screen or to a dummy “VDU” file. The latter is probably a “purer” form
of off-line or batch processing; the former is more useful in a sort of demonstration
mode where a program may be run apparently on-line but with the viewer only
having to hit the <return> key and/or click the mouse at each pause rather than
having to decide on the input.
(N,B. A very useful alternative to clicking the mouse in order to advance at each
stage of a graphical routine is to use Alt-F4!)
runs SATDB on an input file LIVNET.UFS with terminal commands taken from a
file JAN16.KEY which has been copied (/renamed) from a .LOG file from a
previous, purely interactive run of SATDB.
The extension “.KEY” is implied and, prior to Version 10.9.21, was obligatory.
However, post November 2010, key files may either have an extension .key or
.log and may be set with or without the keyword KEY.
Thus a LOG file may be used directly as a KEY file without being renamed with its
extension changed. For example:
SATDB LIVNET KEY satdb16.log
would run SATDB with its terminal commands taken from a file satdb16.log,
presumably output as a LOG file from a previous run of SATDB.
Alternatively (post 10.9.22), the “pre-word” KEY is not an absolute necessity but
may be implied by the extension of a filename given on the command line such
that:
SATDB LIVNET JAN16.KEY
or
SATDB LIVNET satdb16.log
runs SATDB on an input file LIVNET.UFS with terminal commands taken from
JAN16.KEY or satdb16.log respectively.
The inclusion/exclusion of a VDU output file is determined in the “standard” high-
level procedures by a keyword VDU followed by a file name. Hence;
SATDB LIVNET KEY JAN16 VDU FRED
runs SATDB on LIVNET.UFS with terminal input from JAN16.KEY and terminal
output to FRED.VDU. Nothing therefore appears on the screen.
Alternatively (post 10.9.22) the keyword VDU may be dropped by simply entering
a filename with an extension .VDU as in:
SATDB LIVNET KEY JAN16 FRED.VDU
is equivalent to:
SATDB LIVNET KEY JAN16 VDU JAN16
This is particularly useful when there are a large number of entries on the
command line since it saves, in effect, two words.
Note that once an appropriate “KEY file” has been set up it may be used as part of
a standard “macro” to automatically repeat the same function but with different
network files. For example, you may automatically extend any .ufs network file
using FUEL.KEY with a standard procedural call such as:
SATDB NET S 11 NETX KEY FUEL VDU SCRATCH
which will extend NET.UFS to include fuel consumption in file NETX.UFS. The
terminal output responses would be stored in SCRATCH.VDU. (Although you
probably never need to look at this file; it is only there to make the procedure fully
“batch”.)
The procedure could be further implemented within a DOS batch (.bat) file called
by, e.g.:
DBFUEL net netx
which, at its very simplest, might consist of the single line file DBFUEL.BAT
call satdb %1 S 11 %2 KEY FUEL VDU scratch
♦ “pure” mouse input (i.e., point and click on a particular point on the screen);
♦ etc. etc.
All of these appear within the log/key files in differing formats, the exact details of
which need not concern the casual user. Their primary purpose is to indicate to
the program which is “reading” the key file the precise form of the input command.
Note, however, that .log files generally do not include any inputs made within
“external Windows” operations. For example, within P1X network editing it is
possible at certain stages to request “screen editing” to edit segments of text. The
request to enter Screen Editing would be recorded in the .log file but any changes
made to the text under screen edit itself are Windows operations and will not be
recorded in the .log file. Similarly if you ask to print a file any options selected
within the standard Windows Print window are not recorded in the .log file. It is
therefore recommended that such Windows-based operations should be avoided
if the intention is to re-use the inputs as a key file. See Section 14.5.9 for further
information.
An example of a log file generated by a run of P1X which uses several different
forms of inputs, as well as comments, is given below:
1056 90 68 0 Display menu (Mouse pixels/status/Line) 6001
*
* Select the list of flow options and then choose Demand:
*
1051 72 67 0 Choice of (Mouse pixels/status/Line)
6002
1049 153 50 0 2-Flows (Mouse pixels/status/Line)
5 - Demand Flow Downstream
Menu bar: &Box 4040
Thus the first choice made by the user was the line “Display menu” in the P1X
banner. 1056 and 90 indicate the precise pixel coordinates of the mouse when the
left hand button was clicked, 68 represents the ascii value of the character D (the
single highlighted character in that line), 0 gives a “status” (which is a bit too
complicated to explain and you don’t really need to know about it!) while “Display
menu” was the text in the selected banner line. Of these the only vital piece of
information is the ascii code 68 which is used by the program to “branch”
correctly.
The numerical value 6001 at the end of the record is a “menu check code”, i.e., a
code which may be used to uniquely identify the menu from which the choice
“display Menu” was selected (in this case the “Master Menu”). It may be
subsequently used as a check that when this record is processed from a KEY file
that it is indeed called from the Master Menu, otherwise the KEY file may be “out
of synch”. This facility was first introduced in October 2012 so that checks on KEY
files created before that date are not possible.
If you were to use this command line to run a job on a different computer with a
different screen resolution the pixel coordinates of the Display menu line might be
quite different – the critical thing is that a banner line with a highlighted character
whose ascii code was 68 (i.e., D) was selected.
The line “5 - Demand Flow Downstream” simply indicates that the 5th line from a
window containing various options was selected and that the text in that line was
as indicated. Again the vital piece of information is the 5.
The two lines following &Box indicate the precise pixel coordinates used to define
the position of the box (i.e., format (e) above). Problems may occur here if the job
is re-run on a machine with a different screen resolution and/or a different window
since, in that case, the pixel position (376,440) may point to a different position in
the network as displayed. They may however be used relatively reliably by using
full screen windows to create the log/key file and re-running on an identical
machine.
Note further down that, following the entry “SATDB Opts” where the input mode
becomes keyboard-based, the key file resembles that described in 14.5.2.
However, when within SATDB the user chose option 15, display to the terminal,
the commands “down” and “quit” were entered via the menu bar.
Running jobs with key files such as the one above is identical to running jobs with
“simple” key files as regards keyboard inputs (i.e., just hit <return>) but when a
mouse input is required the user must either click the left hand mouse button to
continue or, if a small window appears with the next instruction displayed, close
that window. On the other hand, if the VDU option is invoked, then the job will run
automatically without any user intervention.
(N,B. A very useful alternative to clicking the mouse in order to close the window
at each stage of a graphical routine is to use Alt-F4!)Creating standard “batch-
style” macros such as DBFUEL described in 14.5.2 becomes more difficult,
though not impossible, with mouse-based inputs. Thus a key file based on
SATDB is likely to be more reliable than one based on P1X.
2) By the single character “b” or “B” in the first line in a KEY file which contains
the response “Y” to the question do you wish to terminate.
Use (2) would probably be more convenient for most applications.
A simple file is as follows:
0
4
1893
4013
0
VDU
8
1
0.01*X1 = 0.0023*X2
FUEL CONSUMPTION IN MILLILITRES
4603
0
16
0
0
2
0
0
B N.B. Previously Y)
To use a key file “setup.key” such as the above to “initiate” a run of, say, SATDB
one could use a command line such as:
SATDB net keyvdu setup
from the terminal as opposed to inserting an ‘AUTO 0’ record in the KEY file which
must be done in advance.
Finally it is possible to change from the VDU mode (terminal output to a file) to the
normal terminal output to the screen mode by including a record VDU’ in the KEY
file; e.g.:
0
4
1893
4013
0
VDU
8
1
0.01*X1 + 0.0023*X2
FUEL CONSUMPTION IN MILLILITRES
4603
0
16
...
Thus in the above example the ‘terminal’ output would be initially directed to a file,
and thus be ‘invisible’ to the user, but would revert to the terminal part way
through. Use this option to skip over the ‘boring’ parts of a demonstration run.
Equally you can switch from terminal output back to file output by a VDU record
which is therefore a ‘toggle’ between the two modes. Note however that this
facility can only be used if you start with a VDU external file.
Comments may either be inserted in a key file AFTER it has been produced by an
interactive run (i.e., into the LOG file) or else they may be directly included in the
log file by typing in records commencing with a ‘*’. Thus in the above example the
line ‘0.01*X1 ...’ is an equation which is required by the previous menu response
of 1; if the user had typed: *<enter>, * Linear .. <enter>, *<enter>, 0.01 .. <enter>
the log file would have appeared as above.
Comments are very useful for indicating the reason for the line following and are
often used within key files which are used as tutorials to demonstrate particular
features of SATURN programs since they appear directly on the screen. They are
also very useful in key files which are used within standard “macros”, just in case
later versions of SATURN have a different sequence of input commands (they
always do!) and old key files no longer work.
runs SATDB on net2.ufs using the same sequence of commands as for net1. It
does this by copying the .log file from the first run into a temporary .key file (the
actual filename used is again.key but the user need not take any notice of this)
and using this as a normal “KEY file” in the second run. It is therefore equivalent
to:
SATDB net1
copy satdb.log repeat.key
SATDB net2 KEY repeat
On the other hand if the file jim.dat did not exist then the query to over-write would
not have existed and the LOG/KEY file would read:
0
jim.dat
0
assumption is always that if a Y/N line is not provided then the desired
answer should be Y.)
3) Alternative Procedures. Alternatively, there are several ways around both
these potential problems (and, prior to 10.6.16., one of these would have
been necessary)
The first is to ensure that the “status” of all files prior to a KEY run is identical to
that prior to the original run. This could involve deleting any existing files which
are due to be created as new files.
A second is to manually edit in or out the required Y or N lines as required in the
KEY file (but even then you have to be careful that the edited KEY file is
consistent with the status of all relevant files every time you come to use it).
A third method, which has the advantage of simplicity, is to set the parameter
GO4IT (as described in Appendix Y) to .FALSE. in both the original and repeat
runs. In this case all existing files are automatically over-written, questions
regarding over-writing never occur and both the original .log file and the “correct”
key file will be as per the second data segment above, i.e., no line “y”.
There are several ways to ensure GO4IT = F. Firstly, it may be set interactively by
locating the menu containing the “General SATURN Parameters” menu and re-
setting GO4IT as necessary. Secondly, it may be set within the preferences files
P1X0.DAT etc. for all the main interactive programs: P1X, SATLOOK, SATDB
and MX. Finally, GO4IT may also be universally set within SAT10KEY.DAT but
this practice is not entirely to be recommended since it removes a useful general
safeguard; see Appendix Y.
runs SATALL on the file net.ufn but over-rides the existing value of GONZO to
1.2. The effect is the same as:
SATALL net KR control
However for one-off parameter changes it is much easier to include the change on
the command line than to create a new control file.
Note that due to a quirk of DOS it is not possible to include equal signs on the
command lines; “GONZO = 1.2” is treated as “GONZO 1.2 1.2”. However since
namelist input does not require “=” (see Appendix A) this is not a problem.
where DUMP5 above is a special keyword which implies “dump into CSV format”.
The batch file UFM2CSV.BAT simply re-creates the previous command line in
order to run the program MX to carry out the same function.
A number of standard applications within MX based on this methodology are
described in Section 10.20. In addition further examples may also be found using
SATLOOK, SATDB and P1X.
would open a text (ascii) file list.xcl and concatenate its contents to the right of
“mat1”. Thus, if list.xcl contained a single line:
mat2 mat3 OUT matnew
Alternatively a .XCL file may contain several lines (records) so that, for example,
the file list.xcl illustrated above might also be written:
mat2
mat3
OUT matnew
where SATALL, SATPIJA and SATME2 are themselves .bat files which call the
equivalent .exe files.
The above three commands may themselves be subsumed into a single .bat file,
say UPME2 .bat, which could be written as:
CALL SATALL %1 %2
CALL SAPIJA %2 %3
CALL SATME2 %4 %3 PRIOR
so that typing:
UPME2 net1 trips1 Counts
would have the same effect as the original three commands. Note the use of %1,
%2 etc within the bat file to represent the successive arguments on the command
line; at execution net1 would be substituted for %1 in the call to SATALL etc
Note that .bat files may themselves call other .bat files (but see below for
problems under 32-bit Windows) which themselves call other .bat files to produce
a hierarchical structure.
Calls to standard dos functions may also be included, for example one file may be
copied into another so that UPME2 above might include a final line.
COPY %4.UFM LATEST.UFM
in order to save the “latest” trip matrix file with a standard name. Equally
temporary files may be deleted etc.
.Bat files may also include certain error checks and internal logic. For example
one may check whether or not an essential input file exists and take the
appropriate action if not, or the “convergence status” of a particular operation
monitored in order to terminate at the required level. Dos manuals may be
consulted for further information.
Within Windows, and Command Prompt, one particular problem arises which is
that Windows does not (apparently) wait for one program to terminate before
starting the next. Thus, in the above example, SATPIJA may begin before
SATALL has finished and therefore before the necessary file net1.ufs has been
created. A solution to this problem involves 2 “tricks”,
1) Use direct calls to exe files rather than to .bat files;
2) Use the command “start/W” as below.
Thus the UPME2.bat file above under Windows would become:
Start/W $SATALL %1 %2
Start/W $SATPIJA %2 %3
Start/W $SATME2 %4 %3 PRIOR %2
Empirically this guarantees that SATPIJA will only be initiated once SATALL has
terminated and all necessary files are available. For an example please look at
SATURN.bat.
There may of course be other “tricks” available within Windows to accomplish the
same ends.
The justification for using the less precise buffer network description is that, if one
is interested in analysing schemes at the centre of the network, the resulting
impacts within the distant buffer network will be minimal and the extra time and
effort required to code and run the full network as simulation cannot be justified.
A further advantage of a buffer network vis a vis a simulation network is that it has
better convergence properties due to the fact that it uses “separable” cost-flow
curves (see 7.1.3). Conversely simulation networks suffer potential problems of
non-convergence due to the fact that, by allowing for within junction interactions,
their cost-flow curves are non-separable. Very often this may introduce “noise”
into the solution which makes it difficult to accurately assess the impact of
relatively small schemes.
SATURN 11 has introduced the possibility of creating an intermediate network
band (referred to as the Peripheral Simulation Area in the diagram above) which
would lie, geographically, between the central “pure” simulation network and the
outer buffer network and which would be modelled at a simpler and/or more
aggregate level than the normal simulation but not necessarily as coarse as the
buffer network.
Two options are available for the intermediate region:
1) Conversion into a Fixed Cost Curve network (FCF);
2) Simulation to Buffer Transformation (SBT)
Fixed Cost Curves are described in Sections 15.1.2 to 15.1.6 below and the
Simulation to Buffer Transformation in 15.1.7. They are compared in 15.1.8.
t=
AV n + t0 V <C (a)
t AC n + t0 + B ∗ (V − C ) / C
= V ≥C (b)
The parameters t 0 , A, n and C are all treated as fixed for individual turns rather
than as variables calculated at the end of each new simulation.
A further property of an FCF (“Fixed Cost-Flow”) description is that the same
network properties may be applied to both a “do-minimum” and a “do-something”
network in order to minimise noise between the two.
Finally we note that the structure of the “assignment network” in which simulation
turns are represented by individual “links” is also unchanged under FCF; it is only
the nature of the cost-flow curves on these turn-links which has changed. This in
turn implies that a basic Frank-Wolfe assignment step will require roughly the
same CPU time with or without FCF – although we would expect a reduction in
overall CPU time with FCF due to a reduced number of assignment-simulation
loops.
array containing node properties (DA code 254 to be more precise). The following
two sub-sections describe how this may be accomplished; here we describe the
modelling differences – and similarities – between a “normal” simulation and an
FCF simulation.
Both styles of node simulation start with IN profiles on all input arms (see Section
8.1) and create OUT profiles along with delays. The difference is that the FCF
method is based purely and simply on the parameters in equation 8.5 (above and
section 8.4.2), rather than by a full simulation of interacting flows over short time
unit.
Thus, under FCF, the maximum OUT flow is determined by the minimum of (a) the
IN flow and (b) the (fixed) turn capacity (C in equation 8.5 above). The delay is set
by use of equation 8.5 for the current flows V.
Note that the modelling of IN/OUT flows ensures that the assigned flows are
correctly modelled within the FCF network and that any flow metering (reduced
flows downstream of V>C movements) is correctly retained as is the distinction
between “demand” and “actual” flows on all intermediate band links.
Equally any blocking back effects are retained under FCF in that the capacities C
used in equation 8.5 are the capacities post blocking back. However any
reductions due to blocking back are fixed and will not change as a result of any
flow re-assignment within the intermediate band.
On the other hand a lot of the detailed information that is provided by the normal
simulation, for example the “saw-tooth” style queue profiles at signals, lane
choice, blocking back factors etc. etc., are either no longer available or else retain
their values input at the point of “fixing”. Equally the most essential information
which is being passed from the simulation to the assignment, the flow-delay
curves, is, by definition, fixed rather than variable by loop. For this reason FCF
networks should only be set up once a reasonably stable set of cost-flow curves
have been obtained; i.e., that the simulation-assignment convergence is “good”.
and the buffer component (if any) is identical between old_base.ufs and
old_base.ufa.
Note that neither an output network data file control.kp which normally defines the
cordoned network nor a cordoned trip matrix are required in this operation; the
sole purpose of running SATCH in this fashion is to produce the new three-level
network .UFA file. (Therefore, to save unnecessary calculations and CPU, the
parameter DOMAT should always be set to .FALSE.)
To complete the first stage the file old_base.ufa should be renamed / copied as,
say, new_base.ufn and run through SATALL in order to create new_base.ufs.
(The reason for using the extension .ufn is that this is the extension required by
SATALL for an input network.) Provided that old_base,ufs was well converged in
the first place and the cost-flow curves for the fixed nodes are stable then the
differences between old_base.ufs and new_base.ufs should be minimal. And,
hopefully, new_base.ufs will converge much more rapidly.
the inner segment remaining as simulation. So in this case we will still have the
traditional simulation/buffer “doughnut” but with an extended buffer component.
We refer to this method as SBT – Simulation to Buffer Transformation.
The SBT transformation may be accomplished by a combination of applications of
SATCH, SATBUF and SATCCS (12.1, 15.8.2 and 15.8.3 respectively) plus some
text file editing to produce a suitably updated network .dat file. Thus, assuming
that we start from old_base.ufs, we proceed as follows:
1) SATBUF old_base: to create old_base.buf with all simulation links in
old_base.ufs converted to buffer format;
2) SATCCS old_base: to create old_base.map with all simulation centroid
connectors converted to buffer format;
3) SATCH old_base control: where control.dat includes INCLUD = T in order to
produce $INCLUDE files control_11111,dat, control_22222.dat and/or
control_44444.dat to represent simulation data within the central cordoned
area.
At this stage we now have all the necessary components to create a new
network data file new_base.dat as follows:
4) COPY old_base.dat new_base.dat
5) Edit new_base.dat using a standard text editor, e.g., NOTEPAD, in which we:
a) Delete the existing 11111, 22222 and 44444 (if it exists) data segments
and ...
b) ... replace them by $INCLUDE references to control_11111.dat,
control.22222.dat and control_44444.dat.
c) Add 2 extra records “$INCLUDE old_base.buf” and “$INCLUDE
old_base.map” within the 33333 data segment (but do not delete any of
the existing 33333 data records).
Thus, at the end of the edit, we have a network .dat file in which the 11111, 22222
and 44444 data segments refer specifically to the central (cordoned) network
while the 33333 data segment has had extra data added in the appropriate format
to represent the (former simulation) links and centroid connectors in the
intermediate band.
We note that the two 33333 $INCLUDE segments added in step c) above will also
include the central simulation links and centroid connectors converted to buffer
format but since the same links etc. also appear in the new 11111 and 22222 data
sets they will be ignored by SATNET under 33333.
Thus FCF retains the same basic geometry in the intermediate region whereby
each turning movement is still represented by a single link within the assignment
network with a (fixed) cost-flow curve and therefore, in terms of route choice,
different turning movements from the same entry link influence route choice. By
contrast with BCF the distinction between different turns has been removed.
In addition the FCF formulation permits flow metering to be modelled whereas
with SBT, as with any buffer network, there is no distinction modelled between
demand and actual flows.
We may also note that, to a first approximation, a network with a FCF conversion
gives the same results as the original simulation network. (In fact the first
assignment after the FCF transformation should give identical results to the next
assignment from the pure simulation network since the cost-flow curves are
identical; they only diverge thereafter to the extent that the simulated cost-flow
curves change). By contrast SBT networks give quite different results immediately
since the buffer-link representation is based on a quite different (and arguably less
realistic) network representation than the simulated turns.
Therefore, in terms of “realism”, FCF is preferable to SBT.
On the other hand in terms of CPU and convergence SBT is the winner in that the
reduced network size (roughly speaking including turns doubles or more the size
of the assignment network) leads to faster run times plus, arguably, faster
convergence.
Note that the original trip matrix is still valid for the transformed networks, whether
under FCF or SBT, since the zone structure has not been changed at all in the
new networks.
♦ Input the UFS file from the previous sequence on channel 2 to SATNET
(which may most easily be done using the parameter UPFILE (see section
6.1) to define the filename).
We note that this procedure is very similar to the PASSQ option (17.3.1) which
also (if UPDATE = F) extracts flow-delay data from a previous network file (in this
case, the PASSQ file from the previous time period) The difference under
UPDATE = T is that only flow-delay information is extracted from the update file,
not the queues and suppressed traffic as with PASSQ.
Note that both UPDATE and PASSQ may be used at the same time but, if so,
they must use two different input .ufs files (parametric filenames UPFILE/FILUP
and FILPQ respectively). If only PASSQ is used then there is no option to cancel
the flow-delay updates.
The extended SATURN procedures may be used here - the command format is
illustrated in Section 14.4.2.
Further Notes:
1) The second network may in fact be structurally quite different from the first in
the sense that new nodes and new links or turns can be introduced. The
program is set up in such a way that only information on turns and links
common to both networks are carried over. For “new” turns default flow-
delay parameters are assumed. Clearly though, the more similar the two
networks are, the greater the savings in CPU time.
N.B. Both UPDATE and PASSQ (17.3.1) allow the “pre-network” to have a
different structure from the “main network” whereas – at the time of writing –
the pre-load option PLOD does not (see 15.5.1). This is likely to change in
the future.
2) Note that the UPDATE option as described here implies that only the
network is updated, although it is also permissible to introduce a different trip
matrix at the same time. If, however, one only wishes to change the trip
matrix then the appropriate steps are described under the Re-start Facility in
Section 15.4.
3) In order to ensure that the first assignment within the assignment-simulation
loop takes full advantage of the improved initial set of flow-delay curves the
maximum number of assignment iterations, normally set by the parameter
NITA, is set to the maximum of NITA, NITA_S and 25.
4) It is possible (post SATURN 10.6) for a file to, in effect, update itself in the
sense that an “old” UFS file, say net.ufs, may update a “new” network data
file net.dat. In other words it is not necessary to re-name the network every
time a minor change is made and the results from the previous incarnation
are used to the full.
Note as well that, if UPDATE is set to .TRUE., but the UFS file to be updated
has not been defined then it is assumed by default that the file to be updated
IS net.ufs (when the data file is net.dat).
This option is particularly useful when running multiple time periods using
SATTPX (17.4.3) since, in that case, each time period has a unique filename
(e.g., neta, netb, netc etc.) emanating from a single data filename (e.g.,
net.dat). The individual time-period filenames will be automatically and
correctly invoked if UPDATE = T in net.dat but no specific .ufs filename (e.g.,
net.ufs) is set.
5) The UPDATE option may be very usefully combined – under either path-
based or origin-based assignments - with the WSTART option which adds
additional information related to path flows and which improves the initial
assignment even more than just having improved cost-flow curves. See 21.3
for further details.
♦ The final UFS file from the previous sequence (This file contains the
necessary network specifications and parameters.)
carries out a full simulation-assignment loop but taking its input from the
previously converged file network.ufs as opposed to network.ufn which comes
direct from SATNET.
Note that it is the presence of “RESTART” on the command line which initiates the
re-start sequence; i.e. no parameters within a .dat or control file need to be set.
However an alternative DIY method to set up re-start would be to copy a .ufs file
into a .ufn file yourself and create a control file for SATALL with the parameter
REGO = T; see 7.13.2. Not recommended!
The output version of network.ufs will over-write the original input version and will
include the new flows etc. If you wish to retain separate .ufs files from each step it
will be necessary to take a copy of each output .ufs file with clearly, different
names.
The main advantage of using the re-start facility, apart from being able to skip one
execution of SATNET, is that the new sequence starts with the flow-delay curves
and simulation profiles from the previous run. In the former sense RESTART is
therefore very similar to the use of UPDATE within SATNET, although the use of
old simulation profiles is exclusive to RESTART.
If the new trip matrix is not much different from the old then the final flow-delay
curves, etc. will not be much different either. Hence by starting with good
approximations the overall number of assignment/simulation loops can be sharply
reduced.
Section 22.2.2 contains further information on RESTART, including its relationship
with other similar “kick-start” techniques.
♦ Set up a “heavies” network and carry out a full SATURN run assigning only a
matrix of heavy vehicles.
♦ Set up the “normal” network with the previous demand (i.e., not actual) flows
“pre-loaded” onto the network and treated as fixed flows in the same way that
buses are.
The second or “normal” network file would have PLOD = T in &OPTION (and,
preferably, the name of the pre-loaded file via PLDFIL) whereas the first would
have PLOD = F (the default).
In effect the PLOD option allows the heavy lorries to have the first choice of route
and implies that whereas lorries can affect the routes subsequently chosen by the
“normal” vehicles, the normal vehicles cannot in turn affect lorries. In some
circumstances this may not be a totally unrealistic assumption; however allowing
each record contains: (a) link identification (in standard or free (CSV) format; see
below) followed by (b) the corresponding flow in units of pcu/hr.
Alternatively if the pre-load file and the current file have a different network
structure and pre-loading from a .ufs file is not permitted (paragraph 4, 15.5.1),
then the relevant flows may be pre-loaded by first dumping flows from the pre-load
file into a text file; e.g., use SATDB (11.0.9).
SATURN differentiates between the two by looking it the extension of the input
file: if it is .ufs/ufa/etc. it assumes a SATURN file, if not it assumes a text data file.
See 14.4.4.
The format of the link identification may either follow standard SATURN input data
conventions, see, for example, 6.10, with node numbers in fixed columns followed
by a (single) link flow or both node numbers and flow may be input totally as “free
format” or CSV by setting a parameter PLODFF = T in the network &OPTION data
segment (see 6.1). By default PLODFF = F.
Note that pre-loaded “links” should normally include both “roads” and “turns” in a
simulation network. Including only “roads” will lead to discontinuities in flows at
simulation junctions.
Within free-format text files (PLODFF = T) a further &OPTION parameter PLFF3 =
T requires that each input record contains 4 fields – A, B , C and flow. Thus links
are distinguished from turns by always including an explicit third C-node field
which is equal to zero for a link and the turn C-node otherwise.; i.e., A,B,0,link-
flow(A,B) as opposed to A,B,C,turn-flow(A,B,C).
Alternatively, if PLFF3 = F, then link records require 3 fields (A and B followed by
the flow) whereas turn records require 4 fields in total (A, B, C and flow). By
default PLFF3 = F.
For fixed column input (PLODFF = F) PLFF3 does not apply since the fixed data
columns used for a C node will simply be blank (or zero) for a link and the flow
data is in the same (fixed) columns for both links and turns.
See Section 9.12.3 for suggestions as to how the pre-load facility may be used in
combination with the parameter ZILCH to carry out a 100% pre-load.
It may most easily be thought of as the square root of the product of the absolute
difference, V2-V1, and the relative difference, (V2-V1)/VBAR where the “average
flow” VBAR = 0.5*(V1 + V2).
The reason for introducing such a statistic is the inability of either the absolute
difference or the relative difference to cope over a wide range of flows. For
example an absolute difference of 100 pcu/h may be considered a big difference if
the flows are of the order of 100 pcu/h, but would be totally unimportant for flows
of the order of several thousand pcu/h. Equally a 10% error in 100 pcu/h would
not be important, whereas a 10% error in, say, 3000 pcu/h might mean the
difference between building an extra lane or not.
Generally speaking the GEH parameter is less sensitive to such problems since a
modeller would probably feel that an error of 20 in 100 would be roughly as bad as
an error of 90 in 2,000, and both would have a GEH statistic of, roughly, 2.
The following table gives an indication of various levels of GEH values, both
qualitatively and quantitatively:
Value Comment Examples
GEH = 1.0 “Excellent” +/- 65 in 4,000 +/- 25 in 500
GEH = 2.0 “Good” +/- 130 in 4,000 +/- 45 in 500
GEH = 5.0 “Acceptable” +/- 325 in 4,000 +/- 120 in 500
GEH =10.0 “Rubbish!” +/- 650 in 4,000 +/- 250 in 500
Zealand using the NOTUK parameter and in countries where vehicles drive on the
right using LEFTDR.
♦ 3 - both (i) and (ii) (as for Victoria and New Zealand)
The “traditional” (i.e., dating back to the 1970’s) default value in SATURN is 0
implying that opposing right turns in the UK do hook and therefore interfere with
one another. However in the 21st Century UK the opposite is almost certainly the
norm and, paradoxically, a value of NOTUK = 1 would be recommended.
However, setting NOTUK = 1 on existing networks may not be a good idea if a
large number of individual turns have been given a Priority Modifier D which
reverses the definition of hooked/not hooked (see 6.4.2.7). I.e., if you set NOTUK
= 1 but do not change XD to X then all those turns will be assumed to hook.
to produce an ASCII file net.buf which contains for each simulation link (A,B) a
single record containing:
♦ Its A-node
♦ Its B-node
d = ∑ Vi di / ∑ Vi
where:
di = delay for turn i
Vi = simulated (actual) flow for turn i
Thus if you have a simulated right turn with a very long delay but (consequently) a
very low flow this will have relatively little effect on the delays which would be
modelled in the buffer network (so that in a buffer network representation you
could expect to overestimate that particular turning movement).
The capacity is that already calculated for each simulation link (see 8.9.4 for
further details) while the flow-delay power n is a weighted sum of individual turns
as with delays above.
Both the order and the format of the output variables is the correct order required
by buffer network input to SATNET (section 6.5). Thus the times, capacity and
distance are all output as “integers” although they are calculated as “reals”.
Note that SATBUF deals only with simulation links, i.e. the 11111 data input, and
that users must decide for themselves how to deal with simulation centroid
connectors - the 22222 data inputs. One very simple solution, which implies using
an editor, is to edit the 22222 records by
Certain problems may arise in converting existing speed-flow curves into the flow-
delay relationship as specified by SATURN for its buffer network, i.e., an nth order
power law for flows less than capacity and a linear relationship for flows above
capacity (see Section 5.4 and equation (5.1)). These problems may concern not
only the calculation of n – dealt with below – but also problems with the
interpretation of parameters such as capacity.
We consider first the range of flows less than capacity, V<C. Clearly if the existing
curves are already in the form of a power law then the problems here are minimal;
the user must simply ensure that the required value of n is set in BCRP if it is
constant for all links or is input for each individual link.
If however the existing curves are of a different form it will be necessary to define
power-law curves which, in some sense, give a “best fit” to the existing curves.
There are many ways in which this can be done, depending both on the definition
of “best fit” as well as on the shape of the existing curves.
Different countries may well have different recommended forms. We illustrate
here one method which may be used to convert curves of the form recommended
by the UK Department of Transport, currently referred to as DfT, but for historical
reasons also referred to as DTp.
t (V ) = d / S (V )
S0 V ≤F
S (V ) = S1 + ( S1 − S0 )(V − F ) / ( C − F ) F <V ≤ C
S1 / (1 + S1 (V − C ) / 8dC ) V >C
Where:
t is the link time (in hours),
d is the link distance (in kilometres),
S is the link speed (in kph),
V is the link flow (in PCU per hour),
S0 is the “free flow” speed,
S1 is the speed at capacity,
F is the maximum flow at which free-flow conditions hold
C is the capacity
We wish to fit the above curve, in the range V < C, with a function:
t= t0 + aV n
The three unknowns, t 0 , a and n, are fitted from the following constraints:
1) Free flow times must be the same (hence t 0 = d/S 0 );
∫ t ( v ) dv / C
0
t0 + aC n +1 / ( n + 1) C
t =
=
t0 + aC n / n + 1
t0 + ( t ( C ) − t0 ) / n + 1
=
t = t0 + (1 − F / C ) ( ln ( S0 / S1 ) / (1/ t0 − 1/ tc ) − t0 )
Hence:
( )
n = ( r − 1) / (1 − F / C ) ∗ ( r ln r / ( r − 1) − 1) − 1
=
where r S=
0 / S1 tc / t0
A section of FORTRAN code which does the above job is given below:
R = S0/S1
XN = 0.0
IF (R.GT.1.0) THEN
XBOT = (1.0 - F/C) * (R*ALOG(R)/(R - 1.0) - 1.0)
IF (XBOT.NE.0.0) XN = ((R - 1.0)/XBOT) - 1.0
END IF
and the following table gives values of n for ‘typical’ DTp parameters (where the
speeds are in kph and the flows/capacities in pcu/hr):
S0 S1 F C N
50 50 0 600 0.00
80 66 3400 4800 6.33
S0 S1 F C N
67 47 0 4000 1.27
61 27 0 3400 1.72
For the range of flows above capacity, DTp and SATURN curves both have a
linear relationship, although the slope of the curve in SATURN is determined from
the length of the time period simulated (parameter LTP) while that for the DTp
curve is set by the parameter ‘8’ in the above equation which has units of 1/hours.
To set up the same slope in SATURN it is therefore necessary to set LTP = 15,
i.e., 1/4 of an hour since the slope equals 0.5*LTP.
Having set up the buffer network the user may now begin to code parts of the
network in the format and detail required for a simulation network, starting with
those nodes where the extra detail is most required and working outward as far as
may be required. Since any node that appears in both the simulation and buffer
networks is ignored in the buffer network nodes may be coded as simulation
nodes without having to remove them from the coded buffer network. One
advantage of coding SATURN networks in this way is that the user gains coding
experience by degrees and thereby makes fewer mistakes overall.
Note that in following this procedure the nodes which lie on the boundary between
the simulation and buffer networks at any stage MUST be included as external
nodes in the simulation network unless one uses the AUTOX facility as described
in Section 15.12.
S0 + ( S1 − S0 ) * (V / F ) V ≤F
S (V ) = S1 + ( S 2 − S1 )(V − F ) / ( C − F ) F <V ≤ C
S 2 / (1 + S 2 (V − C ) / 8dC ) V >C
Where:
S 0 is the free flow speed
S 1 is the “intermediate” break point speed
S 2 is the speed at capacity C
A “best-fit” value of the power n may then be determined by the equation:
n= ( R1 ∗ R2 − 1) / ( B1 + B2 − 1) − 1
where:
B1 =
( F / C ) R1 log R1
( R1 − 1)
B2 =
(1 − F / C ) R1 ∗ R2 log R2
( R2 − 1)
R1 = S0 / S1
R2 = S1 / S 2
Our thanks are due to Yazid Arezki for working out the above formula, thus
confirming earlier numerical values calculated by Devon County Council.
In previous versions of the manual, a set of calculated values of n for “standard”
UK road classifications were provided in a Table (often referred to as ‘Table 15.9’)
with a shorthand description of each road type.
With the release of 10.9.24, the table was withdrawn as its inclusion was only
intended to illustrate a range of ‘typical’ values of ’N’ which may result, using the
formulae above, from piece-wise linear curves. The values used in the table were
originally taken from COBA data sets of circa. 1990 and were not, in any sense,
recommended as up-to-date values for different road types In practice however,
users were applying the Table 15.9 curves without undertaking the necessary
critical review required for their specific application.
To assist users, an illustrative comparison of a ‘typical’ COBA piece-wise curve
and the equivalent SATURN Power curve is provided overleaf in Figure 15.2; The
data parameters used (listed below) and the best-fit value of N are for a (nominal)
dual 3-lane motorway with 15% HGVs. Figure 15.3 re-plots the same data as
delays versus flows (which is the form in which it is applied in assignment
models).
Further advice is provided to assist in converting curves into a form suitable for
SATURN in the following section.
The equivalent SATURN parameters for the curves illustrated above (with
various assumptions on the other COBA parameters required) are shown below.
S0 S1 S2 F C N Description
Note: speeds S 0 , S 1 and S 2 in km/h whilst breakpoint F and capacity flow C are in pcus/h
Figure 15.2 –COBA11 Piece-Wise v SATURN Power-Based Speed-Flow Curve (15% HGV)
♦ Define a set of default speed flow records within the ‘33333’ data records,
identified by a ‘D’ in column 1 and with entries for free-flow speed, speed at
capacity, capacity, the power ‘n’ and a (non-zero) capacity index in the
“normal” fixed columns; see 6.6 for the detailed format;
♦ For each buffer link to which the above parameters apply leave blank (or code
as zero) the free-flow speed/time, capacity speed/time, capacity and power
but include the distance and capacity index. The program then substitutes
the default speeds, etc. for the missing records. (In fact it is not even
necessary to code the distance if the SHANDY option is in effect; see 15.10.)
N.B. It is necessary to leave all four of the above entry fields blank/zero; if
one of them is included then it assumed that the other entries of zero are all
valid entries and the default option is not applied.
Thus all links with the same capacity index will have an identical speed-flow curve
plus capacity. Note that the actual times need not be identical since these will
depend as well on the distance which is coded separately for each link.
One advantage of this option is that you can make “universal” changes to the
speed-flow parameters for a set of links by simply changing a single record rather
than several. The option should also be extremely useful for networks which are
defined by graphical input in some form; here link distances can be calculated
from node co-ordinates so that the only input information required from the user
(apart from whether a link is one-way or two-way) is an index which determines
the remaining parameters.
An example of an input data file using these conventions is illustrated below
where “default” indices 1 to 14 are equivalent to the “typical” DfT parameters
defined above. Thus link 6-7 has a length of 90 metres but a capacity of 1400, a
free-flow speed of 63 kph, etc. as taken from the previous “D” record for capacity
index 4.
33333
D 90 76 5200 5.9 1
D 79 70 4800 5.2 2
D 70 57 1800 1.7 3
D 63 55 1400 1.9 4
D 50 50 600 0.0 5
D 80 66 4800 6.3 6
D 65 56 4400 4.7 7
D 50 30 2200 4.2 8
D 45 25 1000 3.9 9
D 35 25 600 4.4 10
D 25 15 500 3.8 11
D 67 47 4000 1.2 12
D 61 27 3400 1.7 13
D 56 20 1800 1.9 14
....
6 7 90 4
Further Notes:
1) The “D” records can appear anywhere within the 33333 records and can be
applied to buffer links that precede them.
2) By default (see note 4) below) the five required input data fields (free-flow
speed, speed at capacity, capacity, the power ‘n’ and capacity index) must
appear within the same fixed columns as “normal” buffer links; e.g., the free-
flow speed in columns 11-15. But, N.B., note that the required columns differ
under DUTCH = T; see 15.20.
3) Note that unlike standard buffer records where either speeds or times may be
used, the default speed-flow curves are only based on speeds. It is assumed
therefore that buffer records which make use of speed-flow curves have an ‘S’
in column 29 (39 under DUTCH = T).
4) Problems associated with fixed columns and differences between DUTCH = T
or F may be eliminated by setting a parameter DCSV = T under &PARAM in
the network .dat file, in which case the 5 necessary fields may appear in free
format following the D in column 1. I.e., they must appear in the correct order
and be separated by either spaces and/or commas.
3) It is quite possible that users would wish to set up curves with characteristics
identical except for the link capacity to represent say, dual 2 and dual 3 roads
with identical speeds, in which case distinct capacity indices should be used
for different lanes. The requirement for link rather than lane capacities should
be noted.
4) D records are good candidates for inclusion under $INCLUDE, see 15.30,
such that a standard set of default speed flow curves may be recorded in a
single file and applied to a wide range of networks.
5) Default speed-flow curves may also be applied to simulation links where
record 2B (see 6.4.1) excludes any time/speed and capacity data but refers
instead to a capacity index which, as with buffer links, defines the link speed-
flow curve.
♦ If a positive value has been input it checks this against the crow-fly distance
calculated from the input XY co-ordinates and prints a warning message
(WARNING 35) if they differ by more than 10 metres in absolute terms AND
by more than 5% in relative terms.
♦ If a zero (or blank) value has been input it substitutes the crow-fly distance
calculated from the input XY co-ordinates and prints a warning message
(WARNING 25).
Clearly these steps are only carried out for links where both the A-node and the B-
node have been correctly assigned X,Y co-ordinates.
The option works by “pre-reading” the co-ordinate data under the 55555 cards
before returning to read the simulation and/or buffer link records. Thus no
“interpolated” co-ordinates are available at this stage. If there are no co-ordinates
input then the option is cancelled.
In addition, if a GIS file is defined in the network data file (via FILGIS) and that file
contains curved link data under 77777 then the crow-fly distances as used to
compare against input link distances (SHANDY = T) are calculated point-by-point
along the curved links rather than end-to-end directly. See Appendix Z.
Note that this option may be usefully combined with the default speed-flow curve
facility described in Section 15.9.5 since the new distance is set BEFORE the
speeds are substituted. Thus the free-flow time is obtained from a crow-fly
distance divided by the free-flow speed. At a minimum therefore a buffer link
record need only contain an A-node, B-node and a capacity index.
It is also an integral part of the PMAKE network building options (see section 17)
when new links are created.
A summary table comparing actual and crow-fly distances is included near the
end of the line printer output file from SATNET.
2) The external simulation nodes must also be included in the buffer network
with their “buffer-only” connections - i.e., those links to or from other nodes in
the buffer network. Thus links such as E-B above would be included under
33333.
3) In constructing the joint buffer/simulation network SATNET ignores an input
buffer link if either of the nodes has already been defined in the simulation
network unless both are external simulation nodes. This means that a user
progressively re-defining a section of a large network as a simulation network
does not need to remove simulation links from the buffer network input.
However some care needs to be exercised here that all “inner” nodes have
indeed be defined as simulation nodes since otherwise spurious buffer links
may creep into the middle of the simulation network.
4) On the other hand the “data” on an ignored buffer link, e.g., the time and
distance, is not totally ignored in that it is compared to the comparable
simulation data in order to check for self-consistency. In addition the buffer
link data may be used to supplement the simulation data as explained further
in Sections 6.6, 15.13 and 15.14.
5) We also note that problems may occur due to U-turns from the simulation
network at the simulation/buffer boundary as described in detail in Section
18.9.
erroneously added. Its use is recommended for very simple networks, for
example a network consisting of a single simulation node connected to ‘n’ un-
coded external nodes, set up to simulate an n-way junction in isolation, an
example of which is given below, or for networks set up from recoding existing
buffer networks or when coding using PMAKE (Section 18).
The AUTOZ option removes the need to explicitly define simulation centroid
connectors (6.5) to external simulation nodes by automatically attaching centroid
connectors to every link terminating at an external simulation node and assuming
that the zone has the same number as the external node. Thus, in the above
example where node 99 is an external node connected to internal simulation node
22, a zone numbered 99 would be created, attached to link 99-22 at node 99 in
exactly the same way as if a record ‘99 99 22’ were included in the ‘22222 data’
as described under Section 6.5. When using AUTOZ all connections as defined
under 22222 should be internal connections, otherwise there will be duplication,
and AUTOZ should only be invoked when ALL external nodes are pure cordon
points, not when they are links between the simulation and buffer networks. In
effect this restricts the AUTOZ option to pure simulation networks without a buffer
network.
AUTOX and AUTOZ can both be selected at the same time - and in fact the most
useful case for applying both is the case of coding a single simulation junction as
they remove the need to code ANY external simulation nodes or zones. An
example of coding a 4-way junction, node 44 (as illustrated in Section 16.1), is
given in full below. The coding implies that nodes 43, 55, 45 and 16 are external
nodes, each one of which is connected to an external zone, also numbered 43,
55, 45 and 16.
Note that the AUTOX option infers that the link 44-43 does not exist (i.e., is one-
way from 43 to 44) since there are no turns coded as entering it, and that the time
and distance on link 44-45 will be 7 seconds and 100 metres. Equally under
AUTOZ zone 43 is entry (or origin) only while zone 45 is exit (or destination) only.
&OPTION
&END
NODE 44 CODED ALL ITS OWN
&PARAM
AUTOX=T,
AUTOZ=T,
&END
11111
44 4 3 4 61 85 0 45
45 0 0 0
16 2 25 200 0 1700 1 1 1600X 2 2
15.13 Supplementary Data for Simulation Links Using Buffer Network Inputs
In general all the necessary data for links in the simulation network is defined
within the ‘11111 data cards’ described in 6.4; e.g., the link travel time, link
distance and number of lanes. It is however possible to use the ‘33333 data
cards’ to define extra simulation link data which is not required by the simulation
proper but which might be useful under other circumstances. One example of this
is the link capacity index which is used to distinguish certain “classes” of links in
summary statistics. If a link A-B is included in the buffer network data with a
capacity index of, say, 5 but was previously defined as a simulation link, the
capacity index of 5 is assumed to apply as well to the simulation link A-B. Using
the BEAKER option - see 6.3.1 - the index may also be associated with turns out
of A-B; setting BEAKER to .TRUE. is highly recommended.
Similarly any extra “KNOBS” data defined for duplicates of simulation links are
also assumed to apply to those links. See Section 15.14.
A further important application concerns “external simulation links”, i.e., the
simulation link from an internal simulation node A to an external simulation node
B. By definition the travel time on the “in-bound” link B-A is fixed, being a
simulation link, with - in effect - infinite capacity; any additional delays or capacity
restraint on that link are associated with turning movements at A. On the other
hand assuming a fixed travel time and infinite capacity on the “out-bound”
direction A-B would not be entirely realistic since turning movements at B are not
included in the simulation.
It is thus possible to define flow-delay/capacity-restraint relationships on out-
bound external simulation links such as A-B above using exactly the same form of
link flow-delay curve as is applied to buffer links - see Section 5.4. In order to do
so the user must include A-B within the “33333 data cards”.
Note that for external links connected directly to cordon zones there is perhaps
not much point in worrying about flow-delay since all trips go to the external zone
regardless of conditions on the link. However the effect can be important on
external links between the simulation and buffer networks, as otherwise it could
lead to a situation where there is (effective) capacity restraint in the simulation
network and in the buffer network but not at their interface.
In addition if the AUTOX option is used to define external simulation nodes and
links - see 15.12 - and the link in question is 1-way outbound (A to B in the above
example) so that times and distances are given default values then these default
values are over-ridden by any data defined under the 33333 records.
Note that it is possible to have negative values for Knobs data which contribute to
generalised cost but only if the total link fixed cost does not go negative. See
7.11.2. Negative Knobs values should be used with caution although they may
sometimes be useful, for example, to make certain links more attractive to traffic.
The weighting coefficient for KNOBS data defined within the 88888 data set (6.11)
is defined in the “normal” way as a positive number; i.e., it is not possible to create
a negative cost by having positive data with a negative weight.
Note that items of Knobs data which do not contribute to link generalised costs
(e,g., for applications as described in 15.14.2) should have their 88888 weights
input as zero (or blank) to avoid being confused with, e.g., tolls.
Note that if the data was originally stored at the end of every buffer record
(KONAL= T, method 2) in 15.14.5) it is not strictly necessary to delete it from the
33333 data since, if KNBFIL is set, the “end of line” buffer data will never be
processed.
15.15.2 NUC
Different values of NUC should be used if it is desired to have greater or less
resolution of cyclical flow profiles at a particular junction. For example, if the entry
profiles to a roundabout are virtually flat there is no particular reason to divide the
cycle period into a large number of small time units which will be virtually identical
to each other. Here a small value of NUC gives the same results at less
computing cost. On the other hand traffic signals with a large number of relatively
short stages benefit from the extra resolution of short time units, i.e., a large value
of NUC.
Traditionally, and as a very general rule in SATURN, our advice has always been
to stick to the global values unless there is a very good reason for changing NUC
locally. However, post 2007, the benefits of increasing NUC under certain fairly
specific local circumstances have become better recognised and extra parameters
have been introduced in 10.8 to help deal with these issues.
In particular using larger values of NUC at complex signalised junctions may have
benefits for improved convergence.
Thus, for example, with X-turners at traffic signals which are partially blocked by
opposing traffic during a green phase, it is important for the simulation to be able
to accurately estimate the point during the phase at which gaps begin to appear in
the opposing traffic and the X-turns can begin to clear (albeit possibly very slowly).
This is particularly so if the green phase is relatively short compared to a time unit
and/or the lane is shared.
For example, if NUC is small and the basic time unit is, say, 15 seconds and the
duration of a blocked phase is only 10 seconds then the simulated results may
differ if the phase is entirely contained within a single 15-second time unit or if it
overlaps two time units. (N.B. The differences between the two may not look that
large in some respects but they may not be negligible either. For example if the
calculated delays were 40 and 45 seconds the “error” of 5 seconds may be small
compared to the differences between modelled and observed times; on the other
hand a sudden jump of 5 seconds may be relatively very important in terms of
convergence between simulation and assignment.)
Thus, for signals with X-turns, we now recommend that NUC should be large
enough so that the minimum-length stage time is greater than three time units.
E.g., if LCY = 100 seconds and the shortest stage time is 7 seconds then NUC
should be at least 43 (i.e. the basic time unit should be 7 / 3 seconds or 2.33
seconds and with LCY of 100, the value of NUC set should be equal to 100 / 2.33
or 43 rounded to the nearest integer).
Indeed, there is a strong case for setting NUC = LCY at signalised junctions with
X-turns so that the time unit corresponds to 1 second in order to achieve
maximum “resolution” and every stage transition occurs at an “integer” time unit;
see point 3) below under AUTNUC.
In versions of SATURN prior to 10.8 there was an upper limit of 25 on the value of
NUC both globally and at individual junctions; in 10.8 this has been increased to
125 for individual junctions or for junction types (i.e., NUCJT()) but the maximum
of 25 is still retained as the global default value. Other relevant changes in 10.8
include:
1) Warning 94 and/or Serious Warning 153 have been introduced to detect
values of NUC per node which are judged to be too small / seriously too
small.
2) A subscripted parameter NUCJT(j), j = 1,5, has been added to set a default
value of NUC for all simulation junctions of type j. NUC continues to function
as a global default which may be over-ridden by NUCJT for specific node
types.
3) If AUTNUC = T then, in processing a network .dat file, SATNET will
automatically choose an “optimum” value of NUC per node if the default value
is judged to be too low (up to the above-mentioned maximum of 125). Thus,
in extremis, AUTNUC will set NUC equal to the cycle time for that junction so
that one time unit equals one second.
N.B. Increasing NUC for all nodes may lead to problems with array dimensions
being exceeded and, indeed, this is one reason why in the past users may have
been forced to reduce NUC from the (former) default value of 15 down to, say, 10.
Indeed, post 11.1, the default value has been decreased to 10. There may
therefore be a strong case for using NUCJT to selectively set relatively low values
of NUC for, say, roundabouts and priority junctions (NUCJT(1) = NUCJT(3) = 5)
where resolution is not an issue but larger values for signals (NUCJT(3) = 25)
such that the overall space requirements are not increased.
Equally increased NUC values also increases the CPU time required to carry out
a simulation although, generally, this does not lead to significant increases in
overall run times since, particularly in large networks, it is the assignment that
takes up almost all the CPU time.
We may further note – see also the final paragraph in 15.15.3 - that having
different values of NUC at two adjacent junctions has no real effect on the transfer
of cyclic flow profiles between them since CFP profiles will be suitably
transformed.
Final thought: Low NUC values do not necessarily lead to “errors” in the
simulation; what they do do though is to introduce a certain level of “clunkiness”
into the simulation which may be counter-productive in terms of convergence.
Increasing NUC values in an existing validated network is unlikely to change it into
a non-validated network but it may improve convergence and it may produce
noticeable changes at a small number of turns.
In addition release 11.2.4 introduced a new test to detect a simulation node with,
say, LCY = 60 while all its immediate neighbours had LCY = 70. Serious Warning
183.
Note that having different values of NUC at two adjacent junctions has no real
effect on the OUT-IN transformation since an OUT profile evaluated with, say, 10
time units would be suitably expanded into an IN profile with, say, 15 units
provided of course that both junctions have the same LCY.
The “flow” on AB may, in theory, be defined in five different ways; i.e., the flow
along:
AX - the entry flow onto the link,
XZ - the exit flow to the centroid,
XY - the “mid-link” flow,
ZY - the entry flow from the centroid, and
YB - the arrival flow at the stop line at B
For uniformity throughout SATURN we assume that the “link flow” is always taken
to be the mid-link flow, i.e. the flow on the link once all traffic destined for the zone
has been removed and before any new traffic has joined from the centroid. Thus
as defined the link flow is probably lower than the flow that might be observed on
the link in reality, although the fact that the link has been connected to a zone
implies that the flow level probably does vary along the link.
This therefore is the definition of link flow as used, e.g., in comparing modelled
and observed flows (see Section 15.6) and is the (default) link flow as annotated
by program P1X. By contrast the “ARRIVE FLOW” or “Downstream Flow” as
printed out by the FLOW-DELAY tables and illustrated in Table 17.1 corresponds
to the stop-line flow, YB above.
In the case of Multiple User Classes – and stacked O-D trip matrices – it is further
assumed that all the various stacked matrix levels will be in the same units and
that their assigned flows may simply be added together.
Clearly it is vital for users, when importing data into SATURN from external
sources, to check the units of the external data and to adjust as necessary. For
example, this applies to the importing of trip matrices (which may be in vehicles/hr
as opposed to PCU/hr), speed-flow curves, etc. etc.
Depending on the particular application the interpolated nodes may either only
use “real” links - in the sense that one-way links are only used in one direction - or
non-directional links.
This facility is particularly useful in defining bus routes, not only in terms of
reducing the amount of data to be coded, but also because the route definitions
do not need to be altered if the network is changed so that nodes are inserted
and/or removed from the original network.
Note, however, that in order to use this facility node co-ordinates MUST be
defined (although, strictly speaking, only for those nodes which lie on the
interpolated path).
WARNING: If two successive nodes to be interpolated are some distance from one
another and there are multiple possible routes, interpolation may not necessarily
find your desired route; the solution in this case is to define nodes which are much
nearer together and for which the route to be interpolated is unambiguous.
Currently interpolated routes may be defined within the following programs:
♦ P1X to define bus routes, joy rides and GIS alphanumeric link names.
generated within SATALL (based on the errors from all links) may be used as a
rough guide to the errors to be expected on any single link analysed.
If the route passes through more than 6 nodes the list of nodes is continued on a
second (or even third) record starting in cols. 16 - 25.
N.B. The strict column formats do not apply if EZBUS = T independent of the
value of DUTCH.
stored on a SATURN UF file has a code associated with it; free-flow travel time,
for example, is coded as 1803 so that asking for free-flow travel time to be
annotated in P1X causes the program to “read” and annotate record 1803. The
same effect can be obtained by referring to 1803 directly.
Note that the final digit in a DA code indicates what “type” of data is stored. Thus
all “integer” variables are stored in codes ending with a 4 whereas all “real”
numerical data (i.e., numbers which may include a decimal place such as free-
flow travel time above) end with a 3 (e.g., 1803). Post 10.7 real arrays may also
end with an 8 (and, eventually, integer arrays with a 9).
A second point to note is that the coded data arrays refer to either: (a), simulation
links; (b), simulation turns; or (c), assignment network links (which include both (a)
and (b) plus all buffer links) so certain DA codes will not be relevant under certain
circumstances.
The main reason for introducing code numbers is to increase flexibility without a
massive increase in programming effort, particularly since certain data arrays are
optional whereas others are mandatory. Thus free-flow travel times are always
defined whereas the link flows for user class 4 may not be.
A full list of the Dirck Access codes used within a particular network (*UFS etc.)
file may be listed interactively using the auxiliary program DALOOK or partial lists
generated by P1X etc. See also Appendix J for a full list. Each array has a short
title associated with it which specifies its contents; these titles are defined in
SATNET either as default text or as read from an (optional) supplementary file
SATTIT.DAT which also gives very useful general information about how DA
codes are used.
Note that not all DA arrays will necessarily be useful to users, for example the
arrays containing “packed” data will be largely unintelligible (but see 11.10.6).
An explanation of the specific codes relevant to capacities is given in Section
8.9.5 and to times and delays in Section 17.10. See also Appendix J for a full list.
codes were used up. Thus class- specific flows were stored in arrays 3803, 3813,
3823, etc. for user classes 1, 2, 3, etc. up to 3893 for user class 10. 3903
however was reserved for something else so that an 11th user class could not be
accommodated.
The solution adopted was to add class-specific digits BEFORE the basic code so
that with 11 classes the DA flow codes became 3803, 103803, 203803, etc. up to
1103803. The effect was similar to having decimal codes such as 3803.0,
3803.1,3803.2 but retained the basic principle of integer codes.
At the moment such codes are used in networks with more than 10 user classes,
in .UFT files to store data from multiple time periods and, in addition, to extend
header records (e.g. 100104 adds extra data to 104) so that old SATURN UF files
have the same array lengths as the latest one (to ensure upwards compatibility).
Equation 15.2
Cm S m (1 − VM S M )
=
GS M
where S m is the saturation flow of the minor arm, V M and S M are the flow and
saturation flow of the major arm and G is the gap value.
Hence C goes from a maximum S m equal to its saturation flow at zero opposing
flows down to zero at V M = S M (or, strictly speaking CAPMIN; see 8.2.3)with a
power defined by G.S Mi . In general TRRL models predict a linear relationship
between C and V M so that in order to reproduce this same form in SATURN it is
necessary to set G = 1/V M , i.e., set the gap parameter GAP to the inverse of the
saturation flow of the controlling arm(s).
Very often the GAP values derived in this way seem small, particularly when
interpreted strictly as a gap in traffic that entry traffic would “accept”. For example
if the controlling saturation flow were 3,600 pcu/hr then GAP should be one
second.
It must however be appreciated that GAP is essentially a parameter fed into a
model. Such models are only approximations to reality and contain a number of
intrinsic errors (“specification errors”) which, to a certain extent, can be corrected
or counter-balanced by changes to the model parameters. For example, the gap
acceptance model in SATURN assumes random (Poisson) cross traffic (ignoring
for the moment cyclical effects) whereas in reality one knows that traffic tends to
come in surges, the effect of this being that the random model tends to under-
estimate capacity. Empirically, if we accept the TRRL relationships as “correct”,
then the best value to choose for GAP is 1/S M .
We may also note that the standard default value of GAP set by SATURN is 5.0
seconds which is almost certainly on the high side, causing the SATURN
simulation to under-estimate capacities. The reasons for choosing 5.0 as a
default in the first place are largely historical and arbitrary. The reasons for not
changing it since are (a) the fact that best values almost certainly vary from one to
another (hence it was made a junction-specific parameter in later versions of
SATURN); and (b) setting the default to a more reasonable value might
discourage users from deciding on more suitable values.
The same principles apply to the choice of GAPR and GAPM; i.e., that they are
first and foremost model parameters which should be interpreted only loosely as
acceptable gaps. However with priority junctions it is difficult to choose a single
value of GAP which makes the dependence on ALL major flows linear since each
major flow may have a different saturation flow.
Not creating a ufc file will not affect the normal analysis or use of the .ufs file,
except clearly, if .ufc does not exist, then none of the above mentioned analyses
may be invoked.
Note that .ufc files etc. are only used under the standard Frank-Wolfe link-based
algorithms (MET = 0; see Section 21).
Under method (3) the route information is stored within a “UFO” binary file; see
15.23.6.
only an approximation and the flows and assigned routes etc. differ. Although the
higher the level of assignment convergence, the better the approximation will be.
See 15.23.4 for a discussion as to how the parameters NITA_S and UNCRTS
may be set to ensure optimum convergence.
The differences between “true” and SAVEIT assignments can have important
implications for, e.g., skimmed matrices as used for economic evaluation or
variable demand models (see 7.8.6 and 15.27.6), Select Link Analysis (see 15.19)
or PIJA analysis (13.3.12). For example, the total flows on a link generated by a
select link analysis may not exactly equal those generated by the original
assignment.
However, it also needs to be borne in mind, that the “errors” associated with
SAVEIT are just one extra source of “noise” to be added to the non-convergence
errors from SATALL proper (see 2.1 and 9.5). Essentially the SAVEIT assignment
is an approximation to an approximation. Therefore, a “perfect” SAVEIT
assignment is not a guarantee of an “error-free” economic evaluation although it
may help.
♦ The average GEH difference statistic comparing the as-assigned flows and
the SAVEIT flows;
♦ The percentage difference between the total pcu-hrs calculated using the
assigned and SAVEIT flows;
both iteration and user class. This is possible because the times per iteration are
constant between all user classes on the same Frank-Wolfe iteration; the costs
may differ but only because the fixed costs per user class differ and, since the
fixed costs are fixed throughout (by definition), it is straightforward to construct the
costs per iteration/UC by adding (.UFC stored) times per iteration to fixed costs by
user class.
This means that the .UFC files produced under UFC109/111 will be reduced in
size by a factor of 1/NOMADS with only a very small overhead in reconstructing
costs as required for secondary analysis. However, for a single user class we
continue to store cost and there is no reduction in size.
Note that the default value of UFC111 is T, meaning that, post 11.2, the option to
output times rather than costs is virtually always invoked for MUC UFC files and
indeed UFC111 should only be set to F for test purposes.
♦ If the original .ufc file did not converge sufficiently well a better level of
convergence may be achieved by increasing NITA_S.
♦ UFS files can be sent without their .ufc files as the latter can be easily re-
created.
♦ By adding an argument UFO to the command line a .UFO file may be created
at the same time as the .UFC file (see 15.23.6 below).
♦ Post 10.8 it also updates the .ufs file to correctly set SAVEIT and/or SAVUFO
to T so that subsequent analysis programs such as P1X will “know” that the
.UFC/.UFO files should exist.
♦ Post 11.1 if the original network were run using OBA then SATUFC will, in
effect, generate a set of O-D paths in a .UFC file which approximate the same
final set of link flows. Thus the (newly created) .UFC file and the (original)
.UFO file fulfil similar functions in terms of post-assignment analysis, e.g.,
select link analysis, but the .UFC file has the advantage that it may be used in
certain programs such as SATPIG where the .UFO file may not.
♦ Note that if using SATUFC with either a path-based or OBA original solution it
may make sense to copy and rename the original .ufs file so the two sets of
solutions may be used independently.
15.23.6 Alternative Formats for Saving O-D Routes: UFO and UFQ files
The .ufc files described above are relevant to assignments done using the Frank-
Wolfe link-based algorithms (MET = 0). Path-based and origin-based assignments
use their own particular techniques to preserve route flow information and, in
addition, link-based routes may also be converted into an “extended” UFO (OBA)
format.
Thus path-based assignment (see 21.4) stores the exact path data in .UFQ files
while OBA stores the equivalent “splitting factors” in .UFO files (see 22.5.2). In
both cases the information saved is “exact” unlike the link-based .UFC files which
(see 15.23.2 above) may be an approximation based on an extra SAVEIT
assignment.
We note that path-based UFQ files are restricted to single user class assignments
only so that, in terms of practical applications, they are not really relevant and they
are not considered further.
In principle the same forms of analyses (such as those listed in 15.23.1) may be
carried out under all 3 methods, although the precise algorithms used to do so
may differ. Thus .UFC-based algorithms based on a Frank-Wolfe assignment
recreate each individual O-D path used in the assignment in order to analyse
them as appropriate, path-based algorithms analyse explicitly saved paths in the
same way while UFO-based algorithms use “splitting factors” in a “single-pass”
per origin without explicitly re-creating O-D paths (see 22.5.2). Note that, in
practice, some of the necessary programming work may not have been done yet
for certain combinations of method and analysis.
loop over the number of iterations N which UFO avoids so that, in principle, it may
be N-times faster).
The downside of creating a .UFO file is that, if the Frank-Wolfe solution is not
particularly well converged and contains many examples of cyclical flows,
eliminating those cyclical flows may lead to a significantly different set of flows
(although arguably they may be nearer to a true Wardrop Equilibrium solution)
which causes more confusion than benefit.
Finally note that .UFO files may equally be converted into equivalent (or virtually
equivalent) .UFC files using SATUFC - see 15.23.5 above – and that an
alternative form of .UFO file may be created based on aggregated “spider”
networks – see 22,5.3 – which is generally speaking much faster to use for
analysis
15.23.8 Final Comments: The Uniqueness of Route Flows and Other Limitations
In applying the various analyses available within SATURN based on specific O-D
routes users must appreciate that all such outputs must be taken with a rather
large pinch of salt.
Firstly, it must be appreciated that O-D routes are not uniquely specified by
Wardrop Equilibrium (see 7.1.6) and that the routes generated by the Frank-Wolfe
algorithm (plus OBA) are, to a certain extent, arbitrary. Thus, strictly speaking,
Wardrop Equilibrium only identifies those O-D routes that may be assigned
positive flows but not the precise split of traffic between those routes. A simple
example is given in Section 7.1.6 to demonstrate the non-uniqueness of origin or
user class based flows between two parallel routes even when the total link flows
are uniquely specified. The final assigned route flows may simply be due to some
minor artefact of the algorithm used.
From which it follows – and this is the important point - that any outputs from a
route flow analysis such as a Select Link Analysis or skimming, say, distance from
a forest (15.27.6) are also non-unique and, therefore, prone to being arbitrary.
A knock-on impact of skimmed times, distances etc. etc. being non-unique is that
any further analyses based on those skimmed matrices becomes non-unique.
This therefore may introduce further problems with economic evaluation packages
such as TUBA or external demand models (VDM) which are not based on
generalised cost matrices generated by SATURN (which are unique); see also
7.8.6.
Secondly, there are potential problems with the “all or nothing” division of O-D
routes into “used” and “non-used”. Thus a “rat run” route which includes a large
proportion of very low capacity links may be allocated O-D route flows if it is a
minimum cost route, whereas an alternative route along a series of high-capacity
motorway links may not be used at all if its generalised cost is (just) 1 second
above the minimum. Small changes in either the network or trip matrix may
reverse either allocation.
On a more positive note one could argue that, given its sequence of operations,
the Frank-Wolfe algorithm is unlikely to produce a totally unbalanced or extreme
set of O-D route flows. Equally it treats all origins equally and simultaneously and
will not therefore produce route flows which are “biased” by origin. Its outputs
might therefore be charitably described as “plausible” – but never perfect.
The situation, however, becomes worse if we consider not just the OD route
patterns in a single network but any comparison of the route flows in two networks
which differ slightly from one another. Here the “noise” generated by the above
two problems may render any comparisons extremely tenuous.
To a certain extent the problems with route flows are simply an inevitable
consequence of the fact that more you disaggregate data the more unreliably it
becomes. There are far more route flows than, say, link flows and the flows per
route are much smaller than the flows per link. These problems are, however,
aggravated by the problems of non-uniqueness and the lack of an acceptable
behavioural model of route choice. What is required, possibly, is an extension to
Wardrop Equilibrium to deal with route choice and which would operate at a far
more disaggregate level than total link flows. This issue is discussed further in the
following section, 15.23.9.
15.24.1 Introduction
P1X, SATDB and SATLOOK contain various options (with a large degree of
overlap) which allow “trees” or minimum cost paths to be built from an origin to a
selected destination zone or indeed to all destinations. The “cost” used to build a
minimum cost path is defined as a linear combination of time and distance (or
distance-related parameters) as follows:
c =a1t + a2 d + ∑ bk d k
PPM and PPK will already have been defined by the user during the SATURN
runs and, if the user wishes to re-create the same or similar trees, the same
values should be selected. These values may also have been user-class specific.
However alternative cost trees may also be investigated; e.g., you may run
SATURN on the basis of minimum time trees but then look at minimum distance
trees.
Distance, KNOBS data and tolls are, by definition, fixed. However time may be
defined in a number of different ways (e.g., with or without penalties added) and
calculated at different points during the programs as elaborated below in 15.24.2,
15.24.3 and 15.24.4.
Note that these discussions refer equally to “time skims” as discussed in 15.27.
Therefore these times would be used to re-construct the routes built at each
stage of the assignment procedure; they constitute the “real” routes as
assigned.
(N.B. The times as defined above are only preserved on a UFC file if SAVEIT
= T, so that only then can actual routes be re-created. In actual fact what are
saved are NOT the times but the costs, i.e., including the fixed components
appropriately weighted. Therefore it is not possible to use, say, the second
set of link times in a new definition of generalised cost, although there is
probably very little reason why one should ever want to do that - the important
thing is to be able to re-create the routes to which trips were assigned at each
iteration.)
3) At the conclusion of the assignment, times are also calculated using (5.1) with
V equal to the final assigned flows. These are therefore the “best” times as
calculated by the assignment but, somewhat perversely, they are never used
by the assignment to build routes. These times should therefore be used to
calculate the minimum cost routes at convergence, e.g., to calculate an O-D
cost matrix for evaluation purposes.
(N.B. Although routes calculated using the above times were not necessarily
generated by the assignment this is not to say that they definitely were NOT.
Indeed in most cases the final routes will correspond to one and probably
more than one of the routes actually generated so that they are not
necessarily unrepresentative. However some care should be exercised in
their analysis.)
4) When the simulation stage is run after the assignment the delays on turns in
the simulation network are re-calculated by simulation. If the model has
converged properly these delays should differ by only a small amount from
those calculated by the assignment (and be identical in the event of perfect
convergence). These times are somewhat more “realistic” than those
calculated at the end of the assignment and therefore the “best” estimate of
O-D costs would be obtained using these costs. Again the same caveat as
above applies to the routes actually calculated using these costs; i.e., they do
not necessarily correspond to routes generated by the assignment although
they are unlikely to be “unrepresentative” routes.
Times (1), (3) and (4) can be selected by the user via menus in SATDB,
SATLOOK and P1X. Times (2) are effectively only available through the options
to “loop” over each iterative set of costs to construct each built tree in turn.
distances so that the “true” average distance may also be greater or less than a
skimmed tree.
The problem becomes more acute with quantities such as tolls which are much
more “off or on”. Thus if an O-D pair uses two routes, one of which is tolled and
the other is not, then it is somewhat hit or miss whether the single skimmed route
gives zero toll or the full toll.
WARNING! Skimming O-D data from single path trees may therefore produce
unreliable or misleading results. The only quantity which may be skimmed
absolutely unambiguously from, say, the minimum cost tree is cost itself.
In fact the only arguable advantage to skimming a tree as opposed to skimming a
forest is that it is much faster – only one tree needs to be built per origin as
opposed to a forest skim where separate trees have to be built for each Frank-
Wolfe iteration; e.g., it may be 50 or 10 times more time consuming.
Cumulative link/node skims may also be obtained for individual links using the tree
building option within SATDB; in this case a distance skim, for example, would be
the summed distance from the origin to the end of a link. Similarly in P1X time
and distance skims are automatically accumulated for O-D trees plotted
continuously there.
♦ construct the skimmed quantity from elements in the base network file;
♦ select a link property which is stored in a SATDB data base column (which in
turn may be read in from an external ascii file) (N.B. This option is only
available when SATLOOK is accessed via P1X and therefore SATDB may
be accessed as well; see 11.11.19);
∑ T S = ∑V S
ij
ij ij
a
a a
where the left hand side of the equation represents the total, say, vehicle-kms
summed over ij pairs and the right hand side represents the same quantity
summed over links. S ij and S a refer to the property being skimmed e.g., distance.
Note that some care needs to be exercised in the definition of V a in the above
equation since it must be: (1) the link flows from the trip matrix itself (e.g.,
excluding any fixed link flows); and (2) demand as opposed to actual flows. We
return to this point in the following section.
We may also note that forest and tree skims will give identical results for O-D pairs
where the assignment has only generated a single route. Typically this occurs for
very near O-D pairs or for very uncongested sections of the network.
For further information on SAVEIT and forests please refer to sections 15.23 and
15.26.
We also note one additional caveat with forest skims which is that, since the path
flows generated by a Wardrop Equilibrium assignment are not, strictly speaking,
unique (see 7.1.6), neither are skims taken over those paths (see 15.23.8). The
example given in 7.1.6 as to which origin(s) pay tolls illustrates the problem –
although, in practice, the problem is much more likely to be that the model shows
the two origins paying tolls in slightly different proportions rather than the extreme
“all or nothing” case where one origin pays tolls and a second does not. Note (7)
in 15.27.6 discusses this issue further.
∑ T S = ∑V S
ij
ij ij
a
a a
where the left hand side of the equation represents the total, say, vehicle-kms
summed over ij pairs and the right hand side represents the same quantity
summed over links (and displayed in output tables such as Table 17.3 as
described in Section 17.9).
Firstly, such an equality never holds if the flows V a correspond to actual link flows
and the summation corresponds to, say, total pcu-kms within “this time period”
(see Table 17.3). In particular, there is no such thing as an “actual” trip matrix for
use on the left-hand side, only a demand matrix.
Secondly, if the matrix S ij has been skimmed from a (single path) tree then the
equality will not hold in general (unless, most unlikely, all O-D trips have been
assigned to single, not multiple, paths).
The equality may hold if: (a) T ij is a demand matrix; (b) S ij has been skimmed from
a forest and (c) the link summation includes both this and the following time
periods (the “Totals” column in Table 17.3).
However, even these conditions may not be sufficient to guarantee exact equality.
For example, if the link flows V a are obtained from the “true” model run and the
skimmed matrix is based on a forest obtained using an approximate SAVEIT
assignment (15.23.2) then the equality will only be approximate, limited by the
lack of perfect convergence within both the true and the SAVEIT assignment.
More specifically, if S represents time then the parameter AFTERS must equal
0.5; see 17.6.2.
Conditions becoming slightly easier if the quantity S refers to the “generalised
cost” used by the assignment as opposed to a particular component such as time
or distance (or if, say, the assignment is based on pure time). In this situation the
skim matrix S ij is effectively the same whether it is obtained as a minimum cost
matrix or as a forest skim to the extent that under perfect Wardrop Equilibrium all
used paths have equal and minimum cost. Clearly if the convergence is not
perfect then the equality will be only an approximation.
general, reproduce the same routes and the same link flows as generated by
the assignment proper; they are only an approximation. The differences are
reduced by better convergence (i.e., increased values of NITA_S) which leads
to more accurate skims but it also means more cpu time. Compromises may
be required.
(N.B. These problems do not arise if the skimmed forests are based on the
actual assignment routes as opposed to an extra SAVEIT assignment; e.g., if
UFC109 = T; see 15.23.3.1)
7) Since the precise route flows generated under Wardrop Equilibrium are not
unique (see 7.1.6 and 15.23.8) neither are the average (forest-weighted) O-D
times, distances etc. cost components which are skimmed from them, even if
convergence were perfect. In addition the average OD speed matrix obtained
by dividing average distance by average time would not be unique either. This
may have implications for the convergence of linked supply and demand
models (7.8.6) or for economic evaluation models where the
demand/evaluation model is based on a different definition of generalised
cost from the assignment model and therefore requires separate skims of
time, distance, etc. The problem is most acute if a high degree of
convergence is required. It may also have implications for economic
evaluation models when applied to relatively small schemes when any source
of “noise” in time and distance etc. matrices is a problem.
8) The problems of non-uniqueness may be further aggravated by the presence
of “residual path flows” in the solution used which may make skimmed
quantities considerably more unreliable than, say, flows. See 15.57.
9) The problems of non-uniqueness for time and/or distance skims may be
particularly evident when comparing skims from two different schemes where,
for example, there may be large differences in individual O-D times or
distances when none might be otherwise expected. These differences may be
due to network 1 using an arbitrarily different set of OD routes from network 2
and, if there is a large degree of variability between the times/distances on the
alternative routes (even though they may have identical generalised costs),
then there will equally be a high degree of variability in the time/distance
skims.
10) The degree of variability may also depend on the relative cost “weights” (i.e.,
PPM and PPK) assigned to time and distance. Thus if PPK were near zero,
implying that distance is not very important in choosing minimum cost routes,
and an O-D pair is assigned to two routes, one with short distance and one
with long, then the skimmed distance could be anywhere between the
minimum and maximum distances depending on the essentially arbitrary split
between the two routes. On the other hand, the time skims in this situation
would be far more stable since time would be effectively equal to cost and the
costs on the two alternative routes would be equal. Conversely if PPM is small
then distance skims will be stable and time skims more variable. Note,
therefore, that different user classes which have different values of PPM and
PPK may well behave differently.
11) For assignments based on Frank-Wolfe (as opposed to OBA) calculating a
minimum cost matrix requires one tree build operation per origin; skimming
an average matrix from a forest requires one tree build operation per origin
per assignment iteration. Hence it may require 25, 50, 100, etc. times more
cpu time depending on the value of NITA_S. For large networks this time may
be significant. (Note that this does not apply to OBA since skimming under
OBA requires only a single pass; see 22.5.6)
Generates the matrix of minimum o-d costs for network net.ufs and stores them in
cij.ufm. Type “SATCOST” for full filename conventions. This is usefully coupled
with elastic assignment to generate cost matrices for external demand models
(see 7.8.6).
If the input network contains multiple user classes the calculations include all user
classes and the output matrix is a stacked matrix, one “level” per user class.
Similarly if the input network has an extension .uft., i.e., it represents the outputs
of multiple time periods, then the output matrix cij.ufm will be “stacked by blocks”
with each “block” (see 10.2.4) representing the o-d costs for a particular time
period.
Note that SATCOST - and all the variants below - produce cost matrices defined
in units of generalised seconds which are therefore compatible with the units used
within all elastic or variable demand models.
Equally note that the units are, effectively, O-D travel cost per pcu and bear no
relationship to the trip matrix or any factors used, e.g., to factor trip matrices. For
example, if you have a model with a single total trip matrix equally divided into six
user classes, then SATCOST will create a stacked .ufm matrix with six levels, one
per user class, each approximately equal to the cost matrix for a single user class.
Thus the fact that the trip matrix is divided by six per user class does not imply
that the cost matrices are equally factored.
Several alternative bat files are provided based on Forest Skimming (Option 9
within SATLOOK; see 11.11.9). In particular:
♦ SATC_MAR skims marginal costs (but only from networks which were
assigned under system optimal conditions; see 7.11.9).
♦ SKIMTIME skims averaged o-d times (in seconds) from a forest as described
in 15.27.3.
♦ SKIMTOLL skims averaged o-d tolls (in pence; see Section 20.3) from a
forest.
♦ SKIMPEN skims averaged o-d time penalties (in seconds) as defined within
the 44444 data records from a forest.
♦ SATTUBA skims time, distance and/or tolls directly to a series of ascii files in
various TUBA formats; see Section 15.41 for further details
For further details on file format conventions etc. please type the names above.
Note also that routines SKIMTIME to SATTUBA as listed above may all take
advantage of multiple processors if available; see 15.53.3.2.
By contrast with SKIMTOLL SKIMPEN also extracts data from the 44444 data
inputs but only those elements which been defined as “times” rather than “money”;
i.e., those without a $ or £ sign. See 6.7.
15.27.7.3 Command Line Over-rides for, e.g., the use of .UFO files
The command lines associated with procedures such as SKIMDIST, SKIMTIME
etc. etc. may also be used to “over-ride” certain default skimming options. For
example, the choice of whether or not to use a Spider Web network
representation rather than the normal network (assuming, of course, that the
SPIDER network has been created in the first place) is normally controlled by a
parameter USESPI described above and which may be set in the preferences file
(e.g., SATLOOK0.DAT). However, rather than changing the value of USESPI in
the preferences file, the choice may be made by including the “token” USESPI on
the command line. Hence:
SKIMDIST net matrix USESPI
Requests a distance skim on net.ufs with skimmed output to matrix.ufm but with
the parameter USESPI definitely set to .TRUE. independent of its default value
and/or any value set in the preferences file SATLOOK0.DAT.
Similarly the command:
SKIMDIST net matrix USEUFO
Requests the use of a .UFO file for skimming rather than a .UFC file (again
assuming, of course, that both .UFO and .UFC files are available). In this case the
default choice is set by USEUFO as defined within the network .dat file.
Other command line “tokens” include:
Substitutes the preferences file mylook0.dat (which should be in the same folder
as net.ufs etc.).
The above table provides a quick reference guide to the principle variations
between the different licence levels but other constraints – such as the number of
simulation links or turns - will also determine the licence level required to run
specific models.
Beyond Level ‘K’, the number of zones available is capped at 2000 to reduce
excessive memory requirements. If a larger version is required, please contact
Atkins to discuss your specific requirements.
Pre 11.2 several variants of Level ‘N3’ were created to accommodate the suite of
sub-regional models developed by Transport for London with various bespoke
configurations to accommodate their specific requirements. With the release of
11.2, the internal array dimensions were restructured to provide a new Level ‘N4’
to meet all their anticipated requirements but within a much smaller RAM footprint.
Therefore, there may be some issues of backward compatibility for very large
networks using SPIDER Network Aggregation and the standard ‘N3’ will not
necessarily be capable of running the TfL Sub-Regional HAMs and an upgrade to
Level ‘N4’ will be required.
The values of the above dimensions for a particular set of executables may be
established via Help/About in the P1X menu bar or the full set is contained in the
.lpn output files from SATNET.
Note that one particular array dimension, that controlling the maximum size of a
trip matrix within SATALL, may be effectively increased in size by the judicious
use of a parameter SPARSE; see 7.11.12.
Further details on the financial implications of upgrading your existing version are
may be found on the website (www.saturnsoftware.co.uk).
For network data files comment cards are particularly useful for, e.g., identifying
specific nodes, inserting comments when changes are made (impresses the QA
boyos!) or for “editing out” previous coding.
In practice the convention may not be 100% fool-proof as the new rule has meant
changing every single “read” statement to check for the ‘*’; almost certainly some
will have been overlooked. It should be fairly obvious when this happens - most
likely the program will crash - so the obvious solution is: (a) remove the comment
card, and (b) politely alert your friendly SATURN agent.
The same convention applies to other input ASCII files - in particular, .key files
may have comment lines inserted as may the standard graphics system file
“graf.dat”.
Blank lines in input data files are, generally speaking, handled in the same way as
comment cards, i.e., if read they are ignored and the next record read in its place.
If, on the other hand, they are allowed as input numerical records (see below) they
are interpreted by FORTRAN as a string of zeros.
Their (intentional) use is not recommended at all, in particular since there are
exceptions to the above rule. For example, numerical KNOB data contained on
extra lines in network .dat files may legitimately contain all zero entries and be
correctly represented by a blank line (15.14.5). Equally key files and GRAF.DAT
may contain all-blank records. There may be other examples but we haven’t
thought of them yet!
Prior to 10.5 blank lines were not explicitly detected and could give rise to fatal
errors, e.g., if they were meant to contain node numbers.
in a network .dat file requests the program to read the bus route data from a file
‘metro.bus’.
Note that the filename need not be enclosed in inverted commas, i.e., metro.bus,
not ‘metro.bus’, unlike filenames etc. which are specified within Namelist inputs
(see Appendix A). However, if they are, the ‘s are removed and a warning printed
in the .LP file.
Note that the file “metro.bus” should not contain the opening ‘66666’ record but
should contain a closing ‘99999’ record which indicates only that reading reverts
to the original file at that point. (Strictly speaking the 99999 record is optional as
an end-of-file has the same effect; however the use of 99999 records is strongly
recommended if only to positively affirm that this is the end of the desired data.)
The original file must therefore also contain a ‘99999’ record in the normal way to
indicate the end of a data section.
The facility is available within SATNET to read any of sections 1 through 8 in the
network input data files. It is being gradually extended to other programs and/or
files (e.g., counts in SATPIJA, see 13.2.1) and may also be used within Namelist
inputs; see Appendix A.
It may also, post 10.9 be “subscripted” so as to apply to a particular time period
under multiple time period modelling (PASSQ; see 17.4.4) in SATNET. For
example:
$INCLUDE(1) bus1.dat
$INCLUDE(2) bus2.dat
in a network .dat file would indicate that two different sets of bus routes were to be
included in the first and second time periods. See Appendix B.
An example of a network .dat file which makes extensive use of sub-files is given
below:
.....
44444
$INCLUDE 444.DAT
99999
55555
$INCLUDE XY.DAT
99999
66666
$INCLUDE BUS.DAT
99999
77777
$INCLUDE COUNTS.DAT
99999
77777
45 53 52 826 60
32 33 1500 70
* COMMENT
33 34 1600 80
7 8 800 90
99999
77777
$INCLUDE COUNTS3.DAT
99999
There are many possible benefits from using sub-files. For example if you have a
large number of networks in a certain study, all of which have the same co-
ordinates, it is much simpler to update a single .xy file than to update every single
network file when you wish to make changes. Clearly the resulting .dat files use
less disk space as well.
Sub-files may also be created and/or extended interactively using P1X; see
Section 11.9.2.6 and 11.9.2.7.
Finally we note that it is possible – and often highly desirable – to have effectively
the same data appearing in more than one file. For example, data for the same
simulation node may appear in several locations such that one may deliberately
take precedence over another as part of coding alternative scheme and/or
scenarios. See Section 6.15 for advice on using FIFO, TOPUP and DOUBLE
options.
15.31.1 Background
A common problem in setting up future-year SATURN networks is to determine
appropriate signal setting parameters. The same problem does not arise with
current networks since, in theory at least, the settings may be observed. However
the easy solution of carrying present day settings forward into the future is clearly
fraught with errors since there is no guarantee that “good” settings for today’s
traffic levels will still be “good” in the future. The same problem also occurs in
present-day networks when network changes are tested.
The two main parameters of concern here are stage green times and offsets.
Cycle times generally have a smaller influence and anyway can be set as a
universal parameter LCY; inter-green times are generally fixed by reasons of
safety etc. The question of setting optimum offsets is discussed in Section 12.2
with respect to SATOFF.
However the problem of determining optimum stage green times is considerably
more complex than that of optimising offsets due to the potentially highly sensitive
feedback between stage times (which affect capacities) and flows. Basically if
one sets optimum green times for a pattern of flow which is in Wardrop
Equilibrium given the “old” green times, those flows will no longer be in equilibrium
since those routes which have been allocated more green times will have become
faster. We must therefore reassign in order to take account of the latest green
times. However this will tend to put more flow down those links that were given
extra green time and therefore, if we re-optimise the green time in accordance
with the new flows, the more heavily loaded links will tend to be assigned more
green time. And more green time tends to mean more flow -a vicious circle is
thereby established.
Considerable research work has gone into the investigation of the “Iterative
Optimal Approach” whereby a loop is established between Wardrop assignment
and signal optimisation using a number of different signal control policies as given
in section 15.31.3. Interested readers are referred to the classic tome on the
subject “Route Choice and Signal Control”, Avebury Press, by Tom van Vuren and
Dirck Van Vliet. Under certain circumstances this approach can lead to
considerable reductions in total travel time, eg up to 20% compared to the initial
(and therefore potentially arbitrary) settings in the base network. However a
closer examination of the process shows that this is often obtained via a process
in which flows and green times move in small steps in consistent directions with
the process only terminating once the stage times reach their minimum values.
Such solutions are also characterised by near “all-or-nothing” flow patterns
whereby very high flow rates with corresponding near maximum green rates occur
on certain well-defined corridors whereas parallel routes are virtually unused.
These solutions argue: (a) a large degree of co-operation between drivers and
signal setters and (b) that drivers can detect and react correctly to very small
shifts in green times.
It is therefore our belief that such solutions are not entirely realistic and may
actually over-estimate the level of performance of a network. Therefore the use of
an optimal iterative strategy must be viewed with extreme caution. See also
15.31.4.
On the other hand some reaction of signals to altered flow is clearly necessary.
Perhaps a good compromise for future year networks is to first set signals using
“engineering judgement”, carry out one full assignment followed by a stage time
optimisation and one more assignment (where by “assignment” in this case we
refer to a full run of SATURN with assignment/simulation loops internally).
If the improvements in total network travel time are significant, this procedure
could be repeated, always bearing in mind the possibility of producing unrealistic
flow and green time patterns and even deterioration of overall travel times.
There is another possible need for a fully automated approach; this is the case
where a network is not yet in existence, and initial green times can be determined
to impose a preferred flow pattern on traffic. The traffic engineer then has the
freedom to pursue the iterative loop until the signal settings are found that lead to
the lowest network travel times.
Having re-assigned and re-simulated via SATALL the option of course exists to
loop back through P1X in order to re-optimise the signals - subject to the caveats
expressed in Section 15.31.1.
The optimisation process may also be carried out at selected nodes only
(11.9.13.2).
and the next pair identified. While fairly reliable, such an approach is not
guaranteed to produce a global optimum; under certain circumstances the
algorithm may “stick” and the apparently best pair for swapping may not in fact
lead to any improvement. For this reason the maximum number of iterations is
user-set in order to prevent infinite loops.
Further “outer” iterations may also be required since, once new stage times have
been generated, a re-simulation of that node may change some of the criteria on
which the optimisation was based; e.g. lane sharing may change. A further (user-
set) option specifies the maximum number of outer iterations allowed (default 1
since in most cases a re-simulation and re-optimisation has no effect).
Finally it should be noted that the optimisation procedures all assume that stage
times are defined by integer seconds as opposed to being continuous variables.
Again this implies that the solutions are not “true” global optima, but equally
means that they may be insensitive to small changes in junction parameters (e.g.
flows) and therefore they converge more rapidly.
considerably with iterations of SATALL, the optimum offsets per node may only
change once within SATALL and the same result could be obtained by using the
program SATOFF on its own. Using SATOFF = T on its own within SATALL with
SIGOPT = F has even less to recommend it.
N.B. Optimising stage times (in particular) and/or offsets may lead to significant
improvements in the overall convergence of the assignment-simulation loops. See
Section 9.1.5.
15.31.4.1 NIPS
On the other hand, using the parameter NIPS to limit the number of times the
signal and/or offset optimisation within SATALL is called is STRONGLY
recommended. See 9.12.2. A value of 2 or 3 is recommended.
where control.dat (optional) is an ascii file which sets various options, filenames
etc. via Namelist and may also contain a list of selected nodes for optimisation.
The full list of parameters with their defaults is listed below.
Fildat (optional) specifies the name of an output (.dat) file containing the revised
network .dat file. Fildat may equally be specified as a Namelist parameter within
control.dat.
Note that if the input network file net.dat references $INCLUDE files within the
11111 records then the output file fildat copies these files directly into the new
11111 records; the $INCLUDE files may be recreated – and potentially renamed –
using text editing cut’n’paste. See 11.9.2.1.
The filenames for a new .ufs file and – optionally - a new .dat file must be explicitly
set within control.dat but that a file net.rgs is always output with its filename fixed
by the input network net.ufs.
PARAMETER TYPE DEFAULT FUNCTION NAME
SIGOPT LOGICAL .TRUE. If .TRUE. optimise green times
SATOFF LOGICAL .FALSE. If .TRUE. an offset optimisation is carried out
prior to green time optimisation
SELECT LOGICAL .FALSE. If .TRUE. read a set of selected nodes to be
optimised from this file immediately after
&END; see also 11.9.13.2
RESIM LOGICAL .FALSE. If .TRUE. a complete simulation is carried
out prior to the output of .ufs file
well as the maximum time change per stage in order to achieve optimisation. The
.LPT file contains a global summary of the potential improvements.
In addition it is also possible within the P1X Convergence Menu (11.15) to list the
10 nodes with the maximum potential V/C improvements and to highlight them.
Note that those nodes with poorly set stage times are also likely to be the same
nodes that cause convergence problems for the assignment-simulation loops and
therefore optimising those signals may significantly improve overall convergence.
See note 9) in 9.1.5.
where:
f = fuel consumption in litres
d = total travel distance in vehicle-kilometres
t = total delayed (idling) vehicle-hours
s1 = total number of ‘primary’ or ‘full’ stops at an intersection; e.g. where a vehicle
arrives at the end of a queue
s2 = total number of ‘secondary’ stops; e.g. stop-starts while a vehicle moves up
in a queue
and the “weighting” parameters FLPK etc. have been assigned default values as
follows:
FLPK = 0.07
FLPH = 1.2
FLPPS = 0.016
FLPSS = 0.005
These parameters were all chosen as appropriate figures for an ‘average’ British
car in 1981. More details may be found in Ferreira. (“The role of comprehensive
where:
d is link distance
tc is average cruise travel time on the link
tq is the time spent “idling” in queues at junctions
s1 is number of primary stops per vehicle
s2 is number of secondary stops per vehicle
V is the vehicle flow
ai1, ai2... are (user-set) coefficients.
calibrated coefficients will undoubtedly follow and users are strongly encouraged
to put forward their own models.
Default parameter values for four of the pollutants (excluding CO 2 ) have been
extracted (with some fairly broad brush assumptions; e.g. that a primary stop
involves a deceleration from 50 kph to rest and the reverse acceleration) from the
data used in the 1988 Leeds PhD dissertation of Athanasios Matzoros (see also A
Model of Air Pollution from Road Traffic I and II, A. Matzoros and D. Van Vliet,
Transportation Research, pp.315-335, Vol 26A, 1992). Default values are listed
below.
Carbon dioxide parameters are extracted from the fuel consumption parameters
on the assumption that “most fuel” is converted into carbon dioxide.
Parameter values may be reset by users using the namelist inputs to SATNET
within a network .dat file. See Section 6.3.3; all parameters are “reals”. Their
names are constructed using the following conventions:
♦ All names commence with the characters CO, CO2, XNO, HC or PB.
♦ The final characters are K (for kilometre), CH (for cruise hour), IH (for idling
hour), PS (for primary stop) or SS (for secondary stop).
Thus HCPCH is the variable denoting hydrocarbons emitted (units of grams) per
hour cruise time per pcu.
Clearly this two-way split does not exactly represent all possible vehicle
movements in a queue but it may well be sufficiently good for estimating
secondary parameters such as fuel consumption or emissions and for providing a
very broad description of the state of a junction.
The rules for estimating primary and secondary stops are, like their definitions,
somewhat arbitrary. Thus for minor arms at priority junctions all arriving traffic
must make a primary stop if its turn is over capacity or if the queue per lane is
greater than 2. If the queue per lane is (in the limit) zero the probability of a
primary stop is equal to the calculated probability of there being no gap. For
queues per lane between 0 and 2 pcu’s a linear relationship is assumed.
Secondary stops are calculated by assuming that all primary stops make a further
number of secondary stops equal to the queue length per lane divided by the
number of vehicles that can depart from the stop line “in a platoon” once a gap
occurs (assumed equal to one over the probability of a gap).
Roundabouts are treated in the same way as minor priority arms.
For major priority arms secondary stops are ignored and a primary stop only
occurs if the arm is over capacity or if, at the moment of arrival, the expected
queue length per lane is greater than 1.
At signals all arrivals primary stop during a red phase or, during the green phase,
if the expected queue is non-zero. Secondary stops occur whenever the lights go
red to all vehicles in the queue at that instant.
The advantages of being able to change formats are mostly associated with the
ability to import data from other suites of programs with formats which do not
coincide with those of SATURN. Another example of the same basic principle is
the parameter XYFORM used by SATNET; see 6.3.4.
It should also be stressed that very often data may be read in a variety of forms,
provided that it appears within the column boundaries set, and that therefore the
formats specified within the Manual may not need to be absolutely strictly adhered
to. For example, the format specified in order to read in the “power” for a buffer
link speed flow is specified in Section 6.6 as FORMAT F5.1, implying that a single
digit appears after the decimal point and that the decimal place must appear in
column 39. In practice, since FORTRAN compilers are “forgiving” in terms of input
formats, the decimal point may appear in any column with any number of digits
following provided that the whole input appears in columns 36-40. Thus inputs of ‘
3’, ‘ 3.0’, ‘3.123’ will all be correctly read.
In addition, certain inputs which are specified as Integers, e.g., link times and/or
speeds with buffer link records, may generally have decimal places included,
again with the proviso that the full input appears within the strict column limits.
those assigned. This procedure would also account for any “missing” turn
flows due to pre-loaded flows.
delays from “normal” traffic making the same turning movement. In effect we
assume that the exclusive lane continues through the junction to the next link’s
entry line - where it may, of course, meet up with a further bus lane.
More specifically the delay to a turn from a bus lane is equated to the minimum
delay associated with normal turning traffic; i.e. t 0 in equation (8.5a). Moreover
this delay is fixed, independent of the volume of traffic in the bus lane. Travel
time/speed along the link itself equals the cruise time for normal traffic and the
same link distance is assumed.
Clearly this model is only an approximation which will hopefully be improved with
later versions of SATURN. It does however include the two most salient features
of such bus lanes; i.e. that buses should incur lower queues and delays than other
traffic and, perhaps more importantly, that buses in an exclusive lane do not
reduce the capacity of other traffic on the same link.
15.40.1 Introduction
Weaving segments on motorways correspond to the situation depicted in the
diagram below (Figure 15.4) whereby an entrance ramp onto a motorway is
followed by an exit ramp downstream such that traffic entering the motorway and
staying on it (Flow 2) will need to “weave” with traffic which is already on the
motorway but wishes to take the next exit (Flow 3). This will lead to a reduction in
the capacity of the middle segment of the motorway if the fraction of traffic which
weaves is high and/or the distance between entry and exit is relatively short.
In these situations SATURN uses formulae derived from DMRB (Design Manual
for Roads and Bridges) recommendations to reduce the saturation flow (and
hence the capacity) of the link (or links) comprising the intermediate segment.
N.B. The treatment below only applies to links coded as part of the simulation
network, not buffer. In addition it need not apply only to “motorways” (SATURN
normally does not know whether a link is motorway or not), although in practice
the required geometry of entries and exits is most likely to occur with motorways.
In addition it may not be used if the assignment is based on either path-based
assignment, OBA or multi-core. In principle it could but it hasn’t been coded;
requests to DVV.
(where L act is assumed to be greater than L min and, if not, take L min = L act such
that the factor within the bracket multiplying Q w2 = 3.)
In SATURN we need to “invert” this equation since the actual number of lanes
provided N a is already specified by the SATURN input along with its “natural”
saturation flow (which determines capacity) and what we need to know is how
much the saturation flow/capacity is reduced by the effect of weaving.
Thus we begin by factoring all the flows Q in Equation 15.2 by a uniform factor F
such that the required number of lanes given by Equation 15.2 equals the number
of actual lanes N a ( i.e., F.Q… are the flows at capacity) :
Equation 15.4
F ( Qnw + Qw1 + X f Qw 2 ) =
Na S
Where:
F = required factor
S = the saturation flow per lane as input by the user and ignoring any effect of
weaving (replacing D in Equation 15.2)
Xf = the extra weight associated with the minor weaving flow (= 2L min /L act + 1)
Furthermore at capacity the total unweighted flow should also equal the actual
number of lanes times the effective saturation flow Se:
Equation 15.5
F ( Qnw + Qw1 + Qw 2 ) =
N a Se
S
F = Na
Qw
Qw 2 F ( X f −=
1) N a ( S − Se )
whence:
Equation 15.8
Qw 2 F ( X f − 1)
Se= S −
Na
Equation 15.9
Qw 2 ( X f − 1)
=
Se S 1 −
Qw
Se Qw 2 ( X f − 1)
=
W = 1.0 −
S Qw
Q
W=
Qw
where Q = Q nw + Q w1 + Q w2 .
Note that in the “worst possible case” when X f takes its maximum value of 3.0 and
Q nw = 0, Q w1 = Q w2 then the reduction factor W = 0.5 which might be thought a bit
extreme. Various alternative formulations have been proposed as discussed next.
Lmin
C = 2.0
Lmax
Equation 15.12
Lmin
3.0 − 2.0 L L < Lmin
max
L L
X f ( L )= 1.0 + 2.0 min − min Lmin < L < Lmax
L Lmax
1.0 L > Lmax
Qw 2 ( X f − 1)
=W 1.0 / 1.0 +
Qw
Which, to a first approximation, is the same as Equation 15.9 for small corrections
but is less severe as the effect increases, e.g., as Q w2 increases. Thus, whereas
Equation 15.9 gives a maximum reduction (minimum W) of 0.5 Equation 15.13
gives 2/3 under the same conditions.
A final extra “rule” is to set a minimum value on the capacity reducing effect of
weaving traffic by requiring that, say:
Equation 15.15
W ≥ Wmin =
0.75
optional as default values are provided), and (b) identify those links where
weaving occurs.
Thus the “on” or “upstream” node will (normally) be a 3-arm priority junction with 2
one-way in-bound links feeding a single one-way out-bound link; i.e., in-bound
motorway and in-bound ramp feeding the out-bound motorway. In more precise
geometric terms there must be only one permitted turn from the entry ramp link -
the first geometrically possible turn - and only one permitted turn from the
“motorway” - the second geometrically possible turn - so that both have the same
exit arm. Thus one cannot have an exit from the motorway onto the ramp arm -
entry and exit ramps must therefore be defined at distinct nodes.
Equally the “off” or “downstream” node will also be a 3-arm priority junction with
one one-way in-bound arm feeding two outbound one-way arms. The entry
(motorway) arm must have both its two possible turns defined - the first to the off
ramp, the second continuing along the motorway and the off ramp link must be
one-way out-bound.
In practice both the on and off nodes will be 3-arm priority nodes as described
above. However, strictly speaking, the nodes may have more than 3 arms as long
as the extra arms and turns do not interfere with the required geometry. For
example the nodes could include both the entry and exit ramps on either side of a
motorway with the two motorway arms being two-way but the turns on one side of
the motorway could not cross those on the other side. In general such coding is
not recommended, particularly if weaving is being modelled: each direction of the
motorway should contain distinct nodes and links.
If there are one or more intermediate nodes such as nodes 11 and 19 in Figure
15.5, then each should be essentially a two-arm priority with a single one-way exit
feeding a single one-way exit. (Such nodes might be added in order to provide
“shape” to the network although, it should be noted, the “shape” may also be
obtained via a GIS file; see 5.7).
♦ STUART - If .True. use Stuart’s formula (Equation 15.11); else use (Equation
15.12)
Note that the first two parameters are “reals” while the latter two are “logicals”. The
default values are, respectively, 300 metres, 2000 metres, False and True. Thus if
the weaving section were 300 metres or less the maximum reduction would be
applied to saturation flows; if it were more than 2000 metres than no reduction
would apply.
15.40.6 Restrictions
The weaving calculations may not yet be applied to all possible situations within
SATURN. Thus it will not work with stochastic assignment (SUZIE = T). It should,
however, still function with, e.g., elastic assignment or multiple user classes (I
Think!).
on the use of W turn priority markers. In both cases 4 sets of individual flows
come together and, depending on the level of “crossing over”, reductions in
capacity and increased delays may result.
The precise mechanisms by which these effects are modelled within SATURN are
different however. Thus W priority markers are modelled essentially as a form of
give ways at a single junction controlled by parameters such as GAP whereas the
link weaves use quite formulae and quite different parameters and apply over
more than one coded node.
Link weaving may be seen as weaving “over a distance” whereas W priority
markers represent weaving “at a point” - effectively therefore over much shorter
distances. The choice of one form over the other should therefore be partly
governed by the distance over which weaving is felt to take place.
15.41 SATTUBA
15.41.1 Objectives
SATTUBA is a procedure embedded within SATLOOK which enables a set of
skimmed cost matrix files to be calculated from a .ufs network file and output in a
text format which is compatible with the economic appraisal program TUBA.
More specifically TUBA requires as input a set of matrices giving for each O-D
pair:
♦ distance;
♦ time; and
♦ (monetary) charges.
These matrices may be further disaggregated by, e.g., user class, time period, trip
purpose etc.
Distance, time and/or charge matrices all need to be path-weighted averages, i.e.,
the travel time averaged over the paths used by each O-D pair as opposed to
being, say, the time component along a single minimum generalised cost path or
even the time along the minimum time path. In SATURN terminology TUBA
requires skimmed matrices as opposed to cost matrices; see Section 15.27.4.
Hence SATTUBA requires that the network is set up with SAVEIT = T and the
skims are based on forests, not trees.
We note that, as explained in 15.23.2 and 15.27.5, the forest path flows generated
by SAVEIT are not necessarily exactly equal to the path flows generated during
the “true” assignment. Thus quantities such as total pcu-hours, pcu-kms etc.
calculated using the skimmed and demand trip matrices – which is, effectively,
what TUBA seeks to do – are only approximations. See 15.23.2 for a discussion
of how these approximations may be improved.
We further note that, quite apart from numerical uncertainties arising from the
method of calculation and/or convergence, there are further theoretical problems
in that, in principle, Wardrop Equilibrium does not yield unique values of O-D time,
distance or toll. On the other hand it does yield unique values of OD generalised
cost. See below and sections 7.1.6, 7.8.6 and 15.23.8 for further discussion.
In a wider context it also has to be remembered that the “accuracy” of a skimmed
matrix is also affected by the overall convergence of the full model run, not just the
SAVEIT accuracy. Counter-intuitive results from economic evaluation techniques
such as TUBA or COBA may be simply a consequence of poor convergence in
either or both the do-nothing and do-something model runs.
Note that the trip matrix necessary as an input to TUBA may be “dumped” from
MX using the standard option to dump a matrix as comma-separated (CSV)
output; see 10.15.
N.B. The problem noted above with respect to the uniqueness of the sub-
components of generalised cost (i.e., time, distance etc.) is potentially a problem
for all economic evaluation procedures. There is therefore a very strong case for
basing economic evaluation on the generalised cost as used in the traffic
assignment model which has the advantage of being uniquely determined
(although there are still problems of convergence accuracy) as opposed to relying
on sub-components such as O-D time and distance which are not unique.
which takes as input a network file net.ufs and outputs (up to) 3 matrices in text
format:
net_d.txt
net_t.txt
net_m.txt
net_p.txt
where the first matrix contains distances, the second contains times, the third
contains toll charges (if any exist) and the fourth contains penalties (if any exist).
Units are the defaults as specified by TUBA: distance is in kilometres, time and
penalties are in hours and tolls are in pence. The format used is TUBA “Format 1”
- see Appendix C of the TUBA User Manual for more details. (Essentially this
outputs all O-D cells, one record per origin, in comma-separated format. If
required options to input under formats 2 or 3 could be provided.)
processes data for user class 2 from the MUC network file net.ufs to produce:
Net.uc2_d.txt, net.uc2_t.txt, etc. etc.
Equally
Sattuba net UC *
♦ USETP (Logical): If .TRUE. 44444 time penalties are included within the
skimmed times (See 15.24.4); Default T
for all centroid connectors equal to zero, in which case they make no contribution
to O-D skims which are therefore based entirely on “real” network components
only. XCCSK is new in release 10.9 but is “retrospective” in the sense that 10.9
SATTUBA may be applied to .ufs files created prior to 10.9.
Note that XCCSK applies only to skims of time and distances, not to skims of,
e.g., tolls or generalised costs and that it is also used more widely within time
and/or distance skims; see, e.g., SKIMTIME and SKIMDIST in 15.27.7. Its default
(F) is set within the preferences file SATLOOK0.DAT.
A further example occurs when two zones both have centroid connectors feeding
in/out of the same simulation node, in which case the obvious path consists of an
entry connector to the stop-line at the node, a single turn at the junction followed
immediately by an exit connector. In this case the O-D pair will have positive time
from the turn but zero total distance (since both turns and simulation centroid
connectors have zero distance by definition). In this case there are fewer simple
remedies within SATURN.
N.B. SATTUBA is still very much “work in progress” and not all the final essential
options have been added. We therefore welcome feedback from users.
15.42 SATCOBA
SATCOBA is a procedure embedded within SATDB which enables a sub-network
of links to be defined which is compatible with that required by the economic
assessment program COBA and, in addition, to output a text file which specifies
the network and includes flow data and selected link data as required by COBA in
the formats required by COBA.
Alternatively a sub-set of links as would be used by COBA (see paragraph 1 in
15.42.1) may be selected within SATDB, after which the user is free to output
whatever data they wish in whichever format they wish (as opposed to SATCOBA
which outputs fixed data in fixed formats).
By default the flows output are total flows and therefore include all fixed flow etc.
contributions, although there are alternative options (MUC and MVC) by which
flows by individual user or vehicle classes may be output (see 15.42.2 below). In
addition the units may be either pcu/hr or vph.
In addition, since COBA flows would normally be the weighted sum of flows from,
say, an AM, off-peak and PM network SATCOBA accepts as input one or more
“networks” (i.e., time periods) and outputs a single flow which is the weighted sum
of each individual network flow. (It is assumed that all networks have the same
“topology”.) Alternatively, if the parameter SUMNET = F (15.42.2), each network
flow is output separately
Next SATCOBA generates a (partial) data set which contains certain fixed data
such as the link distances. The full COBA input file requires further information
such as lit/unlit which is not available from within a SATURN network file on its
own.
Finally SATCOBA generates a set of turning proportions at each (internal)
simulation junction (the “turning matrix” in COBA terminology) with a directionality
flow factor for 2-way roads.
Thus the output from SATCOBA is a text file (extension .cba) which contains four
sections:
where net1.ufs, net2.ufs, net3.ufs ... are the output files from different time periods
whose (factored) flows are to be (optionally) added together. The output (text) file
would be net1.cba.
A control file, control.dat, which sets/over-writes various parameters may be
optionally defined via the bat file. If none is defined a “null” default file,
satcoba0.dat, is used which basically accepts all program defaults. See 15.42.2
Like SATTUBA, SATCOBA is very much “work in progress” - comments on a
postcard please to DVV.
FILKNB Character Blank The input file used to define COBA link numbers ;
see 15.42.3
FILNOD Character Blank The input file used to define node numbers; see
15.42.6
Notes:
1) NAMES will default to F, i.e., sequential numbers, if the standard SATURN
node names exceed 4 digits since 4 digits is the maximum permitted within
COBA format
2) MUC = T will only work if (a) only one network is being processed and (b) if
the number of user classes is less than or equal to 3 in that network. If not, it
is automatically replaced by F. Note that the limit of 3 is due to a limit imposed
by COBA in its KEY056 record formats.
3) Similarly MVC = T will only work if (a) only one network is being processed
and (b) if the number of vehicle classes is less than or equal to 3. Vehicle
class flows are obtained by summing over their constituent user class flows.
(Clearly both MUC and MVC cannot be T at the same time.)
4) Post 10.9 user and/or vehicle class flows may be output as either PCU/hr or
vph depending on whether parameter PCUS = T or F.
To use a file, say net_base.cln, within another network, net_ds.ufs, you must first
create a “control file” coba_ctl.dat which might contain:
&PARAM
KNOB = 1
KNBFIL = ‘net_base.cln’
&END
and then run SATCOBA via:
SATCOBA net_ds KR coba_ctl
The output COBA file net_ds.cba would then contain, inter alia, flows on all the
links contained in net_base.cln using the same link number conventions. Note
that links which are in net_ds but not in net_base.cln would not appear in the .cba
file. However they are listed in the output .lpd file in order to help the user decide
whether to include them somewhere else within the coba file. Equally links which
are in net_base.cln but not in net_ds would not appear in the output .cba file.
Thus the only function of the .cln file is to supply link numbers, not network
structure.
accessed within P1X by selecting the appropriate entry from the list of node
attributes.
Sequential numbers are selected within SATCOBA by setting NAMES = F in the
control file (15.42.2) or, alternatively, it will be done automatically if the maximum
node number exceeds 9999.
The second system uses an explicit input file to convert SATURN node numbers
into a more compressed system – which could indeed be based on pure
sequential numbers as above but any arbitrary conversion system may be used.
To select this option (a) set NAMES = F as above but (b) define the conversion file
filename as FILNOD within the control file (15.42.2).
The conversion file consists of a series of records, one per “real” node (i.e., zones
are not included as they do not appear in COBA outputs), each of which contains:
(a) a (real) node name (which may exceed 5 digits) and (b) its equivalent output
number (4 digits or less). All COBA node number outputs are automatically
converted to the new system.
The main advantage of the second system is that it may applied to any number of
different networks, for example a do-minimum and a do-something network, which
have (some) different node numbers and therefore different sequential numbers.
In particular a new option in P1X (see 11.4.2) allows for a file to be created
containing the names and sequential number based on a “union” of all nodes.
If your network has more than 9999 sequential map numbers it cannot be used by
COBA in its current form and you’re in deep doodah! Try a cordon maybe?
Within this particular context bitmap files must be of either “.bmp” or “pcx” format,
as opposed to, e.g., .jpg, .gif, etc.formats (although .jpg is allowed as output; see
11.3.6). However other graphical formats may almost certainly be converted into a
.bmp format by making use of standard software such as Paint.
Where or how the bitmap file is obtained is not strictly relevant; it might be
downloaded from, e.g., OS sources, scanned from a road map, dumped from a
GIS software package or even output from a different run of P1X for a different
network. The important thing is that it be in .bmp format and, equally important,
that the “area” which it covers be identifiable.
Thus in order for P1X to draw a bitmap background within the windowed area
covered by a network plot it is necessary to know (a) the precise area covered by
the network window and (b) the full area covered by the .bmp file, in effect the co-
ordinates of its 4 corners, so that the degree of overlap between the two may be
ascertained. This may not sound too difficult, indeed most of the time it isn’t; the
tricky thing is being able to obtain the co-ordinates of the bitmap and of the
network within the same reference system. (Note that it is the network “window”
which “controls” the region plotted and that the bitmap must be manipulated to fit
onto the area chosen by the P1X network window rather than the other way
around.)
Thus for every .bmp file used by P1X, say picture.bmp, it is necessary to set up a
further (very small) file, named picture.xyb, which specifies the 4 corners of
“picture” using the same coordinate system as that used by the network (i.e., the
co-ordinates as used within the 55555 network data section and independent of
XYUNIT (6.8)). .xyb files consist of a single record containing 4 (real) values in the
following order:
as we have pointed out above, both should be based on the same system and the
coordinates of the four corners should be established a priori. However, in the
absence of such information, a procedure has been established within P1X to
obtain this information.
In order to carry out this procedure the user must be able to identify the (network-
based) co-ordinates of two points within the bitmap display. Ideally these two
points should be as far away from one another as possible and near one or the
other diagonals. Normally the points will correspond to nodes for which the
network co-ordinates are known, although in principle they could be any points
which can be easily identified in network terms.
Formally the bitmap is displayed with a thin red strip added along the edges and a
further red cross displayed in the centre. The user is asked, first, to move and
click the mouse over the red cross (in order to confirm the centre point in pixels)
and next to click on two points and input their X,Y network co-ordinates. The four
corner points may then be easily calculated via a simple linear transformation.
A practical problem which arises in the above procedure is that it is not possible
within P1X to simultaneously display both the bitmap and the network (prior to
calibration). We therefore recommend first viewing the bitmap (e.g., enter it within
PMAKE or use any other graphical system such as Paint) in order to identify the
two points(/nodes) to be used and then viewing the network in P1X and using the
X,Y monitoring option under Information to determine - write them down! - the two
sets of co-ordinates. Armed with this information you can return to P1X and the
bitmap display to complete the calibration. Both procedures may be carried out at
the same time by having two program windows open - or even two computers!
This process is probably most easily done by using PMAKE to select, view and
calibrate the .bmp file and then exit the program. Trying to do the same process
within P1X leads to problems of having both a bitmap and an (incompatible)
network both trying to define a network window.
Once calibrated a .xyb file is automatically created (so that picture.bmp spawns a
file picture.xyb) and which will from then on be opened at the same time as the
.bmp file is opened.
There is, however, no problem in dumping the current plot plus bitmap display to a
.bmp output file or the clipboard and subsequently outputting to a printer (but with
some loss of resolution).
The size and resolution of .bmp files may be easily manipulated using standard
Windows graphics packages such as MS Paint or MS Picture Manager for
example.
dumps the demand flows (DA code 4503) from net.ufs into a file flows.txt following
the “rules” described in 11.10.9.
Various options described below are provided to control the precise “format” and
contents etc. of the output file.
Tokens on the command line may be divided into two types:
♦ Options
DA codes are always given as numerical values; For a full list of the DA codes
within a .ufs file please consult Appendix J. Note, in particular, that codes such as
3808 to represent actual flow by user class 1 are also permitted (see 15.21.4).
Options are always represented by characters beginning with a $. They may be
further sub-divided into two groups, link types and format.
(i) Those that select the link types to be output
Under link selection the following characters indicate link types to be included:
$SL Include simulation links (i.e. roads)
$ST Include simulation turns
$SCC Include simulation centroid connectors
$BL Include buffer links
$BCC Include buffer centroid connectors
and the composites
$L Include all (simulation and buffer) links
$CC Include all (simulation and buffer) centroid connectors
Including an X immediately after $ indicates “exclude” that link type; e.g., $XST
implies exclude simulation turns but leave the other 4 types.
For example:
DBDUMP net net.txt 4503 $SL
would dump demand flows for simulation links only to file net.txt.
(ii) Those that control the format
Further options controlling the output formats, e.g., nodes in fixed columns versus
free format (CSV), are being added to match some of the interactive options within
SATDB. Thus:
$KP5COL Nodes are output in fixed columns of 5 or …
$KP6COL … in fixed columns of 6
Note that if the node or zone numbers in the network being dumped exceed 4
digits then the output link format automatically allocates 6 columns per node.
(The 5-column option may be set by default by defining the parameter KP5COL =
T in the preferences file p1x0.dat; KP5COL = F selects 6 columns.)
Furthermore, if the filename of the output file in the command line has an explicit
extension .CSV, then it is assumed that the output data format will be CSV rather
than fixed columns. For example:
DBDUMP net net.csv 4503 $ST
would dump demand flows for simulation turns to a CSV formatted file, net.csv.
dumps the free-flow speeds (P1X internal code 5) from net.ufs into a file flows.txt.
See Appendix I for a full list of codes.
To request a particular user class for a user-class dependent variable (such as
link flows) the class is indicated by appending ‘Un’ to the internal code; for
example:
P1XDUMP net flow_uc4.txt 40U4
free-flow speed coded for each link, and that there is no need to impose an extra
travel time on them. But, if you do want to impose penalties on all user classes,
go right ahead!
The fact that the penalty is fixed means that it is included within the travel time (for
that user class) under all conditions, i.e., all speeds and all flows. To give a simple
numerical example, consider a link 1 km long with an input free-flow speed of 120
kph (which presumably applies to cars, user class 1) but with user class 2 (lorries)
having been assigned CLICKS(2) = 100. Under free-flow conditions cars take 30
seconds to travel the 1 km. at 120 kph, lorries take 36 seconds at 100 kph. Hence
the fixed time penalty is 6 seconds for user class 2.
The end effect is identical to adding a penalty of 6 seconds within the 44444 data
records for user class 2 on that particular link; in both cases, the 6 seconds is
simply added to the minimum generalized cost for that link as used within the
assignment. Therefore, in both cases, the extra time may influence their route
choice. However, in practical terms, it is much simpler to set a single parameter
under &PARAM than to include explicit penalties for every link which requires it.
Although, on the other hand, explicit penalties under 44444 can be made much
more precise.
A possible modelling disadvantage of assigning a fixed penalty may be seen,
using the above 1 km long motorway link, by assuming that the speed at capacity
for that link has been coded as 40 kph. Under capacity conditions it is perhaps
more realistic to assume that both cars and lorries travel at the same bumper-to-
bumper speed. In fact the extra 6 second penalty on the lorries will bring their
effective speed down to 37.5 kph, an “error” of 2.5 kph. On the other hand it might
be argued that even under bumper-to-bumper conditions cars will still have a
slight advantage over lorries by being able to weave in and out a bit more and that
maybe a differential speed of 2.5 kph is not too bad an estimate of that effect. It is
up to user to judge whether or not this represents an “acceptable” model.
At this point, users may well be asking why there cannot be two (or more) different
speed-flow curves per link per user class which may differ at free-flow but come
together at capacity. In principle, there is no reason why such differential curves
could not be defined. Unfortunately, for complicated theoretical reasons, the
multiple user class assignment algorithm used within SATURN (see 7.3) requires
that there can be only one cost component which is flow-sensitive and that that
component (i.e., time) is common across all user classes. Fixed cost components
may, however, differ between user classes (e.g., the evaluation of distance in
generalized cost seconds) and the differential time penalties must therefore fall
into that category. Otherwise multiple equilibria may occur.
In practical terms, as mentioned above, the use of CLICKS may influence route
choice by user class. The extra time penalties will automatically be included within
any O-D skim that includes time.
Summary statistics listing the total extra travel time in terms of pcu-hours incurred
under CLICKS are given in the .lpt files and within the various list options under
SATLOOK and P1X. The outputs are disaggregated by: user class,
simulation/buffer, this/next/total time period and by capacity index. In principle
these totals could (and possibly should) be added to the cruise time etc. totals
which appear in standard output tables; however, for the time being, this has not
been done in order to allow users to think about exactly how they would wish to
have the data presented.
In summary setting a value for CLICKS is an extremely simple method to
represent differential speeds by user class but some users might feel that the
possible “errors” introduced at high flow levels may outweigh the advantages of
simplicity.
Capacity Indices not included in the file default to zero (i.e., maximum speeds are
not applicable) as do missing or zero values per Vehicle Class as input.
For example, if capacity index 1 refers to a road type where vehicle classes 1 and
2 have normal link-dependent speed-flow curves but vehicle class 3 (HGVs
maybe) has an upper speed limit of 88 kph the relevant (CSV-formatted) record
would read:
1,0,0,88
and the maximum speed of 88 kph would then apply to all user classes associated
with vehicle class 3.
The file is terminated either explicitly by 99999 in columns 1 to 5 or simply by the
end of the file.
As with CLICKS(1) under KLUNK = 0 we anticipate that CLICKS will not apply to
the vehicle class “cars” (generally 1) so that one of the input fields (the first) will be
uniformly zero.
N.B. Note that the input maximum speeds are defined by vehicle class, NOT
by user class.
1
Note, if DUTCH=T has been set to permit longer node numbers, the matching columns will be 21-25 and 53-
55 respectively
that, e.g., CLICKS speeds are less than normal speeds, etc. etc. are carried out
and error messages produced as necessary.
The V-records will be ignored, in the same way that default speed-flow curves by
capacity index with a D in column 1 are ignored, when the buffer network is built.
Note as well that if any V- records are included under 33333 and KLUNK = 1 then
any reference to FILVSD is ignored; you cannot therefore use both methods to
define KLUNK = 1 data at the same time.
interactions we are talking about here are relatively “weak” and, touch wood,
should not lead to any extra convergence problems. Statistics to demonstrate the
degree of convergence, e.g., the ratio of the total absolute changes in penalties to
the total penalties, are printed each time the adjustments are made and should
converge to (near) zero.
More precisely, consider a series of links A-B-C-D… in the buffer network such
that traffic on A-B can only exit to C (ignoring U-turns to A), traffic on B-C can only
exit to D, etc. etc. Hence all links must be assigned the same demand flow V. If,
say, A-B and B-C both had the same capacity C and V > C then, in reality, one
would expect that a queue of traffic would form on A-B at a rate V-C but that the
capacity on A-B would restrict or “meter” the “actual” flow to B-C to equal C and
that therefore there would not be a second queue on B-C. Hence there should be
a “queuing” delay on the first link but not on any of the flow-metered links
downstream.
However, prior to 10.7 and UNIQUE, the same queue build-up and consequent
ing delay was imposed on all links A-B, B_C, …., hence “double-counting” the
effects of queuing. But, if UNIQUE is set to T within the &PARAM of the .dat file,
the extra delay is imposed at only one of the links (that with the minimum capacity
which therefore represents the true “bottleneck”).
This option is useful if, say, an existing buffer link A-C is split by a mid-link node B
with no other changes and the same link properties apply on both A-B and B-C.
This will load-up the SATSTAT module requesting the network(s) that you wish to
extract the summary statistics from:
We now run SATSTAT and the module will now, for each network in turn:
♦ Run SATLOOK and SATDB to determine the version of SATURN in use;
♦ Run SATLOOK and SATDB to extract the summary statistics; and
♦ Run the SATSTAT Fortran program to generate a summary statistics file in
CSV format.
The output(s) from the process will be a one (or more) CSV files with the same
filename as the network UFS file. In our example, the two output files will be
EPSOM98AXX.CSV and EPSOM98RXX.CSV.
We may then select each CSV file, in turn, and these will be imported as new
worksheets into the existing spreadsheet.
Once they have been loaded as new worksheets, we may now select them to be
loaded into the reporting columns in the summary worksheet by clicking on the
Filter box at the top of each column. The summary statistics for that network will
then be summarised in the column below.
Once completed, Table 1 ‘Scenario Reports’ shows the summary statistics for two
networks side-by-side, as show below.
♦ Over-capacity queues;
♦ Link cruise times;
♦ Total travel times
♦ Average speed;
♦ Total delay;
♦ Average delay per vehicle;
♦ Average delay per vehicle-kilometre;
♦ Average trip length
♦ Average simulation queue;
♦ Simulation queue at end of modelled time period; and
♦ Turn penalties.
More detailed comparisons are available within the Summary worksheet by
selecting the second level option to highlight more convergence statistics and, for
example, performance for both the modelled hour and the next time period.
EXISTING
EXTENDED
Whilst Table 1 will remain unchanged, Table 2 below will now report on the
Differences and %Differences in the summary statistics (ie this network MINUS
the one with the column ID just selected) as shown below.
∂c
a (Va )
c= ca (Va ) + Va a
∂Va
an increase in N-S flow can reduce the delays from the south leading to a
negative contribution to MECC which, in turn, can potentially drive the total
MECC negative as well.
1) If the turn is over capacity in the base simulation we do not have to perform
a second simulation to calculate MECC since the main impact of an extra
pcu on an over-capacity link is essentially to make the queue on that arm
one pcu longer rather than changing the flows through the node. Thus we
may combine equations (7.46) and (8.5b) (or (8.11b) in the case of shared
lanes) to obtain:
Equation 15.18
MECC = ( LTP 2 ) V C
2) If the turn is “almost at capacity” (strictly 90% < V/C < 100% then a negative
increment of 1 pcu is used in the first instance rather than an increase of 1.0.
(But see point (7) below.)
3) If the turn has zero or very low flow (arbitrarily under 5 pcu/hr) the turn is
simulated at flows of, say, 5.0 and 6.0 pcus/hr as opposed to, say, 0.0 and
1.0 pcus/hr since, very often, there can be very highly significant changes
between no flow and a very small flow. This is particularly true of X-turns at
signals, even more so when they come from a single lane with other shared
movements.
4) If the addition of +1 pcu takes a turn beyond capacity then the increment is
reduced so as to go only “halfway” to capacity.
5) In order to minimise any problems of “noise” in the two simulations (if we are
looking at two very similar flows any “errors” in delay calculations will be
magnified) we convert the value of NUC applied at signalised junctions to a
large value. In particular this has proved to be essential for junctions with
very short signal phases and/or X-turns.
6) If, for whatever reason, a node does not converge to the required limits (see
8.3.2) even with any changes to NUC, etc. its convergence is judged to be
“poor” and, rather than permit any noise to creep into the calculations, its
MECC values are calculated using its separable cost-flow curve and
equation (15.15) above. This is probably an underestimate of the total
MECC since it exclude any interactions with other turns at that junction but
this is felt to be preferable to introducing random errors. In most networks
the number of “poorly” converged nodes is probably well under 1%. (A
higher percentage of poorly converged nodes may be an indication of
slightly dodgy coding practice.)
7) As an example of belt’n’braces and to cope with various “noise” problems
which empirically are observed to occur even with all the above rules, for
priority and signalised junctions, whenever both positive and negative
increments are feasible, we carry out two increments, both plus and minus 1
pcu, and take the minimum of the two MECC values. (In almost all cases
the two give virtually equal answers but there are odd examples when one
result appears to be unreliable and we prefer to believe the lower values.)
8) Turns at simulation dummy nodes experience zero delay by definition and
therefore zero marginal costs. They are included in the output .mec files with
values of zero. Similarly bus-only links and/or turns are assigned zero
MECC values.
XCL ON COMMAND LINES This feature allows more than 9 arguments per
command line. In the particular context of DIADEM this increases the number of
matrices which may be stacked and unstacked but the number is still potentially
limited. See 14.8.
UFMSTACK AND UFMUNSTACK These new bat files allow matrices to be
stacked and/or unstacked with, effectively, no limit on the number of levels / user
classes which may be accommodated. See 10.20.17 and 10.20.18.
SAVEIT – Unless you specifically need to create skimmed matrices of time,
distance, etc. in order to run the demand model within DIADEM (which, in general
terms, we do not recommend; see 7.4.5.3 and 7.8.6) or you are using a warm
start we recommend that you set SAVEIT = F and avoid the excess CPU of
creating .UFC files which will not be used at the end of each run of SATALL. Note
that, if required, a .UFC file can be created at the very end by running the
procedure SATUFC (see 15.23.5). (N.B. This does not apply under OBA where
the overheads associated with SAVEIT = T are minimal.)
SKIM_ALL – If, however, the Diadem model requires skimmed matrices of time,
distance and/or tolls on each supply-demand loop it will save CPU time to use the
simultaneous skimming procedures embedded in SKIM_ALL (see 15.27.7) rather
than skimming each component separately.
Further general advice on linking SATURN with external variable demand models
such as Diadem as given in Section 7.4.5.
Users may also wish to note that the “%Gap” convergence measure used within
Diadem has an equivalent measure within SATEASY, i.e., TxCij-AAD as referred
to in Section 7.5.5.
15.52.1.1 Monitor
MONITOR takes a snapshot of all running processes in Windows at regular (user
specified) intervals and checks if a user specified program is still running. The
program terminates when the user specified program is not one of the currently
running processes. MONITOR takes two parameters:
♦ Parameter 2 – the time interval (in seconds) for taking snapshots of running
processes to determine if the SATURN program specified by parameter 1 is
still running (eg 10).
15.52.1.2 Wait
WAIT (used within a batch file) causes the batch file to pause (where it is called)
for a user specified number of seconds before the batch file proceeds to the next
command. This introduces a short pause before the next instance of the
SATURN program that is to run in parallel is called. In other words, if the user
wishes to run two instance of $SATALL, the user should request a small pause
between the first and second runs commencing to prevent potential file access
errors arising. Note that WAIT has to be used within a batch file – it will not ‘wait’
as a single command line call.
15.52.2 An Example
An example of a batch file to undertake a ‘parallel’ run of the SATURN module is
annotated below (but the process would also readily work with other SATURN
modules including $SATALL, $SATPIJA, $SATLOOK, $SATME2, and $SATEASY
for example).
The batch file should contain the following commands:
PATH = C:\SATWIN\XEXES
1) sets the path to the folder containing SATURN programs (if required)..
SET INPUT1=EPSOM5000
2) sets the input parameter for the first SATURN run as an environment
variable. In this example, the network and matrix file have the same root
name (i.e. EPSOM5000.UFN and EPSOM5000.UFM), hence only one
environment variable (i.e. INPUT1) is required. If the root names were
different, two environment variables would have been required: one for the
UFN file and one for the UFM file.
SET INPUT2=EPSOM5001
3) sets the input parameter for the second SATURN run as an environment
variable. The root name of the network and matrix file is the same in this
example; hence, one environment variable is required as in 2.
START SATURN %INPUT1% %INPUT1%
class to separate threads (and therefore is most efficient if the number of threads
available equals the number of user classes).
there is sufficient demand to include such options it will be considered for future
inclusion.
SATALL also does not work with either path-based or origin-based (OBA)
assignment because the theoretical principles of these algorithms require them to
be undertaken in a purely sequential process.
In addition multi-core requires that there is sufficient RAM provided to store the full
trip matrix in core; with certain matrices it may therefore be necessary to set a
control parameter SPARSE = F to select a more efficient system for matrices
where more than 50% of the Tij cell values are positive. See 7.11.12.
power may be unused and ‘wasted’. However, running two threads on the same
core enables the second thread to take advantage of this ‘spare’ processing
power whilst the first thread was waiting for data. Whilst running two threads on a
single core reduces wastage it is not a substitute for having additional physical
cores instead
There are various different propriety names for this technology - Intel’s Hyper
Threading (HT) technology, available on most of their medium and high-end
processors, is probably the most widely known. Intel HT uses this principle
whereby each physical core is able to run two threads simultaneously.
As far as SATURN Multi-core applications are concerned, its applications will
automatically generate N threads (either up to the maximum available as defined
by the operating system, the user-defined MCNUM parameter or the maximum
number of threads that the application may be broken down into as defined in the
batch files) so that tasks may be undertaken simultaneously. The Windows
Operating System takes the threads generated by the SATURN application(s) and
schedules them to run on the threads available. No further user intervention is
required.
100%
90%
CPU Ratio
% of Existing Single Core Runtime
80%
70%
1/N
60%
50%
40%
30%
20%
10%
0%
1 Core 2 Cores 3 Cores 4 Cores 5 Cores 6 Cores 7 Cores 8 Cores
100%
90%
CPU Ratio
% of Existing Single Core Runtime
80%
70%
1/N
60%
50%
40%
30%
20%
10%
0%
1 Core 2 Cores 3 Cores 4 Cores 5 Cores 6 Cores 7 Cores 8 Cores
100%
90%
CPU Ratio
% of Existing Single Core Runtime
80%
70%
1/N
60%
50%
40%
30%
20%
10%
0%
1 Core 2 Cores 3 Cores 4 Cores 5 Cores 6 Cores 7 Cores 8 Cores
15.53.4.1 Options
To activate the multi-threaded operations within SATALL and SATLOOK once
installed, the &PARAM namelist parameter MULTIC is set to TRUE in the network
.dat file and the Windows Operating System handles the allocation of the
computational calculations between the available threads available. The value of
MULTIC parameter is stored in the network binary files (.ufn/s) and the value read
by SATALL, SATLOOK, etc. where necessary.
An additional (integer) namelist parameter MCALG selects one of a set of optional
algorithms which are basically provided for internal testing. We recommend the
default value of 1.
A further (integer) &PARAM Namelist parameter MCNUM defines the maximum
number of core processors to be used on the computer; default 0 (meaning use all
available threads). See 15.53.4.2 below.
For the other Multi-Core programs (i.e. SATPIJA, SATCH and SATUFO), the
Multi-Core batch files have to be used.
15.54.1 Overview
CASSINI is a Visual-Basic program developed to significantly reduce SATURN
runtimes when SATURN is used within a Variable Demand Model such as a
simple DIADEM model or a more complex, bespoke modelling system. See
Section 7.4.1 for a general discussion of the problems of convergence between
supply (i.e., assignment/SATURN) and trip matrix demand models and Section
7.4.5 for a description of the iterative “cobweb” loops between supply and demand
models whose runtimes CASSINI seeks to “optimise”.
CASSINI enables the user to automatically adjust the convergence targets set for
each run of SATURN to match the current level of convergence achieved for the
supply-demand “cobweb” loops. Typically, a ‘relaxed’ set of convergence criteria
would be set for the initial loops when supply-demand convergence is poor and
the trip matrices are still highly uncertain but these would be subsequently
tightened as the overall model convergence improves; in other words, reducing
the ‘over-convergence’ within the supply model (i.e., SATURN).
See section 7.4.5.3 for a more general discussion of the principles applied by
CASSINI.
Appendix R contains a copy of the ETC2009 paper that describes the practical;
benefits of CASSINI within a full WebTAG-compliant demand model.
9.00%
8.00%
7.00%
6.00%
5.00%
%GAP (Assignment)
4.00%
3.00%
2.00%
1.00%
0.75%
0.50%
0.25%
0.10%
0.05%
GAP − SD =
∑ ijctm ( )
C ( X ijctm ) D C ( X ijctm ) − X ijctm
*100
∑ ijctm C ( X ijctm ) X ijctm
where:
♦ C(X ijctm ) is the generalised cost vector or matrix obtained by assigning that
matrix
♦ D(C(X ijctm )) is the flow vector or matrix output by the demand model, using the
costs C(X ijctm ) as input; and
70%
50%
SATURN-CASSINI Convergence
(%GAP=Variable)
40%
30%
Standard SATURN Convergence
(%GAP=0.05)
20%
10%
0%
1 2 3 4 5 6 7 8 9 10 11
Demand Model Loop
Standard
20.00 CASSINI
Cumulative SATURN CPU (hrs)
15.00
Time Saving
10.00
5.00
0.00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Demand Model Loops
GBMF modelling system demonstrated that using Multi-Core has reduced overall
CPU times by a further 25% as shown below in Figure 15.14 below.
Figure 15.14 – Performance of CASSINI and SATURN Multi-Core
40.00
35.00
Total CPU for all Operations (hrs)
30.00
25.00
20.42
Time Savings
SATURN
20.00
Demand
47% 63%
15.00
8.78
4.03
10.00
13.82
5.00 9.52 9.52
0.00
Standard Method (Parallel Plus CASSINI Plus CASSINI & Multi-Core
Assignment)
Specifies the type of demand model used and the file format (and other
CASTXT operations) that CASSINI will expect. There are currently two options
either:
‘DIADEM’ file format and CASSINI will extract the convergence of the
demand model from a standard DIADEM report file a illustrated below –
this is the default option, or
A simpler ‘OTHER’ file format with the file consisting of two data fields in
CSV format. The first value is the demand model loop number whilst the
second value specifies the GAP-SD convergence of the demand model.
The “file name” of the CASSINI Control file defining the convergence
FILCAS strategy to be applied (see below for more information).
The “file name” of the ASCII CSV file reporting the convergence of the
FILGAP demand model
Note that the convergence parameters in the SATURN network file should be
relaxed as these will be applied for the assignment of the first demand model loop.
These will be subsequently overwritten by .XCP produced by CASSINI.
network data file, in particular those that relate to convergence options within
SATALL as shown in the table below. (N.B. the list may be extended if
necessary.)
The current list of parameters that may be changed by CASSINI is as follows (with
the new v11.2 parameters in italics):
♦ Read the demand model convergence file (as defined by FILGAP) and
determine the number of loops undertaken (so far) by the demand model and
resulting demand model convergence;
♦ Match the number of demand loops undertaken and the strategy to apply (as
defined by the Loop Threshold). So, for example, if there are two strategies:
an initial strategy for the first loop and a second defined for loop 5 onwards
[i,e., LoopThreshold 5], and four loops have been undertaken so far, the first
strategy will be applied;
♦ Within that strategy, compare the current demand model GAP-SD value
against the various %GAP-SD ranges [GAPVALUE] and export the
parameters to the XCP file.
An example of the control file is provided below.
XCP File
In addition network aggregation reduces the cpu time involved in building trees
during post-assignment analysis such as skimming, select link analysis, etc, etc.
See Section 15.56.7.
A condensed version of the material that follows was presented at the ETC
(European Transport Conference) in Glasgow, 2010, by Wright et al and
reproduced in Appendix S (.pdf version only).
Such that the cost on the aggregate link A-C is the sum of the original costs on A-
N plus N-C. (Note that it is not necessary to create a “U-turn” link, say, from A to A
equivalent to A-N plus N-A since, even though the movement may be valid in the
original network, it can never be part of a shortest path tree.)
Note that in this case, if all the original links are 2-way, then the original network
segment contained 6 links as does the aggregated segment. So, if we have not
managed to reduce the number of links, we have at least removed one node
which, given the form of equation (15.x), should still lead to an overall reduction in
cpu time.
On the other hand if one of the original links were one-way - imagine that A-N
were one-way for example - then the original segment has 5 one-way links but the
aggregated segment has only 4 (A-C, A-B, B-C and C-B) and therefore the
numbers of both nodes and links has been reduced.
A common example of a 3-arm node might be an entry ramp onto a motorway
where A-N would be a one-way entry onto a motorway with one-way links B-N and
N-C. In this case 3 links are reduced to 2.
The entry ramp configuration may be generalised to any node that has a single
one-way exit and n one-way entries such that n+1 links are reduced to n. Equally
all nodes with a single entry and multiple exits may be aggregated to save one
node and one link.
Indeed a node with any number of entry/exits may always be removed by
aggregating pairs of entry/exits. The example of a 4-arm node is illustrated below.
Note that here, if all arms are two-way, then we actually increase the number of
links from 8 to 12 in order to remove 1 node, although if one or more of the arms
are one-way the increase in links is reduced and may even represent a reduction.
(E.g., 2 one-way entry links and 2 one-way exit links reduce 4 links to 2.)
We therefore note that traffic leaving the network from zone Z has only two
possible paths available to it: Z-S1-M1-M3-B2 or Z-S2-M2-M4-A2. Equally there
are only two possible paths into Z from A1 or A2. Thus, in this situation we may
aggregate the network into 4 aggregate links – Z-B2, Z-A2, B1-Z and A1-Z – while
at the same time removing all the mini nodes at S and M. (Assuming all links are
two-way this removes 8 nodes out of13 and 8 links out of 14.)
Note that if the spigot node S has been coded as a buffer node under 33333 (see
Section 16.6.3) then a third mini-node is created at S has shown below. This
however does not change the general principle that zone Z is connected via
aggregate centroid connectors to nodes A and B but it does increase by 2 the
number of assignment links replaced.
We may further note (see also 16.6.4) that the above buffer node connector
allows possible U-turns via S 1 -S 3 -S 2 in the full network but that this possibility is
explicitly excluded in the aggregate network since, e.g., there is no aggregate link
created from A 1 to A 2 which would correspond to a U-turn.
1) Aggregate certain “priority” nodes, i.e., buffer nodes where there are
banned/penalised turns and weaving sections, where aggregation is
essential for the modelling (see 15.56.7.3);
2) Aggregate all “spigot” centroid connectors (15.56.2);
3) Aggregate stub link centroid connectors to external buffer zones (see
15.56.2)
4) Remove any bus-only links (since they will never form part of minimum
cost paths for trips in the trip matrix)
5) Aggregate all nodes which have a single exit with one or more entries
(N.B. this will include all “dummy” 2-arm nodes)
6) Ditto but with nodes with a single entry and / or more exits
7) Aggregate all nodes with, progressively, 3 arms, 4 arms, etc. etc. up to a
maximum of MAXSPA arms
Thus at the end of each step a new aggregated network is created and passed to
the following step for further aggregation. Steps 5) to 7) are repeated iteratively
with the maximum number of arms increased by one on each pass. Thus on the
first pass all 3-arm nodes are aggregated in step 7), on pass 2 all 3- and 4-arm
nodes are aggregated, etc. etc. The iterative loops are repeated until no further
aggregation is feasible or the maximum number of arms per node which may be
aggregated reaches MAXSPA as set in &PARAM (with a default value of 15).
A further rule is applied in step 7) which is that a node is only aggregated if, in
addition to having less than a certain number of arms, it also satisfies the (highly
empirical) rule that:
N new =< 23 + N in + N out + N 2w / 2
Where: N in = the number of in-bound directional links
N out = out-bound links
N 2w = number of two-way arms
N new = number of new direct links that will be created = N in * N out - N 2w
For example, aggregating a 6-arm node with 2 two-way arms, 2 one-way inbound
and two one-way outbound would create 14 new links from 8 existing links (i.e.,
we add 6 links and lose 1 node) but the above rule says to go ahead regardless.
In fact this rule allows nodes with up to roughly 20 arms to be removed even if this
seems totally counter-intuitive – empirically it saves CPU! And hencc the default
value of MAXSPA = 15 noted above.
Note that there is a large degree of overlap between some of the steps. Thus the
nodes which are aggregated under steps 5) and 6) would also be picked up under
step 7) but there may be a benefit to identifying the simplest structures and
aggregating them first before eliminating the more complex node structures.
Note as well that the number of links per node is not fixed but potentially grows
with each successive step. Thus node A may have initially have 4 arms but if one
of its neighbouring nodes B is aggregated then A will have additional links added
to all of B’s other neighbours.
At the end of the process the aggregated network structure is stored within the
.ufn/.ufs files so that it may be optionally used within subsequent assignments
and/or analyses.
not because they are judged not to exist but due to the technical problems of
being able to uniquely identify links by their A-node and B-node; e.g., in a counts
file.)
The reason that duplicates can arise in aggregate networks is illustrated below
with a segment of a “grid network”.
Eliminating zero-flow links can substantially reduce CPU time in all instances
since, empirically, it appears that over 50% of aggregate spider links may be
unused.
N.B. In principle it is possible to apply the same rules to “basic” networks but
since, in practice, there are very few if any “proper” links with zero flow then it is
not worth the added effort.
♦ The number of zones and user classes (which are the same for both basic
and aggregated networks)
♦ The number of (assignment network) nodes and links in the base network
♦ The number of newly created aggregate links which are duplicates (joining
the same A- and B-nodes)
♦ The total number of equivalent base links which the aggregate links map into
Aggregate
Original Network CPU
Network Zones UC Network Duplicates Equivalent
Ratio
Nodes Links Nodes Links
New
(5) 115 2 1,964 3,022 308 2,858 362 24,232 3.2
Town
York 176 1 1,246 2,329 340 3,026 413 16,379 2.2
(4)
Horley 229 2 4,263 6,440 621 6,313 1,063 5,89 3.3
East
1,348 7 30,633 52,277 4,926 53,363 17,028 387,600 8.6
London
M25 1,417 5 75,178 109,568 9,992 68,584 5,601 556,742 9.6
Central
1,638 7 28,587 60,325 6,064 61,922 22,645 335,510 6.0
London
South
(3) 2,520 5 57,877 93,905 8,833 96,296 23,593 753,240 2.9
London
♦ Multi-Core Frank-Wolfe;
0.50
Model 5 0.40
0.33
0.44
Model 4 0.44
0.31
0.28
Model 3 0.36
0.07
0.27
Model 2 0.15
0.06
0.26
Model 1 0.18
0.05
For example, O-D skims of, say, times along a forest may equally be calculated
on an aggregated network following the same basic procedures as for standard
networks but with one preliminary step: calculate the time (or whatever quantity is
to be skimmed) per aggregate link. CPU savings accrue from being able to
reconstruct the minimum cost paths per iteration using the much more compact
aggregate network such that similar time savings to those illustrated above for
assignment should also be achieved for skimming.
See Section 15.27.7.2 for information on aggregate skims within SATLOOK as
selected by a parameter USESPI.
Aggregated networks are also optionally used for Select Link Analysis within P1X
- see 11.8.1.12; also controlled by a parameter USESPI..
but it would be necessary, near the end of the process, to re-introduce all links
just to confirm that none of the improbable links should be reclassified. (As long as
Frank-Wolfe finds lower cost auxiliary solutions on each iteration it should not
matter if it finds the absolute minimum cost auxiliary as long as no potential paths
are being ignored in perpetuity.)
The above thoughts on eliminating certain links are based on the empirical
observation that in most spider web networks less than 50% of all aggregate links
are assigned flows so that, had they been eliminated a priori, the ultimate solution
would be the same but achieved more quickly.
Several good topics for further research!
residual flows then the differences between including or excluding the residual
flows is arguably minimal.
On the other hand the impact of a small residual flow may be considerably
amplified in certain circumstances. Consider, for example (and this is based on an
example found in a real-life network), an O-D pair separated by a single link of
100 metres with signals at the downstream end such that, at equilibrium, the
correct solution is an all-or-nothing flow along that link even if the signals turn out
to be over capacity. (Since in that case more distant O-D pairs would have options
to divert further up/downstream to avoid the congested signals but the only option
for the “local” O-D pair might involve a relatively long and costly diversion.) Hence
a distance skim along the used path should give 100 m for that O-D pair.
If, however, on the very first all-or-nothing Frank-Wolfe free-flow assignment the
initial assumption is that the signals are operating under capacity then that first
assignment may “optimistically” severely over-assign multiple O-D trips along that
link, resulting in the downstream signals have a V/C ratio of, say, 2.0 and a
queuing delay (LTP = 60) of 30 minutes. Hence an alternative route of 30 km at an
average speed of 60 kph (assuming time-only assignment, PPK = 0) could be
lower cost and that path would be selected on the second FW iteration and
therefore become part of the final solution, even if its contribution may have been
diluted to, say, 1% by the end of the Frank-Wolfe iterations. Thus, in terms of
distance skims, that path would add 0.01 * 30,000 = 300 m to the average
distance so the skimmed distance would be 400 m, not 100.
In this case a small difference in flow has been magnified to produce a very much
larger difference in outputs.
The records are sorted firstly by B-node, secondly by A-node, thirdly by C-node
and finally by error number. If the error is associated purely with a node then the
A- and C-node entries are zero; equally if the error is on a link then the C-node is
zero while for an error associated with a turn all 3 fields are used. Errors which are
not associated with nodes, e.g., errors in parameter inputs, do not appear in the
.ERL list.
The error number uses the standard numbering system as listed in Appendix L,
e.g., all Warnings are in the range 1 -99, all Serious Warnings in the range 101-
199, etc. etc.
The first 0/1 extra identifier field is used, at the moment, to distinguish whether the
error is new (value = 1) or whether it has occurred in a previous .ERL file, in which
case it is set to zero. Thus an .ERL file for a previous run of SATNET may be
defined via a Namelist parameter FILERL input under &OPTION in the network
.dat file and the errors listed in the new .ERL file are compared to those in the old
.ERL in order to identify an exact match.
The second numerical identifier field is also used in association with a matching
entry in an input .ERL file but in this case the value is simply copied directly from
the value in the old .ERL file. The thought here is that if users wish to “mark”
certain error messages as being “OK”, e.g., by writing a 1 in the second field, then
the new .ERL file simply carries this information over. If no match is found the
second identifier defaults to 0.
Thus the intention is that users might input the .ERL file output by SATNET into,
say, Excel, and then add their own numerical marks therein before either re-
creating a new .ERL file for subsequent use by SATNET or inputting the new file
directly into P1X in order to highlight certain nodes (See 15.58.2). Hence the
procedure could be used as part of an “audit trail” where errors which have been
checked and approved might be assigned one numerical values and errors which
have not been checked could be assigned a different value.
It must be emphasised that at this stage in its development the concept of a
.ERL file is still highly fluid and we are very much open to suggestions from
users as to the basic format and contents of such files and equally the uses
to which they might be put.
which have been included within the .ERL file but with extra tests based on values
stored in the first and/or second “extra” data fields.
In both cases a “critical” value needs to be defined by the user but its application
differs between whether data from Field 1 or 2 is to be used. Thus with Field 1 the
test is based on equality; i.e., if you set a critical value of 1 only those error
records which have a 1 in Field 1 will be selected. Under 2 the test is “greater than
or equal”; i.e., all entries whose Field 2 value >= the critical value are selected.
In addition the second field differs in that the colour used to highlight the selected
nodes depend upon the value in the second field. Thus a low value might be
displayed with a light colour and progressively higher values with progressively
darker colours in order to indicate possible degree of urgency as set by the user.
The pens to be used for different numerical values are pre-defined within the
program but may be over-written using parameters NP_ERL(n) within the (most
recent) preferences file P1X0.DAT.
We repeat the information given above that, at the moment, Field 1 is set as either
0 or 1 within SATNET depending on whether an error is “old” or “new”, whereas
Field 2 is intended to be manipulated externally by the user via, say, Excel, prior
to its use in P1X.
would indicate that all zone names in the range 10 through 19 would be assigned
to group 2 (and that zone 9 would be in group 1).
Note that 19 need not necessarily be a valid zone name itself, it simply represents
an upper limit, in which case the “true” upper limit would be the maximum zone
name lower than 19. The lower value of the range is the previous upper limit plus
one. If a negative number is used to indicate an interval the absolute value of the
negative number must be greater than the absolute of the previous number in the
list. If as above a positive number is used (e.g., 9) to set the previous line that
zone name must exist.
Therefore it is recommended that you use either all intervals (negative numbers)
or include all zone names in the Z2* file using the philosophy that the point of
using intervals is for the process not to fail and the point of using a zone by zone
list is that you want the process to warn you about missing elements by failing.
Errors occur and are noted if a record does not consist of two integers, if a zone
cannot be identified (excluding negative values above) and if some zones are not
assigned to groups. These may or may not result in the operation being rejected.
Blank records are allowed and ignored as our comments, i.e., records with a * in
column 1.
In order to process a Z2G file the zone names (and their number) must already be
known but the set of group names and their total number are only known and fully
specified after the Z2G file has been processed.
Note that the Z2G format also corresponds to a simplified version of the Records
2 used by the batch file MXM5; see Appendix W.3.
SECOND RECORD (RECORD TYPE 2) - DATA FOR THE LINK FROM NODE
45 TO 44
Col. Nos. Input Remarks
9 - 10 45 Node at the other end of the link
15 0 Number of entry lanes equal to zero here means a one-
way outbound road
20 0 *
25 0 *
* Link times and lengths are not relevant for one-way streets nor is it necessary to
code any information regarding turns which clearly do not exist.
THIRD RECORD (RECORD TYPE 2) - DATA FOR THE LINK FROM NODE 16
TO 44:
Col. Nos. Input Remarks
1–5 blank Stacking capacity for this link is to be estimated by default
as 2 x 200 / ALEX (2 = lanes, 200 = dist.
9 - 10 16 A-node for this link
15 2 Two approach lanes
19 - 20 25 Link free run time is 25 seconds
23 - 25 200 The link is 200 metres from middle of 16 to middle of 44
30 0 Left turn to node 43 is banned
31 blank No priority marker and
33 blank no lane specification needed for
35 blank missing turns.
36 - 40 1700 Sat. flow for straight-ahead movement
41 blank No priority marker required
43 1 This turn can only be made
45 1 from lane 1.
46 - 50 1600 Sat. flow for right turn to node 45
51 X Opposed right turn
53 2 This turn can only be made from
55 2 lane 2.
The fourth and fifth records contain similar data for each of the other two links to
node 44 in clockwise order, i.e. 43 and 55.
(N.B. The coding above could have been simplified by specifying 43 in cols. 29 &
30 and zero in column 35 as this would imply that all turns from 43 were green. In
this case NGM in column 25 would be 2.)
Records 7, 8 and 9 for this node contain similar data for the subsequent stages.
The effect of the stage definition records is briefly as follows. During the first stage
all three movements from node 43 are permitted, but after 19 seconds the
straight- ahead and right turns go red. After a further 4 seconds a right filter arrow
is displayed for turn 16-44-45, this display continuing for a further 10 seconds.
Note therefore that the left-hand turn 43-44-45 is continuously green for 33
seconds from the start of the cycle, i.e., it is green during the first inter-green
period of 4 seconds. Since there are no common movements between stages 2
and 3 all displays must be red for 7 seconds. The inter-green time of 0 in stage 3
implies that stages 3 and 4 run smoothly from one to another, the only difference
being that movement 55-44-16 becomes red during stage 4. Finally since there
are no common movements between stages 4 and 1 the 5 second inter-green
period after stage 4 is red for all movements.
16.2 Roundabouts
55 2 25 2800 1 2 2800 1 2
FIRST RECORD
Col. Nos. Input Remarks
5 44 Node number
10 4 Number of links
15 2 Node type
20 4 It takes 4 seconds to fully circle the roundabout.
22 - 25 3600 Maximum permitted flow at any point on the roundabout.
26 on blank Default values for LCY, NUC, GAPR and GAPM
to be used at this node.
The next four records (Record type 2) contain the link data for the four links as
described in 16.1. Since it is a roundabout records Type 3 are not required.
Notes:
1) All turn capacities from a single link should either be equal to the link exit
capacity or zero if they are banned turns. This is because the program
assumes that all turning movements have equal entry onto the roundabout
and hence that no one turn can have a greater capacity than any other.
2) Note that the roundabout capacity, 3600, is greater than any of the individual
entry arm capacities. This will have the effect of always allowing some flow
to enter from an arm even if the flow across the arm were at the nominal
capacity of its entry arm. For example if there were an assigned flow of
3000 pcu/hr from node 43 to node 16 (with no cross flow at its entry point so
that the actual flow would also be at capacity) entry from nodes 55 and 45
would not be entirely blocked. If however the maximum roundabout flow
had been defined as 3000 there would be no entry permitted from either
node.
3) The lane allocations are not in fact used yet by the program although it is
anticipated that eventually they will be.
4) None of the priority markers refer to roundabouts.
5) Note that no stacking capacities have been explicitly given in columns 1-5;
hence they will be calculated by default from the number of lanes, the link
distances and ALEX.
6) Had the node been coded as junction type 5, roundabout with U-turns, no
extra data would have been required on the link data records. The program
automatically generates U-turns to and from nodes 55 and 16 since these
are 2-way roads. No saturation or lane data for the U-turns should be
entered - if it is, it is ignored.
7) The coding above would almost certainly generate a Serious Warning 138
because the saturation flow from 2 lanes from 16 is 1,700 whereas for two
lanes from 43 it is 3,000; i.e., 850 per lane vrs 1500 per lane. While this is
not an impossible “on the ground” situation it is unlikely that two different
entry arms at the same roundabout would have such different saturation
flows per lane; i.e., they would be constructed with much more similar
engineering design.
FIRST RECORD
Col. Nos. Input Remarks
5 5 Node number
10 3 Number of links
15 1 Node type
16 - 20 blank N.B.This field not used at all by priority junctions
21 - 25 blank N.B.This field not used at all by priority junctions
26 - 30 50 Cycle time of 50 seconds
31 - 35 blank Use default value of NUC
36 - 40 25 Replace GAP by 2.5 seconds
SECOND RECORD
Col. Nos. Input Remarks
1-5 blank Stacking capacity calculated by default
10 3 Link from node 3 to node 5
15 2 Number of approach lanes
19 - 20 20 Free run time
23 - 25 100 Link length
27 - 30 1600 Saturation flow for turn 3-5-6
31 blank No priority marker; i.e., a major arm
33 1 This turn can only be made from
35 1 lane 1
37 - 40 2500 Saturation flow for turn 3-5-4 ...
41 blank which must also be from a major arm.
43 1 This turn can use either lane 1 (which it
45 2 shares with the other turn) or lane 2.
THIRD RECORD
Col. Nos. Input Remarks
1-5 blank Stacking capacity calculated by default
10 6 Link from node 6 to node 5
15 2 Two lanes
20 7 Free run time is 7 seconds
24 - 25 50 And the link length is 50 metres
27 - 30 1200 Saturation flow for turn 6-5-4
31 G Turn 6-5-4 is a give-way turn from a minor link.
33 1 First lane used by turn
35 1 Last lane used by turn
37 - 40 1000 Saturation flow for turn 6-5-3
41 G This is a give-way turn out of link 6-5
43 2 This turn can only ...
45 2 ... use lane 2
FOURTH RECORD
Similar to the above two; note that the X implies that the turn from node 4 toward
node 6 is an opposed right turn off a major road and therefore gives way to turns
3-5-6 and 3-5-4, but not to turns out of 6-5 which is a minor link.
Assuming that node 58 above represents an external node connected via a (2-
way) road to an internal node 1 it might be coded as:
58 1 0
1 1 50 500
FIRST RECORD
Cols. Input Remarks
1-5 58 Name of the node
6 - 10 1 Connected to one other node
11 - 15 0 External node
16 ----- blank No other data required
SECOND RECORD
Cols. Input Remarks
6 - 10 1 Connection with node 1
11 - 15 1 Link 1-58 has 1 lane,
16 - 20 50 A travel time of 50 seconds, and
21 - 25 500 Is 500 metres long.
26 ---- blank No further data required.
In this case one would expect either that node 58 would be directly connected to a
zone via an external simulation centroid connector as illustrated in 16.6.2 or that it
would be part of the buffer network. But preferably not both! And certainly not just
to another simulation node as this is a fatal error; see 18.8.
Assuming that node 5 is a dummy node inserted in the middle of the two-way road
between nodes 4 and 6 it could be coded as:
5 2 4
4 1 50 500 1500 1 1
6 1 40 500 1500 1 1
FIRST RECORD
Cols. Input Remarks
1-5 5 Name of the node
6 - 10 2 2 entry links
11 - 15 4 4 implies that 5 is a dummy
SECOND RECORD
Cols. Input Remarks
1-5 blank Stacking capacity to be calculated by default
6 - 10 4 The link from 4 to 5 has ...
11 - 15 1 ... a single lane ...
16 - 20 50 ... a travel time of 50 seconds and ...
21 – 25 500 ... a distance of 500 metres.
26 - 30 1500 The first turn, i.e. 4-5-6, exists with a (nominal) capacity of
1500 pcu/hr, and ...
33 1 ... uses lane 1 only
35 1
and would imply that zone 5 is connected to link (3,5). In terms of traffic
movements the implication is that traffic TO zone 5 leaves from a point just
beyond node 3 and that traffic FROM zone 5 enters the link at a point just before
node 5, as indicated in both cases by the dashed lines. The effect is as though
traffic were parking on the link somewhere between nodes 3 and 5.
Note that in this case we have a zone numbered 5 (denoted by a triangle) and a
node numbered 5. Since these numbers appear in quite different positions in the
input the computer at any rate will always be able to distinguish them.
Nevertheless the user may become confused by exactly what 5 does represent,
so that the practice of having identical node and zone numbers is not necessarily
recommended. (Although there might well be situations where the zone is very
closely associated with one node so that it would be useful to give them the same
numbers.)
As indicated above link (3,5) is a one-way street from 3 to 5. The movements to
and from the zone would be the same if (3,5) were a two- way street - a separate
connector would need to be defined to allow for entry to the zone from node 5 and
exit to node 3. In this case the coded data would read:
5 3 5 5 3
However, were the link one-way in the opposite direction an error would result
since in that case there would be no such one-way link as (3,5).
In the diagram above we shall assume that 7 has been coded as an external node
but that nodes 3, 6 and 5 are all internal, so that one might think of there being a
cordon cutting link (7,6) with the simulated network of interest lying to the right. In
this case the centroid connector may be defined under 22222 by either:
5 7 6
or
5 6 7
In either case it would be assumed that traffic from zone 5 enters the network at
node 7 and proceeds along link (7,6), while traffic to zone 5 exits from node 7 after
taking link (6,7).
Note that in this case we are assuming that (7,6) is in fact a two-way link. Were it
a one-way link in the direction 7-6 then only one centroid connector representing
traffic leaving zone 5 would be created, and similarly if it were one-way in the
opposite direction only the entry connector would be created. In such cases the
link could be coded as either (6,7) or (7,6) since, having identified node 7 as
external, the computer will make the appropriate checks as to whether the link is
one-way.
As above we use 5 to denote both a zone and a node, although in this case it
would appear to be more sensible to denote the zone by 7 since that is the cordon
point node at which it enters and/or leaves.
Note that this configuration corresponds to a “spigot” centroid connector as
described in section 5.1.8.1.
16.6.3 Zones connected to an External Simulation Link via a Buffer Node (33333)
The (spigot) configuration depicted in Fig 16.6, where zone 5 is connected to an
external simulation node 7, may also be achieved by including node 7 within both
the simulation and the buffer network definitions with the actual centroid connector
set within the 33333 data records, not the 22222 records. Thus node 7 would be
included as an external simulation node within the 11111 records (possibly
making use of AUTOX = T) while the 33333 data set would include a record such
as:
C 5 7 …. (times, distances etc. to follow)
When viewed at the level of the “map network” (i.e, as plotted by P1X) both the
22222 and 33333 inputs would appear to be exactly the same (e.g., as in Fig.
16.6). In both cases traffic leaves the zone and enters the simulation network
proper along link 7-6 and conversely, exits the network and enters the zone along
6-7.
However there are subtle differences. Thus in Fig. 16.7(a), 33333 coding, it is
possible for traffic to make (in effect) a U-turn A1 to C1 to C3 to C2 to A2. By
contrast when the connector is defined within 22222, Fig. 16.7(b), node C3 does
not exist and direct links C1-Z and Z-C2 do not permit a U-turn at Z.
Since, generally speaking, U-turns are undesirable the 22222 representation of
Section 16.6.2 is to be (strongly) preferred to an entry under 33333.
It also worth noting that as the final link to the zone is in the buffer network, rather
than the simulation network, any queued traffic travelling to this particular zone
and held up in the simulation network will ‘re-appear’ on the buffer link (see
section 8 for more details on downstream flow metering that only occurs in the
simulation network).
There are also extra overheads created by having an extra buffer node within the
assignment network and (up to) 2 extra assignment links; for example it increases
the assignment CPU time necessary to build and load minimum cost O-D routes
by, typically, a few percent.
On the other hand it is easier using the 33333 records to ascribe specific
properties of time, distance and, e.g., tolls to a centroid connector whereas the
22222 representation implicitly assumes zero time and distance. Note that this
does not, however, apply to KNOBS data defined via an external file; see section
15.14.5.
flows at the car park which one wishes to use to estimate the trip matrix using
SATME2. In 16.6.1 one cannot unambiguously associate these flows with a link,
in 16.6.2 one can.
This form of coding also allows one to assign a “time” to link 6-7 to represent, say,
a parking charge on entry, or even to assign a link capacity-restraint curve as
described in Sections 20.5.3 and 15.13 respectively.
Another example of a case where one might wish to use the more precise location
of zone connectors would be where link (3,5) was a relatively long link with
exit/entry mainly near one end. A further disadvantage to the internal style
connections is that the actual flow on (3,5) is underestimated by ignoring the
beginning and ends of trips. Again, if the link is a particularly long one, this may
lead to significant understating of travel times and distances. See Section 15.16.
(An alternative, and in some respects simpler, coding solution to the above
problem is to code two dummy nodes in the middle of a long link with a very short
‘dummy link’ in between to which the zone is connected.)
former value. Alternatively one may use the option to define link speed-flow
curves (6.4.12) to represent the relationship between speed and flow on the
motorway link (as distinct from junction delays); indeed this facility was
created largely with motorways in mind.
5) Weaving sections between a motorway and a slip road (joint entry and exit)
may be modelled using a W turn priority marker; see 6.4.2.5.
Let us further imagine that each junction has a capacity of 1,000 pcu/h and that
the trip matrix to be assigned consists of an hourly demand of 2,000 pcu/h from
left to right (i.e. from A to D) with no alternative routes and no other traffic. (We
might well question at this point what we actually MEAN by the trip matrix. We
shall assume that the hourly demand of 2,000 implies that 2,000 pcus arrive
uniformly at A during the hour to be modelled, even though clearly less than half
will actually complete their trip during the hour. Whether this picture of the demand
is realistic is not a question that is normally resolved during the assignment stage,
but one which needs to be more closely considered elsewhere in the overall
modelling procedures.)
What would clearly happen under these circumstances is that a queue would
develop at A such that the 2,000 pcus would require 2 hours to clear. The
average delay at A would be somewhat in excess of 30 minutes (since the first
pcu to arrive would suffer only a small delay and the last pcu to arrive would
queue for an hour with a linear increase in between), and a proper flow-delay
relationship should give this value. However there should be no comparable
queues building up at any of the 3 remaining junctions and they would operate at
capacity over the next two hours. Hence their average delays would be relatively
small, i.e., much less than 30 minutes.
Conventional assignment models would assign an hourly flow of 2,000 to all four
junctions and therefore, if they are to model the delay at A correctly, calculate
delays of 30 minutes at B, C and D as well. They, therefore, “double-count” the
queuing delays downstream of the “actual” queues.
In SATURN terms these problems do exist in the buffer network but – as we shall
see in the next sub-section – are dealt with by the simulation. (Although the
problems may be reduced in buffer networks via the UNIQUE option; see 15.48.)
Conventional / buffer network assignment models are therefore faced with two
problems:
♦ The spreading of queued traffic over a longer time period than that implied by
the input trip matrix.
1
N.B. We differentiate here between “permanent” queues at over-capacity junctions and
“transient” queues which build up and dissipate, for example during the red cycle at traffic signals.
The ability to model a time period whose initial conditions (including the presence
of queues in the system) correspond to the final state of a previous time period, is
controlled by the logical parameter PASSQ in the &OPTION namelist input to
SATNET on the network data file. If PASSQ is TRUE the initial state is set
according to that recorded on the output file from the previous time period.
If two successive periods were to be modelled, the following procedure would
apply:
1) Run SATURN in the usual way for the first time period. For this run
PASSQ =.FALSE. in the initial network data file. (N.B. This is its default
value so that no mention need be made of PASSQ, as indicated in
Section 6.1.) Thus using the SATURN procedure one might command:
SATURN network1 tripod1
2) or by
SATURN network2 tripod2
where the name of the “passq’ed” file is defined under &OPTION, see
6.1; e.g. UPFILE = ‘network1.ufs’.
The effect of the above procedure on the second time period is as
follows:
♦ The residual queues at the end of the first time period and the
“suppressed traffic” (as defined above in 17.2) are calculated from
the input UFS file.
♦ In addition the residual queues per turn (which are in pcus) are
converted into an “effective” fixed flow (in pcus/hr) equal to Q/LTP
which is added to the link “downstream entry flow” for the purposes
of the assignment (see 15.16.2).
♦ The residual queues from the previous time period are also taken
into account in the delay calculations for the current time period for
those specific turning movements.
Thus if we look at the “permanent” queue of traffic on a single link over several
time periods it might resemble that sketched in Figure 17.1
Figure 17.1 - Growth and decay of over-capacity queues
Thus starting from zero queue at the start of time period 1 it grows linearly over
the first time period, continues to increase in the second, stays constant in the
third and disappears during the fourth.
FURTHER NOTES:
1) The networks defined in different time periods need not be identical.
Thus it is permissible to introduce, say, tidal flow schemes or new traffic
control settings. Suppressed flows on link A-B in one time period are
transferred to a link A-B in the next time period; if A-B does not exist then
no flow is transferred.
Thus problems may exist if, say, A-B is divided into two links A-C and C-
B in the second time period; the solution here is to ensure that node C
exists in all networks, even if sometimes it is only a dummy node
2) Equally the trip matrices may differ as well, although how this is done is
left to the user.
Given the difficulties of getting “good” trip matrices for even one time
period we would recommend that, unless peak spreading models are
being applied, trip matrices for successive time periods be set by simply
multiplying a “master” trip matrix by a uniform profile determined, for
example, by the average of observations at several sites. This may be
done using the FACTOR option in MX or, much more conveniently, the
parameter GONZO may be used to factor the matrix to be assigned; the
end effects are identical. See 17.4.3)
3) The above procedure does not apply at all to the buffer network which of
course is treated in the conventional manner without queues and without
fixed flows.
4) The value (s) of LTP refers to the individual time periods, not the total
time period modelled. Thus to model a 2-hour period subdivided into four
half-hour sub-periods the value of LTP should be 30, not 120. (This is not
to say that each sub-period should be of the same duration; different
values of LPT may be set in different time periods.)
as opposed to copying and editing the original .dat file to include an entry ‘PASSQ
= T’.
Thus the command:
SATNET network PS tp2
reads the basic network data from file ‘network. DAT’ but overwrites the values for
PASSQ and/or GONZO from a file ‘tp2.PS’ as illustrated above.
The reason for allowing a .ps file to over-write GONZO is to allow you to use the
same basic trip matrix for all time periods but to introduce time period-specific
factors set by GONZO.
assumes a basic network file ‘network.DAT’ and a basic trip matrix file ‘trips.UFM’
which are to be assigned over 4 time periods (set by the final parameter), where
*
files in the different periods are denoted by suffixes A, B, C and D respectively.
Thus a set of files networkA.UFS etc. are produced in time period 1, networkB.ufs,
in the time period 2, etc., etc.
The user is required to produce 4 separate ‘.PS’ files, postA.PS ... postD.PS
where all 4 files may (if they wish) define values for GONZO, ie. trip matrix factors
for each time period, and files postB.PS ... postD.PS MUST set PASSQ=T.
The .BAT file works by copying network.dat into time-period specific data files
networkA.DAT, ..., etc., and running the full SATURN procedure for all 4 time
periods with the PASSQ option invoked in time periods 2 to 4. The file structure is
illustrated in Figure 17.2.
Figure 17.2 - File Structure for Multiple Time Period Assignments
*
N.B. Under DOS this requires that the "name" of the base network file must be 7 characters or less
in order that the suffixes A, B, C etc may be added and still be 8 characters or less.
multiple time periods automatically and offers three different methods for defining
time-dependent trip matrices.
The first uses a fixed “base” trip matrix with global time-dependent GONZO factors
set by the additional namelist facility described in Appendix B whereby parameters
appropriate to different time periods may all be contained in a single .dat file by
the use of subscripts. Thus if a network.dat file contains &PARAM definition
records:
TIJFIL = ‘TRIPS.UFM’
GONZO(1) = 0.8
GONZO(2) = 1.2
GONZO(3) = 0.9
this defines GONZO values of 0.8, 1.2 and 0.9 for time periods 1, 2 and 3 as
factors applied to base matrix trips .ufm. (N.B. Recall that all trip matrices are
defined as rates in pcus/hr, not as absolute trips, so that the GONZO values
should be of the order of 1.0, not, say, of the order of 0.25 if a time period is being
divided into 4 sub-periods.)
Secondly individual time-period specific trip matrices may be defined in the .dat
files under &PARAM using subscripts; e.g.:
TIJFIL(1) = ‘TRIPS1.DAT’
TIJFIL(2) = ‘TRIPS2.DAT’
TIJFIL(3) = ‘TRIPS3.DAT’
Specific file names are required whenever they are not multiples of a common trip
matrix as occurs, for example, with peak spreading models (17.12).
Finally a single (i.e., not subscripted) trip matrix may be defined in the .dat file but
it must be a “blocked” matrix; i.e. one in which individual trip matrices per time
period (as in method 2 above) have been combined together into a single .ufm file
following the principles described in 10.2.5. Thus the .dat file might include:
TIJFIL = 'TRIPS123.DAT'
SATTPX is therefore a far more flexible method than that described in 17.4.2 so
that SATTPX effectively supersedes SATTP and the use of time-period subscripts
in data files also supersedes the need for users to set up specific .ps files. (.ps
files are still used - they are merely invisible to the user.) The file structure under
SATTPX is identical to that under SATTP as illustrated in Figure 17.3.
Note that, with later releases of the bat file (10.4 onwards?), SATTPX also
explicitly runs SATSUMA (see 17.5 next) at the end of multiple time period runs in
order to save the user having to call another bat file.
17.4.4 Multiple Time Period Network .Dat files: The use of Subscripts
The use of subscripts has been mentioned above in connection with the definition
of different trip matrices per time period and different LTP values; the procedure is
in fact general and may be applied to almost all parameter values set under
&PARAM in a network .dat file. See Appendix B.
(where the parameter 3 defines the same number of time periods as under
SATTPX) to create a single output file:
network.uft
which has the same basic function as a .ufs file but which contains not only data
from each time period but also suitably aggregated data over all time periods. For
example a .uft file contains not only the flows in each individual time period but
also the average flow over all time periods. .Uft files may be input into P1X,
SATDB etc and both aggregate and/or disaggregate data displayed.
Note, however, that the .bat file SATTPX explicitly calls SATSUMA as its final
step (see 17.4 above) so that generally there is no need for a separate additional
call to SATSUMA – although there is no harm in doing so.
In addition to aggregating link/turn data SATSUMA also aggregates summary
statistics so that one may use a .uft file to display total vehicle hours, total vehicle
kms, etc over the full time period. The advantage of using SATSUMA as opposed
to a “DIY” approach is that it avoids problems of “double counting” since flows
which are passed as queues from, say, time period 1 to time period 2 tend to
appear in statistics for both time periods.
Depending on the type of data involved SATSUMA will either:
♦ Add, as with fuel consumption which is stored in absolute terms, not as rates.
♦ Take data from the final time period, as in queue at the end of the time period.
In addition time - independent data such as link lengths are only stored once in
order to save space.
However, partly in order to save space, .uft files do not store full simulation data
such as cyclical flow profiles from each time period so it is not possible for
example, to edit and re-simulate individual nodes. Neither is the SAVEIT option
valid within .uft files so it is not possible to recreate routes from individual time
periods. For detailed analysis of these sorts the individual files networka.ufs etc
must be accessed.
Within standard bat files “T” and “UFT” may be used in virtually the same way that
“S” and “A” or “UFS” and “UFA” are used. See 14.2.2. For example you may use:
SATLOOK network UFT
Or
SATDB net1 UFT T 2 net2
Thus in the first time period (0<t<LTP) Q t represents an average transient queue
(see 8.4.8) while the permanent or over-capacity queue grows from O to Q 1 (so
that the average over-capacity queue would be Q 1 /2). Note that the growth of this
queue may be limited by blocking back, in which case the queue effectively
continues to grow on the preceding link(s) and, possibly, on inbound centroid
connectors. However in this case those delays are associated with the preceding
link(s), not the link at the “head” of the queue.
During the second time period, as illustrated here, the newly arriving flow is less
than capacity so that the permanent queue declines (line AC) but has not gone to
zero by the end of the second period. If however we just consider the Q 1 pcus
present at the start of the second period they decrease linearly (line AB) at a rate
equal to the capacity such that at time t x they have all passed through.
The delays experienced by the traffic arriving on this link in time period 1 may
therefore be subdivided into four components.
1) Transient delays in time period 1, with total pcu-hrs given by the area (1),
the product of Q t and LTP.
2) Permanent queuing delay in time period 1 represented by the triangular area
(2) equal to Q 1 x LTP / 2.
3) The time spent by the Q 1 pcus in the permanent queue in the next time
period, triangle (3), plus....
4) ....the time spent in the transient queue in the next time period, rectangle
(4)**
The situation becomes more complicated in the second time period where not
only do we have queued traffic from the first time period but also newly arrived
traffic from the second period. Their delays are represented by areas (5) and (6)
with the possibility of extra delays in even later time periods. And to further
complicate matters the newly arrived traffic may be partly made up of traffic from
time period 1 which was caught up in queues upstream and arrivals later on in the
time period. Thus a portion of the over capacity queue (5) and the transient
queue (6) in the later time period(s) may be associated with queued-up traffic from
time period 1. Section 17.6.2 elaborates further on this topic.
Queue lengths are converted into delays by dividing by an appropriate flow -
generally the capacity for over-capacity movements or the arrival/departure flow
otherwise.
However in defining delays we may need to differentiate between the delays
experienced by traffic originating and/or arriving within that time period (part of
which may take place in later time periods) and delays purely within a single time
period (to include previously queued traffic).
Different functions may require subtly different definitions. Thus for assignment
purposes - where we are concerned with establishing routes for the new traffic on
the network - the relevant definition of delay per turn would need to consider:
Delays to newly arriving traffic (as opposed to traffic in queues at the end of the
previous time period).
**
For ease of illustration we have shown the transient queues in time periods 1 and 2 to be
equal; they need not be.
Delays incurred in later time periods by the newly arrived traffic (if there are
queues at the end of this time period).
For the purposes of assignment the most relevant delay is that experienced by the
traffic generated within that time period since that determines their route choice.
However for simulation purposes a more relevant definition of delay would include
both the new traffic and the previously queued traffic. For further discussion on
this point please see sections 17.8 and 17.10.
Note however that these problems only occur with over-capacity queued turning
movements and not with transient queues.
“typical” example being given on the next page. The following points may help in
an interpretation of this output:
1) ‘AVERAGE DELAY’ is the average delay in seconds to pcus during the time
period (LTP) modelled. In the case of turns with permanent queues at the
beginning and/or the end of the time period the delay varies within the time
period but the average time spent in the queue is included within AVERAGE
DELAY. It includes both newly arriving traffic plus queued traffic; thus areas
(3), (4), (5) and (6) for time period (2) in Figure 17.4. (It does not, however,
include any possible delays arising from capacity-restraint curves on the link
(8.4.4); it may help to think of it as “stop-line delay”.)
2) The ‘ASGND FLOW’ is the assigned or demand flow as given by the
assignment while the ‘QUED UP’ flow is the suppressed flow due to queues
upstream from the current node. The difference of these two gives the
‘ARRIVE FLOW’ which reaches the node. ‘QUED HERE’ gives the rate at
which a permanent queue develops, so that subtracting this from the previous
column gives the ‘ACTUAL FLOW’ leaving the node. Note that these are all
given in pcu/h; i.e. they are rates, not absolute figures.
3) For turns, links and/or nodes with permanently queued pcus present at the
end of the time period the “tail back” at the beginning and end of the time
period is given in brackets on the line following that in which the ‘queuing rate’
is given. Thus in the above example a permanent queue builds up for turn
48-22-23 such that at the end of the time period (here 30 minutes) a tail back
of 47.0 pcus would have formed, with no permanent queue present at the
start of the time period.
4) The delays totalled for each link and for all turns at the node are “weighted”
averages where the weight for each turn is the arriving flow. The “total
capacity” given for each link is the sum of the individual turn capacities on
links where there is no lane sharing, but is less than their sum when there is
lane sharing in order to avoid any “double counting” of spare capacity in
lanes. For a full discussion of how turn and link capacities are defined please
see 8.9.
5) Various text characters - +, & etc., - may appear in the output tables to
indicate certain properties of a particular turn or link. For example a ‘*’
following the delay indicates that the cycle times are different at the upstream
node and that therefore any signal co-ordination will have been lost (which
may, in turn, affect the delay calculations).
Similarly at the end of the line:
♦ * indicates blocking back,
♦ % indicates mid-link capacity restraint,
♦ ! indicates weaving and
♦ + denotes the fact that there are extra queues waiting on in-bound
centroid-connectors.
not they depart) travel the full length of the link during that arrival time period. By
contrast the vehicles queued upstream travel the full distance in later time periods.
Hence in the statistics described below any pcu-kms in later time periods can only
arise from pcus queued upstream.
Note that the “next time period” statistics are, of necessity, only estimates since a
model based on, say, the half hour from 8:00 to 8:30 has no way of knowing what
traffic conditions will be like after 8:30. The estimates of future queues are
controlled by the parameter AFTERS as described in 17.6.2. A more correct set
of figures may be obtained if you are using the PASSQ option, see Section 17.3,
in which case the summary statistics for the PASSQ flows in the next time periods
may be substituted as done by SATSUMA.
Similar tables are produced, in addition to those for total pcu flows, at a more
disaggregate level either by flow (e.g. by user class) and/or capacity index/TfL
traffic borough/zonal grouping. See 11.11.4.
N.B. In order for data disaggregated by capacity index to include delays per
turning movement in addition to pure link-based totals make sure that the
parameter BEAKER is set to .TRUE. in your original network .dat file, otherwise
the indices defined by link do not get extended to the downstream turns. See
5.1.9.
Table 17.2 - Simulation Network Absolute Totals
queues on the links and, if there are any, queues on centroid connectors due
to blocking back (see 8.5))
♦ TOTAL TRAVEL TIME: The sum of both link and junction times.
Here absolute totals, e.g. pcu-hrs, are subdivided by link type - simulation (S)
which here includes queues on simulation centroid connectors, buffer links (B)
and buffer centroid connectors (BCC) - and by this time period / later time periods.
Thus the simulation-based totals are not as disaggregate as those in Table 17.2
but are similar to those defined in the buffer networks.
In the buffer network link times are divided into three components to provide
comparability to simulation statistics:
not include any flows assigned under PASSQ. Finally under elastic assignment it
represents the final trips which are assigned to the road network and should
therefore be identical with the total number of trips in the output road trip matrix.
The data given in Table 17.3 are, in general terms, the “best” statistics to use for
overall network performance since they include all network components - buffer,
simulation, centroid connector - at the equivalent levels. They supersede - and
should be used in preference to - the “assignment network statistics” available
within SATLOOK which do not differentiate sufficiently clearly between demand
and actual totals, i.e. totals within this and later time periods.
1513* - DELRD: The average turn delay per vehicle (pcu) on a simulation link
weighted by turning flows plus any delays on the link from link
capacity constraints. The turn delays are based on those in 1633.
N.B. Both transient and queuing delays from V>C are included.
1543* - TLQT: The total pcu-hrs of delay per link within the current time
period, e.g., areas (1) and (2) in fig. 17.3 for an initial time period on
areas (3) to (6) for later time periods, plus any delays on simulation
links with speed-flow curves.
1633† - DEL: The turn delay per simulation turn including both transient and
over-capacity queuing effects but excluding any delays associated
with link capacity-restraint curves.
1653† - DEL_TR: The “transient” delay per simulation turn; i.e. excluding any
delays associated with over-capacity queuing.
1803 - FTIME: The “free-flow” time on all links within the assignment
network. For simulation turns (which have zero distance by definition)
this represents the delay for arrival flows approaching zero but with
all other flows (opposing or lane sharing) at their current value; it
therefore represents the minimum possible values for total turn delays
in, say, 1633 or 4003 and it is definitely considered as a delay. On
the other hand for all other assignment links which have a distance
(i.e., including simulation links) 1803 represents the cruise time at the
maximum link speed and in these cases should not be considered as
a “delay” component.
1853 - DATC: The delay at capacity, i.e. the difference in travel times
between flow=capacity and flow=zero. This may be used to
“parameterise” the flow-delay equations: see ??
4003 - Assignment Time: The times for each assignment link as calculated
during the assignment process as given by equations (8.5) (or, strictly
speaking, their more complex forms (8.11)).
4013 - Simulation Time: As 4003 but with the times for simulation links or
turns updated according to the simulation which follows the
assignment; i.e. using the data in 363 and 1633.
4023* - Simulation Time by link: Identical to 363.
The table below lists, in symbolic form, the absolute totals statistics within the
simulation network as illustrated in numerical form in Table 17.2.
TIME PERIOD: THIS NEXT TOTAL
Transient Queues (pcu/hrs) TQ.1 TQ.2 TQ.3
Over-Capacity Queues (pcu/hrs): CQ.1 CQ.2 CQ.3.
On Links CQL.1 CQL.2 CQL.3
On Centroids CQC.1 CQC.2 CQC.3
Link Cruise Time (pcu-hrs): LT.1 LT.2 LT.3
(Free Flow) LTF.1 LTF.2 LTF.3
(Delays) LTD.1 LTD.2 LTD.3
Total Travel Time (pcu-hrs) T.1 T.2 T.3
Travel Distance (pcu-kms) D.1 D.2 D.3
Stops (Primary) PS.1 PS.2 PS.3
Stops (Secondary) SS.1 SS.2 SS.3
Fuel Consumption (litres) FC.1 FC.2 FC.3
The totals above may be calculated from the formulae given below, thus rendering
all output statistics totally transparent to the users. It also makes it possible for
users to calculate statistics for, e.g., a subset of links or for a particular user class.
Elements such as X1653, X4513 refer to the data contained in DA arrays 1653,
4513 etc, parameters such as LTP and AFTERS refer to standard namelist
parameters described in 6.3 and the numerical values such as 3600 and 60 are
necessary to convert, e.g. seconds into hours. Division by 2 is sometimes used
(e.g., in CQL.1) to calculate an average queue which is half the final queue.
WARNING: The formulae given implicitly assume that multiple time periods and
PASSQ are not being used such that the queues at the start of the time period
are zero. In particular this affects the queuing statistics CQ.1 etc. and other
formulae, e.g., fuel consumption, that make use of them. In principle it would be
possible to write down the correct formulae but it would be complicated!
In addition they do not include any contribution from buses on reserved lanes
which must be added some (not all) of these categories. A separate set of
equations is given in 17.11.3.
To calculate any of the quantities below it is necessary to first read the required
DA arrays into, say, SATDB or an equivalent spread sheet, calculate new data
columns following the formulae given and then sum individual link values over a
certain subset. Thus to calculate TQ.1, transient queues in “this” time period, first
read in DA arrays 1643 (turn capacity), 1653 (transient delay per pcu) and 4513
(actual flows), perform the calculation indicated and sum over all simulation turns.
Note that in certain cases not all simulation turns or links should be included but
an extra condition needs to be applied; e.g. that there is a permanent queue
greater than zero on that link or turn, as with CQL.2. The select rules are given on
the far right.
In addition certain sums, e.g. CQL.2, are best calculated via certain “intermediate”
variables. Thus Q represents the number of queued pcus at the end of a time
period.
Quantity Formula Sum Over Select
TQ.1 X1653/3600 * min( X4513, X1643 ) * LTP/60 Sim Turns
TQ.2 TQ.3 - TQ.1
TQ.3 X1653/3600 * X4503 * LTP/60 Sim Turns
CQ.1 CQL.1 + CQC.1
CQ.2 CQL.2 + CQC.2
CQ.3 CQL.3 + CQC.3
CQL.1 X1483 * (LTP/60) /2 Sim Links
CQL.2 V * Q / X1663 Sim Turns Q>0
Q = (X4513 - X1643) * LTP/60
V = 0.5*Q + AFTERS*(X4503 - X4513)*LTP/60
CQL.3 CQL.1 + CQL.2
2
CQC.1 (X1403-X1393) * {LTP/60} / 2 Sim Links X1393>0
2
CQC.2 {(X1403-X1393) * LTP/60} / 2(X1393 * X1673) Sim Links X1393 >0
CQC.3 CQC.1 + CQC.2
LT.1 X4013 * X4513 * (LTP/60) / 3600 Sim Links
LT.2 LT.3 - LT.2
LT.3 X4013 * X4503 * (LTP/60) / 3600 Sim Links
LTF.1 X1803 * X4513 * (LTP/60) / 3600 Sim Links
LTF.2 LTF.3 - LTF.1
LTF.3 X1803 * X4503 * (LTP/60) / 3600 Sim Links
LTD.1 LT.1 - LTF.1
LTD.2 LT.2 - LTF.2
LTD.3 LT.3 - LTF.3
T.1 TQ.1 + CQ.1 + LT.1
T.2 TQ.2 + CQ.2 + LT.3
T.3 TQ.3 + CQ.3 + LT.3
D.1 X1893 * X4513 * (LTP/60) / 1000 Sim Links
D.2 D.3 - D.2
D.3 X1893 * X4503 * (LTP/60) / 1000 Sim Links
KPH.1 D.1 / T.1
=
TQi X 4003 − X 1803 − 0.5 ∗ ( X 4503 / X 1833) − 1.0 ∗ ( LTP / 60 ) ∗ 3600
Then, sum the product of TQ i and the length of the over-capacity queue at the end
of the time period LTP over the same over-capacity buffer links as above to
obtain:
Where the first term above (which gives the total vehicle delay in pcu-hr) must be
summed over all buffer links, independent of whether or not they are over
capacity. Again division by 3600 is necessary to convert pcu-sec to pcu-hr.
It could be argued that using ascii-based data files as the ultimate data source is
an out-moded form of operation in the 21st century and that a “proper” data base
system should be used instead. Fair point! In their favour ascii files have the
advantages that: (a) they work and (b) they are perfectly transparent to the user
who can alter the network properties using an editor and “see” exactly what the
data base contains. Thus a 1 in column 28 of a buffer link record (see 6.6)
unambiguously defines that link as 1-way, 2 implies 2-way, etc. etc. What you see
is what you get!
A further less obvious point which occurs during editing is that if the underlying
network topology is changed, e.g. by adding or deleting links, then all the various
pointers that relate, say, simulation data to map data or assignment data are no
longer valid and that they must be reconstructed by, in effect, re-running SATNET.
one is editing an existing network, the internal .dat file is simply a copy of the
original network .dat file; if the network is being created from scratch a prototype
.dat file is created.
External copies of the .dat file may be “saved” at any point within the editing
process (as shown in Fig. 18.1). Thus an output .dat file is simply a straight
forward copy of the internal .dat file. In the same way that you are strongly
advised to take frequent back-up copies of, say, word document files it is also a
very good idea during editing to periodically take copies of the .dat file, just in case
something terrible happens.
The internal data may also be output or “saved” in other formats, in particular as
.ufn file as described in 18.2.6 below.
It is also possible to screen edit over more than one data segment by specifying
the first line in the .dat file and up to 200 (roughly) lines following.
Equally, of course, .ufn files may be created by running SATNET directly on a .dat
file output by P1X/PMAKE but, in order to do this, it may be necessary to exit from
P1X first.
18.3.1 Objectives
PMAKE is the name given to a bat file which in fact runs P1X but without its
normal input .ufs file(s) such that the network is built entirely interactively on the
screen. In the context of figure 18.1 PMAKE builds (internal) map and .dat files
simultaneously such that at the end of the building/editing stages the internal .dat
file may be saved as a proper .dat file for input to SATNET (or for “internal”
rebuilding of a .ufn file).
Thus the main objective of PMAKE is to create a .dat file for input to SATNET - or,
perhaps more accurately, to help in the creation of a .dat file. While PMAKE is
very good at certain operations, such as defining nodes and links, it is not perfect.
Users must therefore expect that at some stage in preparing a network .dat file
they are going to have to “get their hands dirty” by doing some manual editing of
their dat file. Sorry, but life's like that!
Having, as a first stage, created a .dat file and, via SATNET, a .ufn file further
network editing may be continued by using the .ufn file as an input to P1X and
then choosing Network Editing from the top P1X menu as per 18.2 and 11.9.
Further topological changes may be made by entering PMAKE from the Edit
Menu.
PMAKE also maintains internally a purely buffer-style representation of the
network being created with its topology stored correctly but with only limited data.
This means that having built a network via PMAKE some of the normal analysis
functions of P1X become available, e.g. you may display link data or (possibly)
display shortest path trees. On the other hand, although you may define
simulation-nodes within PMAKE, it does not set up a simulation network structure.
All simulation-based data is stored only on the direct access .dat file.
However, by using the rebuild option to create a .ufn file, it is possible, without
exiting from PMAKE, to create a network with full simulation network details
included.
The namelist parameters to be eventually included in the output .dat file under
&OPTION and &PARAM may also be set at any point during building; see
11.9.10.
Note that it is highly recommended that, as with word processing for example,
frequent copies of the current network are created using the “Save to a dat file”
options. Thus if mistakes do occur - whether yours or ours - the whole editing
session should not be lost.
In addition there may be advantages, having saved a .dat file, to exit
PMAKE/P1X, use SATNET to build a .ufn file from the latest .dat file and to
continue the editing from P1X as described next.
“error listing” options process the current node coding and prints both the total
number and the explicit messages.
In theory the errors should be the same in both cases (or until you begin to correct
them); in practice there may be slight inconsistencies in that SATNET probably
checks for a wider range of errors per node since it considers the network as a
whole rather than a single node on its own. Thus it is always wise to check the
.lpn files for error messages even if the editing options in P1X used to create the
.dat file do not indicate any problems.
Note too that it is possible to have fatal errors at nodes in P1X (which may be
treated as semi-fatal in SATNET). These may limit the options available; for
example it may not be permitted to simulate a node if it has some fatal errors or to
optimize traffic signal stage times if there are fatal errors in the stage definitions.
The default values may be user-controlled by the use of “capacity indices” where
each capacity index will have its own set of free flow and capacity speeds, a
capacity and a cost-flow power as required to define a buffer link time-flow curve.
New links may be either simulation or buffer, depending on the “status” of the A-
node and B-node. If buffer, an extra record is created in the 33333 data section. If
simulation, both the A-node and the B-node are updated to include the extra arm,
using default link properties. The user is then given the option to immediately edit
the new node codings via standard node editing.
In addition new links may also represent centroid connectors but only in the buffer
network (entered under 33333) or as external simulation node connectors (in
which case only is the data entered under 22222). New centroid connectors to
internal simulation links may only be entered via the simulation update facilities as
described in 18.7.
The reason why U-turns can occur at node C lies in the manner in which external
simulation nodes are “expanded” when they are introduced into the assignment
network. (In a similar fashion to the expansion of internal simulation nodes; see
Figure 5.2). Thus in the above network segment the assignment network
representation at node C is as sketched in Figure 5.2b. Assignment nodes C 1
and C 2 represent the “ends” of the 1-way simulation links; C 3 represents the node
within the buffer network. Links C 1 C 3 and C 3 C 2 are one-way “dummy” links which
allow trips to pass between the assignment and simulation networks. Hence the
mini-path C 1 - C 3 - C 2 is a permitted sequence of nodes in the tree building
algorithms.
(B) The assignment network representation of a combined external
simulation and buffer node
The problem is inherent in the SATURN network data structure and the tree
building algorithm used; it could be removed but only by explicitly “expanding” all
turns in the buffer network as well as the simulation.
The problem becomes particularly acute if the external link B-C has been given a
purely notional travel time of, say, 1 second with the “real” travel time on that link
being coded as part of a buffer link.
The assignment tree-build algorithms detect and ban sequences such as C 1 - C 3 -
C 2 above under MOST circumstances but not, for technical reasons, ALL. What
is not that clear is how often such undesired U-turns are likely to occur in practice;
it should not be too often. Certainly it is only possible in networks which combine
simulation and buffer networks and at two-way links between the inner and buffer
networks.
A not-uncommon example of the situation depicted in Fig 18.2(A) occurs if the
local “buffer network” consists only of a zone as explained further in Sections
16.6.3 and 16.6.4.
A secondary problem (although, again, not very common) arising from U-turns is
that they may conceivably affect the convergence of the assignment–simulation
loops if a U-turn is used on one loop but not on the next.
1) Try to choose your external simulation nodes such that the links between
them and the simulation network are one-way.
2) Otherwise try to make the links to external simulation nodes as long as
possible.
3) If neither (1) nor (2) is practical try extending the definition of the buffer
network well away from the anticipated trouble spot.
4) Avoid connecting zones to “stub links” via a centroid connector defined under
the 33333 buffer link records as opposed to the 22222 simulation centroid
connectors; see the discussion in 16.6.4.
with no connections between X1, X2 etc; hence X1 and X4 have no exits. Had X
been connected to either a buffer node or zone Z then there would be “dummy”
links as in Figure 5.2b from X1 and X4 to Z.
A “solution” to the above problem is to re-code X as an internal simulation node,
the most obvious candidate being a priority node. In fact this correction is made
automatically within PMAKE under certain circumstances; see 11.9.11.
A more general discussion of network connectivity is given in Section 5.5.4.
19.3 Menus
Menus within SATURN appear in four basic forms:
♦ “Menu bars”: menus with pull-down menus which appear along the top of
(some) graphics screen and which supplement choices in the banner. (19.5)
♦ the “text-based” form whereby the menu occupies the entire screen (or
window) and user input is from the keyboard (19.6);
♦ further sub-menus;
♦ executable routines;
♦ numerical variables;
♦ scrollable variables
Thus a sub-menu choice takes you into a further menu system while an
executable routine initiates a particular “do this next” option (although the
distinction may be somewhat arbitrary as a do-this next routine may well start with
a menu).
Variables come in several forms although all have the basic property of
associating a value with a particular parameter, e.g. origin zone = 67. Thus
numerical variables can take on a wide range of values as with a parameter
associated with zone numbers. By contrast a logical variable can only have two
values, effectively true or false, on or off etc. Finally a scrollable variable is
basically numerical but one that takes on a relatively small number of values, e.g.
a parameter which defines one of three or four allowable options.
If a numerical variable is selected you will next either be prompted for the new
value or, possibly, choose from a list of allowable values. A logical variable
requires no further action, it simply changes or “toggles” to its logical opposite. A
scrollable variable changes to the next value in its list, returning to its “top” value if
the bottom of that list is reached.
menu is actually generated by a return from the current menu to its upper level
menu which then automatically calls the next menu in the sequence.
The distinction between the two has implications for the terminology used to
describe “exits” from menus as discussed next.
In addition to the “normal” menu exits of forward, back and next referred to above
it is also possible to “quit” a menu abnormally which effectively terminates the
current operation and goes back one or more levels in the menu structure. In
most situations “quit” has the same effect as “return” or “back”. However when
the normal return operation is to the “next” menu quit aborts that step and
definitely returns you to an upper level.
19.3.2 Terminology: Exit, Return, Continue, Next, Quit, Back, Cancel, etc.
The terminology used to describe the different exit modes may differ between
different parts of the programs and some explanation of the terms used may help.
“Return” is used, mostly in text menus, to indicate either “back” or “next” - the
context of the menu decides which. Somewhat unfortunately, given what comes
next, in graphical banners it is referred to as “Q-return”, the primary reason being
that the letter Q is not very often needed to denote other operations whereas R for
“Return” could conflict with, say, R for “Repeat”. “Q-continue” is also used to
signify continue to the “next” menu.
The abnormal or “quit” exit is also referred to by more than one term or letter -
generally Q for Quit in text menus but also as QUIT when asked to set file names
from the keyboard or “Cancel” when setting them a Windows dialogue box.
Generally speaking abnormal quits are not present within graphical banners.
To exit fully from a program you must successively “return” back up to the master
menu where the quit/return option now signifies exit from the program.
Alternatively, you may exit at any stage by clicking on the exit cross (upper right)
in the current “background” window or by choosing Exit under Files in the menu
bar.
Each item has a single key alphanumeric character associated with it which is
displayed in a different colour (equivalent to underlined characters in a standard
Windows menu).
19.4.2 Focus
A particular problem encountered within 32-bit Windows SATURN is that under
keyboard control the input from the keyboard is directed to an “invisible” window
which, in effect, only exists as a minimized token on the tool bar at the bottom of
the screen with the title “Key Input”. When this token is “highlighted” or “in focus”
the program is waiting for a keyboard input to the banner menu; when it is not
highlighted it is expecting other forms of input.
Or so it should be. The problem that arises is that when the key input token has
been set in focus by the program the user may accidentally transfer focus
elsewhere by clicking with the mouse somewhere else on the screen. When this
happens the program will “hang” - it wants a keystroke command but the system's
attention is elsewhere.
The solution is simple - click on the “key-Input” token in order to highlight it, hit the
key you want and off you go.
when using the mouse to select a node or link it is possible to use the menu bar
to, e.g., change the window.
Selection from the menu bar may either use the mouse or via a “hot key”; e.g. files
may be selected by the key combination alt + F.
Note in particular that the menu bar contains a “Back” option which is equivalent
to Q-return in the banner proper and both are generally present. Users may find
“Back” easier to use for going back over several menus, e.g. to return to the
“master menu”, since its position on the screen is fixed.
Alternatively under Back one may also return directly to the Master Menu or to any
of the 13 sub-menus choices normally contained there.
Note that the menu bar is NOT active under keyboard control.
for continue menus, as explained in 19.3, this has the same effect as RETURN.
In some menus explicit numerical values, generally -1, also allow the user to quit
and have explanations such as “Oops - get me out!” or “Do Nowt”. In certain
cases Q has no effect, probably due to the fact that you have got so far into an
option that it is no longer feasible to retreat; in desperation control-break or
control-alt-delete will probably blow the program!
Equally for a scrollable variable no further input is required; it simply moves to the
next permitted value and the text changes as appropriate.
We note that tolls have always, pre 10.3, been capable of being modelled within
SATURN simply by including them as, e.g., extra time “penalties” or extra KNOBS
components. What is different in 10.3 is that the tolls are now explicitly identified
as monetary tolls and appropriate aggregate statistics are included in appropriate
monetary units. Previous statistics did not differentiate between, say, link
penalties which were “notional”, e.g., associated with using a non-signposted rat
run, or “real” as with tolls.
Note that this file contains two knob data fields (the columns headed by 4 and by
3.0), either or both of which may be used to define tolls; how this is done is
described below. In addition tolls are applied both to links (73-37 etc.), turns (24-
26-1) and centroid connectors (the zone being indicated by the letter C).
Both inputs use the convention that tolls are indicated by either the £ or $ symbol
although in slightly different locations. Thus within the 44444 records the toll is
entered within the appropriate user class columns of a particular link record as,
say, “ £50” or “ $50” to indicate (somewhat perversely - see below) a toll of 50
pence. Hence each and every toll has to include the £/$ symbol. An example is
given below:
44444
22 21 $ 25
21 22 $ 50
7 63 $ 50
32 33 $ 50
99999
The position of the entry $10.0 (columns 31 to 35 in the original) indicates that it
applies to the second knob data field and that all entries in that field are: (a) to be
interpreted as monetary and (b) multiplied by 10.0. Hence link 75 to 37 above will
have a charge of 10x3.0 = 30 “pence” levied against it, link 22 to 26 has no toll
since its second field is 0.0 (the first knob field is presumably used for some other
purpose), etc, etc.
(We note that the weighting factor above should, see 6.11, be input as a “real”
value, i.e., with a decimal place, but that, post 10.6, an integer input will be read
as an integer. Thus $10 would be interpreted as 10.0, not 0.10)
The other clear advantage of defining tolls within a separate KNOBS file rather
than within the .dat file itself is that it will be much simpler for users to re-define
tolls or to interface SATURN with other programs which, for example, are setting
optimum tolls.
C= K ∗V 8k / ( PPM / 60.0 )
where K is the value of the KNOBS entry, V8k is its multiplier in the 88888 data
records (where it would be preceded by $ or £) and PPM is pence per minute. If
there were more than one KNOBS entry then C would be summed over all entries
and, with multiple user classes, the values of V8k and PPM would be user-class
specific.
Note: SIMULATION (S), BUFFER (B) AND BUFFER CENTROID CONNECTORS (BCC)
Thus we note that in this example that of the total 1,456 euros generated by
vehicles passing through various toll points 349.4 were from tolls on simulation
links, 479.9 from tolls on buffer links and 626.7 on buffer centroid connectors. In
addition the simulation totals may be further disaggregated into tolls generated
during the time period simulated and through queued trips which would pass the
actual toll points in a later time period. (The units of “euros” will have been defined
by the Namelist parameter CURNCY.)
Although not strictly relevant here the total pcu-hrs on (time) penalized links are
also shown above to emphasize the point that monetary tolls are distinguished
from the (possibly nominal) time penalties.
A .ufm matrix of tolls may be obtained using the standard batch file SKIMTOLL as
described in 15.27.4.
We may first note that car parks in SATURN may either be represented either as:
♦ zones whereby all traffic in the trip matrix to or from a zone is assumed to be
to or from the equivalent car park, or
♦ as nodes which are not themselves zones but are connected to zones via a
further series of links which represent walk links (See 15.46).
The simplest method to apply parking charges is to ensure that every entry point
to a car park (whether zone or node) goes through a link (not a centroid
connector) whose exit leads to a car park and that an appropriate “toll” (equals
parking charge) is levied on that link.
Note that the entry links to car parks may be assigned speed-flow curves with
capacities appropriate to the capacity of the car park. If there are multiple en
tries/links to the car park then it may be best to “channel” them all into a single
entry link where the capacity is applied, otherwise with multiple entry capacities
the total capacity may be over-estimated.
1) Rather than randomising the perceived cost on each link, a single perceived
VOT (i.e., PPM) is generated once per origin;
2) The randomised VOT is applied only to those links with tolls and only to their
toll component.
Thus all steps in the algorithm described in Section 7.2.2 are retained except that
the randomisation of costs in step 2(a) proceeds as above.
Thus, whatever VOT/PPM is generated per origin, that value is applied to all tolls.
With standard SUE it is possible that a randomisation of all link costs may imply
that, in effect, a driver applies a high value of time to one toll but a low value to
another. Logically a single driver should perceive all monetary tolls in the same
light.
To use the above method in SATURN the user must set both SUZIE and (a new
variable) STOLL (for StochasticTOLLs) to T under Namelist &PARAM. In addition
a choice of randomisation method must be made through the choice of KOB; see
Section 7.2.3 for further details.
The use of cumulative density functions (CDF) (KOB = 3) to describe the
distribution of VOT/PPM was specially introduced to be used with STOLL, in
particular to deal with asymmetric or skewed distributions of VOT. See 7.2.3.2 for
further details. (Note in particular that the CDF represents the distribution of a
unitless multiplier which is used as per equation (20.2) below to create
randomised perceived tolls.)
Thus the equation by which a monetary toll M (in units of pence) is converted into
an equivalent generalised time penalty T (in seconds) is given by:
T = 60.0 * M / (PPM x R) (20.2)
where R is the PPM multiplier randomly selected from the CDF (whose “central”
values should therefore be around 1.0).
We therefore note that, within the STOLL algorithm, the random multipliers
selected from a distribution are actually used to convert tolls into time units, not
the other way around. Hence the distribution of perceived tolls is really the
inverse of the VOT distribution which the user inputs, Generally speaking, a value
of time distribution will be positively skewed towards higher values. Users
therefore need to be careful that they define a CDF with the correct skewness. For
example the .cdf file (see 7.2.3.2) might look something like:
0.5
1.0
1.5
2.5
5.0
where P ija is the proportion of the trips T ij from origin i to destination j which use
link a.
Neither path- nor origin-based methods preclude link-based data: indeed link
flows may always be obtained by suitable summations of either path or origin
flows. The extra information stored may often be usefully applied to improve our
understanding of the solutions generated.
However, the main advantage of the alternative data structures is that they allow
fundamentally different assignment algorithms to be constructed which, as we
shall see below, have been shown empirically to be superior to link-based Frank-
Wolfe in a number of respects (although they also have disadvantages as
discussed below).
If, on the other hand, there have been structural changes then some “old” paths
may not exist in the “new” network. In this case the new flows are either divided in
proportion between those O-D paths which are still valid or, if none are valid, a
new path corresponding to the minimum cost is created and assigned 100% of the
O-D flow.
♦ New links – sum over all origins of the number of new links added to the
restricting subnetwork.
♦ Removed links - sum over all origins of the number of links that has been
removed from the restricting subnetwork.
♦ Merge nodes – sum over all origins of the number of merge nodes, i.e. nodes
with more than one approach (entering link), in the restricting subnetwork.
Non-basic approaches – sum over all origins of the number of non-basic
approaches in the restricting subnetwork; where for every node one approach is
considered basic, and all others (if there are any, i.e. if it is a merge node) are
considered non-basic.
Net.olg – Log file in text format that includes various messages mainly for
software development and debugging. Please send this file with any support
request.
Net.ost - Stores the complete OBA solution in compact binary format as used by
program segments written in C. The same basic information is also stored in .UFO
files but these are used by programs written in FORTRAN. Thus P1X reads .UFO
files whereas SATALL, when run in “perturbation mode”, reads .ost files (See
22.5.4).
Net.ofn – Stores the complete OBA solution in expanded text format. (This can be
an extremely large file even for networks of modest size and it is normally
excluded.)
21.7.1 Parameters
The following parameters defined within the network .dat &PARAM records control
the choice of method / data structure plus various sub-options:
MET 0 Use link-based methods (Default)
1 Path-based
2 Origin-Based Assignment
IPERT 0 Non-perturbation assignment (Default)
1 Perturbation assignment
ISP 0 Path-based Frank-Wolfe algorithm (Default)
1 Social Pressure
2 “Enhanced” Social Pressure
N.B. IPERT and ISP only apply to path-based assignment, i.e., when MET = 1,
and therefore are virtually never required. To request OBA the only parameter
that needs to be set is MET = 2.
Alternatively, the choice of perturbation or not may also be set within &OPTION
using the logical parameter:
WSTART F Non-perturbation assignment (Default)
21.7.2 FTN95_NEW_MEMORY
In order to run OBA with relatively large networks (in practice this means virtually
all networks) an environmental parameter FTN95_NEW_MEMORY has to be
turned “on” such that the internal memory used by the OBA calculations (which is
programmed in C) is released and recycled when it is no longer needed. If this
parameter is not set then SATALL will almost certainly crash, in a random
manner, due to memory allocation problems.
Since the release of SATURN v10.9.12, the parameter is automatically set either
by SATWIN or within the SATURN (or SATALL) batch file so it should be
“invisible” to the user. However, if for any reason the versions of satwin.exe
and/or satall.bat being used are not up-to-date, problems may result. If you
encounter problems, please contact us in the first instance.
There may also be instances where the amount of memory required to store the
path information is beyond the physical limit available to individual programs
under 32-bit Operating Systems (circa 1.6Gb RAM). This has occurred once with
a very large network (i.e. 30000+ nodes, 1500+ zones, 7+ user classes and
mostly non-zero demand ij pairs). Again, if you encounter problems, please
contact us in the first instance and it is very likely that the model will need to be
run within a 64-bit operating system.
♦ Headingley: a single pcu per hour was added to one particular O-D pair
(equivalent to 0.5 pcu’s since LTP = 30 minutes);
Thus all three changes were relatively small, the first being to the trip matrix and
the last two to the network.
The changes were assessed by running all three sets of “before” and “after”
networks through SATURN under (a) Frank-Wolfe and (b) OBA, both with very
strict convergence criteria (e.g., NITA = 199, ISTOP = 100, NISTOP = 4, PCNEAR
= 0.2%).
Results for Headingley are given in Table 21.1. Thus we note that, from the OBA
results, adding one extra pcu/hr, has increased the total pcu-hrs by 0.39 whereas,
from the Frank-Wolfe results the extra trip has, counter-intuitively, reduced the
total pcu-hrs by 0.15. Given that the assignment delta values for OBA are roughly
3 orders of magnitude better than those for Frank-Wolfe we may safely assume
that the OBA results are the “correct” results. Thus, despite a relatively large
number of assignment iterations, the “noise” in the Frank-Wolfe solutions has
rendered the results somewhat meaningless.
We may also note that, although it is not highly relevant here, that OBA requires
many fewer iterations and roughly half the CPU time as Frank-Wolfe so that its
improved convergence is not simply the result of extra number crunching.
Table 21.1 - Headingley (Before and After)
Frank-Wolfe OBA
Before After Before After
PCU-hrs 443.14 442.99 442.45 442.84
Delta (%) 0.149 0.111 0.0001 0.0001
Gap (%) 199 199 30 32
CPU (secs) 0.8 0.8 0.4 0.4
Comparable results from York are given in Table 21.2. (The format is slightly
different from Table 21.1 since the York network contains a simulation component
so that we give assignment-simulation loops rather than assignment iterations and
add Gap values.)
The overall conclusions are similar to those obtained for Headingley. OBA
predicts a reduction in total pcu-hrs of 2.4 (as would be expected by adding an
extra lane on a congested road) whereas Frank-Wolfe predicts an increase of 6.0
pcu-hrs. Again one would interpret the discrepancy between the signs of the two
sets of figures as being a result of the increased “noise” in the Frank-Wolfe
solutions.
In this case OBA does require more CPU time than Frank-Wolfe (particularly, for
no obvious reason, in the after case).
Frank-Wolfe OBA
Before After Before After
PCU-hrs 4430.3 4436.3 4429.1 4426.7
Delta (%) 0.013 0.014 0.000 0.000
Gap (%) 0.019 0.012 0.001 0.004
Loops 37 39 31 68
CPU (secs) 170 177 234 551
Finally, results from ”Inkton” (not its real name!) are given in Table 21.3.
Somewhat paradoxically, given that the scheme locally “optimised” a set of traffic
signals, both OBA and Frank-Wolfe agree that total pcu-hrs will increase, by 8.5
and 5.4 respectively. Again, given that the OBA Gap values are an order of
magnitude better than Frank-Wolfe, we would assume that there is less “noise” in
the OBA results and that 8.5 is a better estimate. Frank-Wolfe is therefore “in
error” by 3.1 or 36.5%
In terms of cpu times three of the four runs were very close to one another, the
one exception being OBA After which took roughly twice as long.
We may note a further “interesting” feature of the Inkton results which is that
Frank-Wolfe and OBA have converged to two significantly different solutions, as
evidenced the differences in the total PCU-hrs (e.g., 6838.1 vrs 6977.1). Thus we
have an example of multiple equilibria which, theoretically, are certainly possible
within SATURN given the “interactions” between flows and delays at intersections,
although very difficult to predict. (Their existence in this network may be somehow
related to the fact that local signal improvements do not lead to global
improvements.)
We may further note that the two sets of equilibria appear to be “stable”, in that if
we start OBA off from the final Frank-Wolfe solution it converges to the same point
and, equally, if we start Frank-Wolfe off from OBA. In theory, it might be possible
for the before and after solutions to converge to different equilibria with the same
algorithm and therefore give very different benefits (/disbenefits) but, in this case,
it appears not to have happened.
Table 21.3 - Inkton Before and After
Frank-Wolfe OBA
Before After Before After
PCU-hrs 6838.1 6843.5 6977.1 6985.6
Delta (%) 0.0032 0.0033 0.0000 0.0000
Gap (%) 0.0030 0.0036 0.0001 0.0003
Loops 200 200 33 75
CPU (secs) 121 122 113 245
In general, we conclude that, for these relatively small schemes, the estimates of
benefits given by Frank-Wolfe are widely in error with 2 out of 3 having the wrong
sign. In addition the “correct” OBA results are obtained with broadly comparable
cpu times.
In practice, of course, schemes this small will be the exception rather than the rule
and we would expect that the influence of noise in Frank-Wolfe would decrease
(relatively speaking) as the magnitude of the benefits increased. Nonetheless it is
always reassuring for a modeller to know that results are as accurate as possible
across all schemes, not just for large schemes.
♦ the 2010 follow-up paper ‘The Practical Benefits of the SATURN Origin-
Based Assignment Algorithm & Network Aggregation Techniques’. A copy of
the paper may also be found in Appendix T.
♦ network properties,
♦ trip matrix.
Where, under network properties, we include both node and link properties such
as distances or capacities etc. and SATURN parameters such as GAP, NITA, etc.
If problems A and B are the same or “similar” in all or some of the above respects
then it may be possible to use information from the solution of A to help us solve B
more efficiently.
Examples of the sort of information which may be useful include (in no particular
order):
♦ link flows
UPDATE No No No
RESTART Yes Yes No
REDMEN No No No
DIDDLE Yes Yes Yes
Perturbation No No No
Va ( 2) = Va (1)
where (2) refers to the “new” network and (1) to the old. This situation is likely to
arise, for example, if a network has been “edited” so that certain link properties
such as saturation flows or lane allocations have been altered but no links added
or deleted or if certain parameters under &PARAM have been re-set. These are
typical of the “network calibration” stage.
However, if there are either any topological network changes or changes to the
trip matrix then it will be necessary to create a “guesstimate” of the initial flows
obtained by assigning the “new” trip matrix to (as far as possible) the previously
assigned paths and in the same proportion:
Equation 22.2
Va ( 2) = ∑ Tpijδ pij
a
pij
Where P pij (2) represents the (estimated) proportion of trips from origin i to
destination j using path p in the “new” network, T ij (2) is the “new” trip matrix and δ pij
= 1 if path pij uses link a, else it is equal to 0.
If only the trip matrix has changed then applying equation (22.2) is relatively
simple since any paths in the old network must exist in the new network with the
identical structure and we can equate P pij (2) = P pij (1).
However, if certain links have been deleted in the “new” network, then an “old”
path pij may no longer be “valid” in the “new” network and it must be somehow
“spliced” to fit into the new network; hence extra complications arise since we will
need to somehow estimate P pij (2) from P pij (1). (N.B. Adding links introduces fewer
problems since all old paths must still exist although there are minor problems in
translating link numbers etc. between the two systems and/or deciding whether or
not any traffic should be assigned to the new links.)
A common example where the trip matrix changes but not the network occurs
when SATURN is being used as a pure assignment model in conjunction with an
external demand model (see Section 7.4.5). Alternatively changes to the network
with the trip matrix fixed occur routinely during network calibration (in addition to
changes in link properties).
In either case the initial set of flows V a (2) should provide a much better starting
point than an all-or-nothing solution and consequently result in considerably faster
convergence of the assignment (in addition to any benefits obtained by using
UPDATE = T, e.g., improved cost-flow curves)
We briefly note here that the equations such as (22.2) constitute the crux of the
problem as far as link-based Frank-Wolfe algorithms are concerned where
calculations involving path flows are difficult; by contrast they are “meat and drink”
to either path-based assignment or OBA. The introduction in 10.6 of UFO files, as
described in detail in 22.5, is the critical addition that allows warm starts to be
applied across the board.
Sections 22.4 and 22.5 below describe respectively how both functions are carried
out with particular reference to link-based Frank-Wolfe assignment; path-based
and OBA are dealt with in Section 21.3.
really changed and what is really needed - if anything - is a continuation run rather
than a warm start.)
Furthermore note that introducing new banned turns under 44444 does not count
as topological changes whereas changing turn saturation flows to zero under
11111 (which could have exactly the same effect as a 44444 ban) does alter the
network structure. This introduces the interesting idea that, in progressing from a
“do-nothing” to a “do-something” network, it may be possible to include the new
links in both networks but to effectively remove them from the do-nothing network
by the use of 44444 banned turns. In this way the do-nothing network might be
used to warm-start the do-something using the simpler methods described here.
As we shall see in the next section running a warm start when there have been
topological changes is more complicated and may require more CPU time.
An interesting extension of the idea of applying a warm start on a topologically
unchanged network occurs when none of the network changes affect the
assignment at all; for example when a network is updated by simply adding a new
or different set of counted flows to the .dat file or a different set of timed routes for
validation purposes. In this situation there is no need to carry out any form of re-
assignment since the flows from the previous network are equally valid in the new
network. To take advantage of this fact set WSTART = T and MASL = 1 in the
updated network (and preferably SAVEIT = F since the old .UFC file is still valid as
well) in which case all SATALL will do is to copy the old flows over, run a single
simulation and one can go directly into analysis in P1X with the new counts and/or
timed routes available.
Finally we note that, in particular, WSTART may be very efficiently applied in the
“topologically-equivalent” mode when a network which has been run under a
previous release of SATURN is run under a later release (i.e., currently only 10.6
since this was the first release where WSTART was provided).
22.5.1 Introduction
As mentioned in 22.3.1, if either the network or the trip matrix differs between the
“new” and “old” networks, then the previously assigned flows (equation (22.1))
may not be used as a prior estimate of the new assignment and the more
complicated path-based equations (22.2) and (22.3) must be used. These
situations arise routinely during network and/or matrix calibration and during links
between SATURN and external matrix demand models.
With either path-based or origin-based assignments it is relatively straightforward
to re-assign a (potentially new) trip matrix to the formerly assigned paths. For
technical details please see Section 21.3. However there are problems carrying
out these calculations with link-based Frank-Wolfe (which, unfortunately, is what
most SATURN applications use).
These problems have been successfully overcome within 10.6 by the introduction
of “UFO files” as an alternative method to UFC files (see 15.23.6) to store
assignment path flows by using techniques developed under OBA (see 21.4).
(Basically that is all you need to know about UFO files so, if you feel that is a
sufficient explanation, feel free to skip over the more detailed description in 22.5.2
to 22.5.6 and go straight to 22.5.7!)
Note that UFO file are created routinely and with, effectively, very little extra CPU
time under OBA (met = 2) whereas to create UFO files from the starting point of a
Frank-Wolfe assignment (met = 0) may require considerable extra CPU time. In
the latter case the extra CPU time to create the UFO file in the first place may
actually be greater than the CPU time saved by subsequent applications. This is,
therefore, a major benefit in using OBA assignment.
particular method of storing solutions which may then be used to re-create O-D
paths for various analyses.
Note that link splitting factors may be displayed within P1X (see 11.8.3).
Once we have a UFO file it is relatively simple, for example, to re-assign a
different trip matrix to the same set of paths or, if the network has changed, to
create an alternative UFO structure which is as near as possible to the original but
respects the new network structure. This property means that UFO solutions are
ideal for creating a warm-start assignment and that OBA is a “natural” algorithm
for warm starts.
Unfortunately, assignments obtained using the Frank-Wolfe algorithm are not, in
general, amenable to being stored precisely in the UFO format although it is
possible to convert a Frank-Wolfe solution into a nearly equivalent set of flows
which satisfy the acyclic condition and which may therefore be stored as .UFO as
explained in the following section, 22.5.3.
6) Calculate the splitting factors at all nodes for all entry links with positive flow.
7) Store in the UFO file (see 15.23.6).
We may note that, unless we have been able to re-arrange the list of nodes such
that all links where V (A,B) > 0 satisfy the “A before B” rule, the origin-based flows
given by the UFO solution will differ from those given by the UFC solution.
However, this may not necessarily be “a bad thing” since, by removing flows that
go in the wrong direction, we may well have a solution which is actually nearer to
Wardrop equilibrium. Also, given that the UFC flows are themselves generally only
approximations of the actually assigned flows (see 15.23.2), the additional
approximation may be less significant.
In order to create a .UFO output file from within SATALL it is necessary to set an
&PARAM parameter SAVUFO = T in the original .dat file along with SAVEIT = T.
In addition, another &PARAM parameter USEUFO = T will instruct analysis
programs such as P1X, SATCH, etc. to use the .UFO file in preference to the
.UFC file. Both SAVUFO and USEUFO default to F; see 6.3.1 as well as 22.5.7
below.
Alternatively a .UFO file may be created “after the fact” using a special procedure
SATUFO described in Section 15.23.7 or as part of the SAVUFC procedure
(15.23.5). A multi-core version of SATUFO, SATUFO_MC, is also available; see
15.23.7.
22.5.5 Estimating Initial Flows with a New Network and/or Trip Matrix
Having obtained a “best estimate” UFO solution by origin we may now simply
apply equations (22.2) and (22.3) in order to obtain an initial solution for the
assignment algorithm (whether Frank-Wolfe or OBA) which may then proceed as
normal – except, hopefully, an awful lot faster!
Note that this application of a warm start may be applied if (a) only the network
has been topologically changed or (b) if only the trip matrix has been changed or
(c) both. Situation (a) occurs routinely during network calibration; situation (b)
occurs not only during matrix calibration for a base year but also, very importantly,
with VDM when SATURN is being linked with an external demand model (see
7.4.5).
In the case of VDM the use of warm starts may lead to considerable reductions in
CPU time. However, to repeat the warning on CPU time given at the bottom of
Section 22.5.1, it may well be that, under Frank-Wolfe assignment, the extra CPU
time required to create a .UFO file at the end of one assignment in order to warm
start the next assignment may in fact be greater than the CPU time subsequently
saved. However, this does not apply to the use of origin-based assignment (OBA)
where the extra CPU to create a UFO file is minimal and the time savings may be
significant.
We therefore strongly recommend the use of OBA under external VDM.
Thus, as before set the &OPTION Namelist parameter WSTART = T in the “new”
network .dat file input to SATNET. In addition the &OPTION parameter UPDATE
must also be T since both options use data from the same “old” file (as specified
by UPFIL). Thus UPDATE makes use of the old cost-flows curves etc. while
WSTART makes use of the old flow information.
However, in addition, the “old” network must have been run with &PARAM
parameters: (a) SAVEIT = T and (b) (for Frank-Wolfe assignment, MET = 0)
SAVUFO = T in order for that network to create a .UFO file (as per 22.5.3) to be
used by the “new” network. N.B. Under OBA (MET = 2) it is only necessary to set
SAVEIT = T, in which case the .UFO file is created automatically.
Otherwise no other changes are required.
Note that is also feasible to create .UFC and/or .UFO files “after the fact” using the
special batch file procedures SATUFC and SATUFO; see 15.23.5 and 15.23.7.
♦ Reduced cpu time for analysis, e.g. select link, skimming etc.
♦ Matrix data
♦ Link-based data
Of these the third is the most common whereby a SATURN user wishes to export
assignment outputs such as link flows or speeds for display or manipulation in a
GIS system. The simplest and most common way to do so is to use an ASCII file
dump from a program such as SATDB or P1X (11.10.9) or utilities such as
DBDUMP (see 15.46) to create text (ASCII) files which can be read by a GIS
system.
One problem that arises here is that SATURN identifies links in terms of their A-
node and B-node numbers but a GIS system may not have the same information
but prefer to have its data geo-coded by co-ordinates. There is a very useful
option within “Read Miscellaneous Data” in SATDB where option 6 creates 4 data
columns consisting of the (X,Y) co-ordinates for both the link A-node and B-node;
clearly these may then be included on an output ASCII file to geo-code each link
entry. Alternatively a separate file of node numbers plus X,Y co-ordinates may be
created; see 11.4.2 and 11.9.7.
Topological network data is generally already available and more easily accessed
in GIS packages than in SATURN but there are circumstances, as illustrated
below in Section 23.4 for MapInfo, where it is useful to build a GIS network
starting from a basic SATURN network data base.
We may also note that topological data describing a SATURN-based network may
be transferred to an alternative GIS system by “dumping” it into text files which
specify the essential node and link structures. See Section 11.4.2 for using P1X to
dump data. Further data manipulation may then be required to convert the data
into a form from which the GIS system can create its own networks.
♦ Curved links (which may then be used to set link distances in SATNET;
15.10.1)
♦ Use of Data Field Editing for e.g., link distances in P1X (See 11.9.17)
♦ Trip ends (e.g., for use in matrix Furnessing and/or factoring; see 10.7.5)
This version of SATURN Tools is now available to the larger SATURN community
subject to conditions defined in the Disclaimer. Updates to the tools will be
available from http://www.saturnsoftware.co.uk/tools/saturntools.zip.
Requirements:
♦ MapInfo should be installed (No known problems with MapInfo versions 6.x
through to 10.x).
♦ SATURN *.dat file (for displaying network) and SATURN *.lks file (for
displaying assignment results such as flows.
♦ SATURNTools.mbx,
♦ AtkinsSATURNTools.chm,
♦ AtkinsModelTools.Icons,
♦ AtkinsModelTools.exe
♦ SATURNTools.ini
♦ SATURNTools.log
Start the program by double clicking the SATURNTOOLS.MBX this will
automatically start up MapInfo with the SATURNTools Menu under Tools >>
SATURN tools.
Figure 23.1 – SATURN Model Tools
In addition, SATURN Tools can be found under a new menu called Atkins
Modelling Tools or alternatively the most commonly used tools can be accessed
directly from the SATURN Toolpad menu buttons.
♦ Press OK.
3) Make sure SATURN Tools is in the Tools list on the Tool Manager form.
Check the Autoload check box.
Figure 23.3 – Tool Manager
4) Press OK.
MapInfo will now load SATURN Tools every time it is started
On first use after starting SATURN Tools will prompt the user for an output path.
♦ Create Nodes
♦ Import Network
♦ Create Bands
♦ Create Turns
♦ Label Links
♦ Settings
♦ Styles
♦ Log
♦ Instructions
♦ SATURN batch files
2) Accessing menu from the Tools >> SATURN Tools.
Figure 23.5 – SATURN Tools Menu
3) Accessing menu from the new menu called Atkins Modelling Tools >>
SATURN Tools.
Figure 23.6 – Atkins Modelling Tools Menu
CREATE NODES
The first thing stage is to create a Node table. This is done by clicking Create
Nodes and the specifying a SATURN *.dat file. SATURN Tools then extracts the
node coordinate information from the 55555 section of the Dat file and plots them
in a new map window.
SATURN Tools also reads the following settings from the &PARAM section of the
*.dat file and uses them to interpret coordinate information.For this reason, users
are expected to have some knowledge of the SATURN parameters:
♦ XOFFSET and YOFFSET which are parameters that SATURN Tools will read
and use in shifting / translating the coordinates for the points. The tools will
offset/shift the coordinates read by the value given to XOFFSET and
YOFFSET respectively. This is useful since some models strip the first digit of
a number (e.g. 4561 represents the real coordinate 545610 so an XOFFSET
of 500000 is needed joined with an XYUNIT of 10.
The network file must be a dump from SATURN with the format described below.
The node table can be any table containing points with fields named NodeId, X
and Y with IDs corresponding to the chosen *.lks file or *.kp file.
To make SATURN Tools automatically create a Turn Layer, check the Generate
Turn box option.
The Generate Centroid Connectors option allows users to turn off the generation
of Connectors.
An example of a network with turns and nodes are shown below:
SATURN tools reads the column names from the Column header section and
automatically substitutes illegal characters such as -,?,+,/,! etc. If the import
malfunctions you can modify this section to have unique names (not starting with
a number) to see if it helps. SATURN Tools may not be able to establishes the
DUTCH Setting within the *.kp or *.lks file and will present the user with a choice
that should be the same as the settings within the *.dat file otherwise the program
fails.
LOGFILE TRACE
Create Network leaves the following type of information in the SATURNTool.log
file
Date: 20030311 09:47:56,Create Network
Network-Inputfile:
C:\wsatkins\MapBasic\SATURN2MI\Data\Dutch=T.FLW\AMNETEXT.lks
Node-Inputfile:
C:\wsatkins\MapBasic\SATURN2MI\Data\Results\Node_Amnete_f.TAB
Centroids: T,Turns: T
Net Outputfile: C:\wsatkins\MapBasic\SATURN2MI\Data\Results\Net_AMNETEXT
Turn-Outputfile: C:\wsatkins\MapBasic\SATURN2MI\Data\Results\Turn_AMNETEXT
To use the Create Band tool, click Create Bands and the following form then
appears:
Figure 23.10 – Create Bands Screen
First select a Link Table (any table containing lines or poly lines will do). Link
tables created by SATURNTOOLS will have a Net_ prefix. Once the table has
been selected you must select a field containing a number by which value the
bandwidth is determined. If the selected field is not a number you get an error
message asking you to select a numerical value.
As soon as a proper field has been selected a series of statistics are presented on
the form:
♦ Max width: - specifies the width of the band for the given maximum value.
BANDWIDTH INFORMATION
These values allow the user to specify the some form of scaling of the attribute to
be displayed as Bands.
♦ Units: This value specifies how values, used for labelling, are rounded. A
value of 1 would be suitable for variables such as vehicle flows for example;
♦ Metres per Unit - this value specifies the width of the bands per unit. e.g.
Units 10 and Metres per Unit 1 gives a band width of 10 for a value of 1.
Fixing the units and changing the Metres per unit allows one to decrease or
increase the band widths of the network at map scale. By clicking recalculate
settings after a change, max bandwidth on the network is calculated based on
these settings; and
♦ Offset: - This value specifies a parallel offset from the link to the band.
LEGEND CHECKBOX
If this checkbox is ticked a legend will be added to the Bandwidth table. The
legend will be place in the lower left corner of the Mapper window. The attribute
SIDE will have the value “LEGEND” for all legend items. The legend can be
moved in MapInfo by setting the band layer editable then selecting the items with
Side=”LEGEND” and selecting the pointer tool.
The easiest way to use this function is to zoom in to your network with the Lower
Left corner in the Mapper placed where you want your legend to be then run
Create Bands. To show the values set the label for the bands to Value and use
the label placer tool in MapInfo. To change the Legend entries click the settings
button.
SETTINGS
The settings button opens the Bandwidth settings form.
STYLES
The styles of the bands can be changed using the style selector buttons under
Positive and Negative values.
CREATE BANDS
Pressing this button will create bands for the selected link table.
♦ <Inputfile name>_bands.TAB
♦ <Inputfile name>_bands.MAP
♦ <Inputfile name>_bands.ID
♦ <Inputfile name>_bands.IND
♦ <Inputfile name>_bands.DAT
LOGFILE TRACE
Create Bands leaves the following type of information in the SATURNTool.log file
Date: 20030311 09:51:09,Create Bands
,Network Inputfile:
C:\wsatkins\MapBasic\SATURN2MI\Data\Results\Net_AMNETEXT.TAB
,Band Outputfile:
C:\wsatkins\MapBasic\SATURN2MI\Data\Results\Net_AMNETEXT_Bands
Stars represent Turns between coinciding nodes (allowed in SATURN, but not
displayable in MapInfo).
TURN SPECIFICATIONS
The Turns that are created are what is called Unit Turns. They have the following
default properties:
Note that it is possible to use the tools on a selection from a turn table created by
SATURN Tools (so you don’t have to wait hours for all 35.000 turns to map if you
just want to see one area). Below is a zoom in from MapInfo showing you the
detail you can get
LOGFILE TRACE
Create Turns leaves the following type of information in the SATURNTool.log file
Date: 20030311 09:59:05,Create Turns
,Turn
Inputtable: C:\wsatkins\MapBasic\SATURN2MI\Data\Results\Turn_amnete_F.TAB
Round to nearest: value rounds the value from the chosen Label field to the
fraction entered here. (eg set to 1000 a value of 123456.789 will be displayed as
123000 and set to 0.5 this displays as 123457.0)
Label Box Chars: value decides how many characters will be reserved for creating
the box highlighting the value.
Figure 23.17 – Label Box Characters
Distance to Link: Value specifies the distance from the link to the label centre.
Threshold: When ticked this box enables the Neutral and Negative Values Style
buttons. It also creates three layers to label.
23.4.8 Settings
The SATURN Settings menu allows you to set style of the map objects that
SATURN Tools creates. It also allows you to specify the output directory for
MapInfo tables that it creates. You can save your settings to the ini file that loads
automatically on start up. If you are unhappy with your settings press the default
settings button to revert to the hardcoded standard.
SET STYLES
The Settings menu option Set Styles gives the user the possibility of changing the
styles of the SATURN network elements that are to be imported. See Styles
below.
BANDWIDTH SETTINGS
The Settings menu option Bandwidth Settings gives the user the possibility of
changing the variables of SATURNTools Bandwidth tools. See below.
Figure 23.19 – Bandwidth Settings
Pressing the Edit LegendList button gives the user the option to enter new values
or a different number of Legend entries. The text string to be entered must be a
OUTPUT FOLDER
The Output Directory Browse button allows the user to specify a folder for MapInfo
tables created by SATURN Tools. In other words after setting this folder Nodes-,
Network- and Turn-tables that you import will be saved in the specified folder.
Figure 23.20 – Output Folder
Do as instructed select the desired directory and click the Save button
GENERATE TURNS
This check box indicates if turns will be created along with the network creation.
The default is unchecked.
SAVE SETTINGS
By clicking this you save the current settings to an INI file in the application
directory. This is the path where your mbx file is located. The INI file is named
SATURNTools.ini
DEFAULT SETTINGS
The Default Settings button resets all Styles and sets the output directory to the
path of the SATURNTools.mbx plus \Data. The values used in Create Band are
also reset.
23.4.9 Styles
Using this menu option allows you to change the Style setting for all the features
created by SATURN Tools. These settings are reset if you choose Default
Settings in the Settings menu. The Styles are not saved in the INI file.
Figure 23.21 – SATURN Style Settings
23.4.10 Log
SATURN Tools are now equipped with an ever growing log file. It is the
responsibility of the user to clear this log to prevent it from growing to unheard
proportions. The log keeps track of time of execution as well as input and output
files from the following processes:
♦ Create Node
♦ Import Network
♦ Create Bands
♦ Create Turns
Figure 23.22 – SATURN Log Tools
To view the log entries select Log in the menu and then press View Log.
To clear the log press Clear Log.
To exit the Log screen press the X in the upper right corner.
23.4.11 Instructions
Will open this help file.
23.4.12 Example
An example MapInfo workspace has been provided with the tools. SATURN data
files are kept separate from the MapInfo files. Use the help file to run a test on this
data.
Figure 23.23 – MapInfo Workspace Example
MAKEDATA.BAT
Produces network and link data for MapInfo based on DA Codes. The Command
is:
MAKEDATA .ufs file DACODE
eg
MAKEDATA DS2011v1 4513
This will produce a file containing actual flow information for the UFS file
'DS2011v1'.
MAKELINK.BAT
Dumps network link list for MapInfo. Command is MAKELINK .ufs file eg,
MAKELINK DS2011v1. This would produce a file containing link information for
the ufs file 'DS2011v1'.
MAKEFLOW.BAT
Dumps link flow list for MapInfo. Command is MAKEDATA .ufs file eg,
MAKEDATA DS2011v1. This would produce a file containing link flow information
for the ufs file 'DS2011v1'.
File Inputs may be obtained by typing the name of the batch file eg MAKEDATA
will produce:
C:\>MAKEFLOW <return>
SATURN v10 (SATWIN) BATCH FILE TO
Atkins September 2006:
TO DUMP NETWORK LINK ^& FLOW LIST FOR MAPINFO
#1 = Assigned Network File = %1.UFS or %1
#2 = Assigned Network File = %2.UFS or %2
Output Network FLOWs file called #1.LKS
^<Difference = #1 - #2^>
C:\>
REQUIREMENTS
♦ MapInfo should be installed (No known problems with MapInfo versions 6.x
through to 10.x).
♦ A SATURN Network, typically imported into MapInfo using Atkins Model Tools
(SATURN Tools) or any other network table containing Anode and Bnode
columns representing the SATURN Anode and Bnode.
DISCLAIMER
Atkins SATURN GIS Creator Tools are provided to the SATURN Community by
Atkins Transport Planning and may not be passed to any third party without the
consent of Atkins, contact information is provided in Comments and Suggestions.
These tools are provided as is subject to the condition that users use them at their
own risk and any express or implied warranties are disclaimed.
♦ AtkinsSATURNGISCreator.MBX
♦ AtkinsSATURNGISCreator.chm
♦ AtkinsModelTools.Icons
♦ AtkinsModelTools.exe
To learn about the different functions use this Help file.
Start the program by double clicking the AtkinsSATURNGISCreator.MBX this will
automatically start up MapInfo with the SATURN GIS Creator menu under Tools.
For information on installation refer to the more detailed help file for the main
SATURN Tools or your MapInfo Manuals.
Figure 23.24 – SATURN GIS Creator Tool
23.5.2 Instructions
Once installed the SATURN GIS Creator Tool creates a special menu under
Tools, this menu can also be found under Atkins Modelling Tools. Alternatively the
most commonly used tools can be accessed directly from the new SATURN GIS
Creator Tool pad.
Figure 23.25 – SATURN GIS Creator Toolbar
♦ Move Node
♦ Adjust Links
♦ Match Networks
♦ Instructions
Clicking OK will open a mapper window with the two selectable tables. Editing can
be done in any mapper window where both tables are open and selectable. If you
have not set the tables you will get a message in the Message window.
NODES
♦ X Float ;
♦ Y Float ;
NETWORK (MASTERNETWORK)
♦ BNode Integer ;
♦ CNode Integer ;
Click the button, hold and drag to new location. Easy as that.
Figure 23.28 – Move Node
Click the link and hold and drag cursor to the location of the new vertex.
Figure 23.31 – Creating a New Vertex
A vertex is added to all links found under the cursor on the first click. Undo will
only undo the last of these actions and should as a rule not be performed when
using these tools.
Press CTRL and click the link and hold and drag cursor to the new location.
Figure 23.33 - Moving an Existing Vertex
Vertices are moved in all links found under the cursor on the first click. Undo will
only undo the last of these actions and should as a rule not be performed when
using these tools.
♦ GIS File
Once open please make sure that the heading in the right-hand menu reads:
Curved lines. If it does not, then change this by toggling the No Curves heading.
Then click on Re-Plot.
♦ DUTCH
♦ XYUNIT
♦ XOFFSET
♦ YOFFSET.
A wrong input of any of these parameters will mean that SATURN may not be
able to find the matching link’s start and end or most likely will display unexpected
results.
Details of the parameters are provided in the main SATURN tools help file.
After a successful export the following message box appears
Figure 23.35 – Successful Export Screen
Clicking Yes will open the file in Notepad. If Notepad is not installed this may
cause an error.
The tool exports both links (up-stream and down-stream) SATURN will only use
one of them to represent the flows depending on SATURN parameters this may
be the first or the last link occurring.
A sample SATURN GIS file is shown below.
**************************************************************************
********************************
Net_HS11AM021204SP11PMC NETWORK with Node_HS11AM021204SP11PMC Nodes
&PARAM
DUTCH = F
FREEXY = T
XYUNIT = 1
XOFFSET =0
YOFFSET =0
&END
77777
90220 90252
479934.20 315382.03 478240.43 311782.76 481204.53 312206.20 480781.09
309877.27
500047.76 303737.34
99999
88888
C 1 457210 339820
C 2 456930 340170
C 3 456580 340150
5122 456250 337310
5123 456270 337400
5124 456200 337300
5125 455910 337170
This tool is useful for a lot of purposes. You can use it to identify link differences
between two SATURN Networks (e.g. by creating a thematic map showing
Matched 0 as thick red).
You can also use it to put objects to a table containing ANODE, BNODE fields
without having to do complex queries and update statements. (e.g. if you have a
fixed Band table of your whole network, you can still use this tool to get the
polygons across from one table to another while keeping the attributes of the
destination table).
BACKGROUND INFORMATION
The SATURN Tools allow you to import result files from SATURN as straight line
links.
In order to apply your curved links to the results you will use the Match Networks
function.
Once you have shaped your network in MapInfo using the SATURN GIS Creator
Tools you should save a master copy of the Links and the Nodes. The prime
function of the master tables is to store the line shapes and node locations used in
any of your scenarios and it is highly recommended that you use one file to store
the links for all scenarios for a model area.
REQUIRED PARAMETERS
Maximum Output Width or Height (pixels) - Reduce this number to create
smaller BMP files - below 96 is not recommended as the image will appear rough
even at the same scale as you see it on the screen now.
Font Size - decides the size of the Copyright notice that will be added to the
image.
Copyright Notice - Text to be put on the output image.
Output Path - a Path that must exist (must end with a \)
BMP and XYB File Name (no extension) - the filename of the bmp file and the
XYB file.
Find Tiles - a check box to indicate whether the program should open tiles that fit
the window or not to do so (in all cases the tiles needed will be listed in the
message window).
1st Tile Path - The first folder to be searched for Tile tables if tile is not found here
the next folder will be searched and so on.
2nd Tile Path, 3rd Tile Path, 4th Tile Path - As above but lower priority.
You will then get a confirmation that the file was saved
The XYB file might need to be modified to match your SATURN XYFORMAT and
XYUNIT settings.
The contents of the XYB file is minx miny maxx, maxy taken from the Mapper
window corners.
To modify this open XYB file in Notepad.
Note the all paths must end in a '\' character or the tools may fail.
Index
24. INDEX
32-bit / 64-bit Operating System, see Hardware/Software Requirements
ACCEPT Profiles and Capacities 8.2
Actual Flows 5.1.11, 17.2
Actual Flows by User Class 15.21.4
A – Coefficient in flow-delay curves 8.4.2
ADEL 11.7.2.1
Advice Note 1A Speed-Flow Curves 15.9.2
AFTERS (Queues in future time periods) 17.6.2
AGAIN (Repeat Bat files using KEY) 14.5.8
AK_MIN 9.3.2
ALEX 6.3.3, 6.4.11, 8.5
All-or-Nothing Assignment 7.11.3
Alt + key input 19.4
AMY 6.3.1, 7.11.4
Appended data files 10.14
APRESV 8.8.3.1
Link-specific values in SATNET 6.4.14, 6.13.4
Arboreta 11.8.3, 15.26
ArcGIS linkages with SATURN 23.1
Array Dimensions and Versions 15.28
ARRIVE Profiles 8.1.3
ASHORT 6.3.1
Assignment 2.1, 7
Assignment networks 5.5.1
All-or-nothing 7.11.3
Burrell; see Stochastic
Choice of Algorithm: FW or OBA 9.5.3
Convergence Statistics 9.9.2
Continuation runs (WIDDLE) 7.11.6
Elastic 7.4, 9.6, 9.10
Choice of technique - Wardrop/Stochastic 7.2.6
Fixed travel times 7.11.4
Flat Trip Matrix 7.11.5
Generalised Cost 7.11.1, 7.11.2
Link listings 11.10.4
Multiple User Class 7.3, 9.11
Networks 5.5.1
Partan 7.11.7
SATEASY 7.2.6
Shadow Networks 7.11.10
Summary Statistics 11.11.5
Stochastic User Equilibrium 7.2
System Optimal 7.11.9
Wardrop Equilibrium 7.1
Atkins SATURN MapInfo Tools 23.4
ATLAS 6.3.1, 18.5.6
AUTNUC 15.15.2
Index
Index
Index
Index
Index
Index
Index
Index
Index
Index
KERMIT 6.3.1
KEY files 14.5
KEY and LOG filenames 14.5.1
Automatic timing (AUTO) 14.5.4
Break to interactive mode 14.5.5
Changes to automatic timing 14.5.6
Comments 14.5.7
Single keystroke entries 14.5.2
Mouse entries 14.5.3
“AGAIN” option 14.5.8
Edit Box entries 14.5.9
Over-writing (or not) existing files 14.5.10
Starting within P1X interactively 11.4.5
KEYSTROKE Responses 11.1.5
Kick Starts (Warm starts, etc.) 22.1
KINKY 15.38
Kirchoff’s Rule (SATME2) 13.3.3
KLUNK: Choice of methodology under CLICKS 15.47.2
KNOBS 6.3.2, 6.6, 15.14
Knob Files (KNBFIL) 15.14.5
Included in link fixed costs 7.11.2, 6.11
Used to define tolls 20.3
KNOBDUMP.bat 15.14.7
Transferring internal data to a Knob file 15.14.7
Negative generalised cost components 15.14.3
KOB 6.3.2, 7.2.3
KOMBI 6.3.2, 9.3
KONAL 6.6
KONSTP 9.2.3
KORN 6.3.2, 7.2.4
KP files 3.3
KPEXT App. Y
KPHMIN 6.3.2
KPHMAX 6.3.2
K s Factors 8.7.2
Lane definition 6.4.9.1
Lane Sharing and Choice Models 8.8
Lane width (plotted) 11.64
Last_P1X0.dat 11.4.4
Lateral Merges 8.8.4.1
LCY (Cycle time in seconds) 6.3.2, 8.1.2, 15.15.3
Consistency with neighbouring nodes 15.15.3
Links:
Alphanumeric Names 5.1.3
Assignment links 5.5.1, 11.10.4
Capacity Indices 5.1.9
Capacity Restraints 6.4.12, 15.9.4
COBA Speed-flow curves 15.9.6
Choice of Link Cost Stochastic Distributions 7.2.3
Counts 6.10
Default Speed-flow Curves 6.4.12, 15.9.5
Index
Distances 6.4.5
Restricted 6.7
Simulation links/roads 5.1.3
Stacking Capacities 6.4.11
Speed-flow curves 6.4.12, 8.4.4, 15.9.5
Times/speeds 6.4.5
Times: Alternative DA codes 17.10
Linked time periods: see PASSQ
LEFTDR 6.3.1, 15.7.2, App. Y
LIST 6.3.1
liv95.dat: sample network file 2.7
livtrips.dat: sample trip matrix 2.7
Logit Demand Functions 7.6, 7.7.1, 7.8
Multinomial Logit Models 7.6.2
Nested Logit Models 7.6.3, 7.6.4
LOG files: See KEY files 14.5.1
Loops:
SATEASY/SATSIM 9.1
SATALL 9.1
Terminating Criteria 9.2
LP files 3.3
LPG (Route flow) Files 12.6
LRTP; See Random Delays 6.3.2, 8.6.1
LTP 6.3.2,8.1.2,8.4.1,8.4.2, 8.4.5
L2G Files (links to groups) 15.60.4
Macros (See Key Files) 14.5.1
MANOFF 12.2.3
Map Networks 5.5.2
Dumping Map nodes to text files 11.4.2.2
Dumping Map links to text files 11.4.2.3
MapInfo (Atkins Tools) 23.4
Marginal costs: See SATMECC and System Optimal
MASL (Maximum assignment-simulation loops) 6.3.2, 9.1, 9.12.1
Use within SATALL continuation runs 9.12.1
MASL_F 7.5.3.4
MASL_M (Minimum assignment-simulation loops) 9.2.3
Matrices:
Aggregating sub-levels (MXAGG) 10.4.3, 10.20.21
Aggregating zones to, e.g., sectors 10.4.4, 10.16.4
Blocks (horizontal levels) 10.2.4
Comparison of 2 matrices (M2) 10.9.2
Compression:
Zones into Groups 10.4.4, 10.16.4
M3 10.16.3, App. W.1
M5 10.16.3, App. W.3
Copy a UFM file 10.4
(Minimum) Cost 15.27.1
Create a trip matrix file 4
Crow Fly distances 11.11.16
DAT and UFM files
General Properties 10.2.1
Index
Index
Index
Index
Index
Index
Index
Index
Index
Index
SAT10KEY.DAT App. Y
SAVEIT 6.3.1, 15.23.1
The (extra) SAVEIT Assignment 15.23.2
Accuracy of SAVEIT O-D routes 11.8.47, 15.23.2
Application of Aggregated (SPIDER) networks 15.56.5.3
SATALL parameter within continuation runs 9.12.1.1
SAVUFO 15.23.7, 22.5.7
Application of Aggregated (SPIDER) networks 15.56.5.3
SBT (Simulation Buffer Transformation) 15.1.7
Scatterplots (P1X) 11.7.1
Screen editing (Windows) 19.9
Implications for LOG and KEY files 14.5.9
Screen lines
Count Sets 6.10
Select Link Analysis 11.8.1.9
SDM (Simple or Separable Demand Models) 7.4.1
SECRET 6.4, 11.4.2.1
Sectors 5.1.7, 6.8, 10.2.5.3
Co-ordinates 6.8
Hierarchical definitions; see TFL and IROCKY 5.1.7
.Z2S files to convert zones to sectors 10.2.5.3, 10.5.1
Select Link Analysis (SLA) 11.8.1, 11.10.7.5, 15.19
Accuracy limitations of SLA 15.23.2
Select Link Matrices 11.8.1.3, 5.19
Bus Routes 11.8.4.2
Select Options for Matrices 10.6
Selected Area Matrix Factoring 10.7.1
Semi-Fatal Errors 2.9
Separable (and non-separable) cost-flow equations 7.1.3
Serious Warnings 2.9, App. L
Shadow Networks 7.11.10
SHANDY Option 6.3.1, 15.10
Shortest O-D paths: see Tree Building
Signals:
Coding example 16.1
Co-ordination 8.2.7
Filter lanes (Priority Marker F) 6.4.2.4
Intergreens 6.4.3
Minimum/maximum stage times 6.4.13
Offsets 6.4.3.4
Optimum offsets - see SATOFF 12.2, 11.9.13.1
Optimum stage times 11.9.13.1, 15.31.2
Optimisation at selected nodes 11.9.13.2, 15.31.6
Optimisation within SATALL 9.12.2, 15.31.4
Optimisation for improved convergence 9.5.1
Pedestrian Crossings
Percentage link green time (DA 1598) App I.1.1
.Rgs files of stage times 6.4.3.5, 11.9.14
Stages 6.4.3
SIGOPT: Signal Optimisation
Namelist Parameter 6.3.1, 9.12.2, 15.31.4
Index
Index
Index
Index
Bus-Only 6.4.4
Counts 6.10
Order 6.4.8
Priority Markers (TPM) and Modifiers 6.4.2
Restricted 6.7
Saturation Flows 6.4.6
Two-way link data (summed 1-way data) 11.10.8.2
UF* files 3.3
UFC files; See also SAVEIT 15.23
UFC109: Alternative UFC Formats 15.23.3
SATUFC: Re-creating UFC files 15.23.5
Conversion to .UFO: SATUFO 15.23.7
UFC109/UFC111 6.3.2, 15.23.3
UFM2 … matrix .bat files 10.20.15
UFM(UN)STACK 10.20.17
UFO files 21.4, 22.5
Created under OBA 22.5.2
Created under Frank-Wolfe (SAVUFO/SATUFO) 22.5.3, 15.23.6, 15.23.7
Conversion to .UFC (SATUFC) 15.23.5
UFO + SPIDER 22.5.3
Use in SATCH 12.1.12
UFQ path files 21.4
UNCRTS: Assignment convergence stopping parameter 7.1.5, 9.5.4
UNIQUE: 15.48
Uniqueness of Wardrop Equilibrium Solutions 7.1.6
Route Flows 15.23.8
Skimmed matrices 15.27.6
Univariate Analysis of a matrix 10.11.1
“Unstack” a matrix 10.17
UK and non-UK use (NOTUK) 15.7.1
UNCRTS 6.3.3, 7.1.5, 9.2.3, 15.23.4
Changes under AUTONA 9.5.4(4)
UNSTACK (Matrix batch file) 10.17, 10.20.12
UPBUS 6.9.2
Application to joy rides 11.7.2.2
Application to timed routes 6.9.4, 6.9.5
UPDATE 14.4.2, 15.3, 22.2.1
UPFILE 6.1, 14.4.2
Upstream entry/exit flows 15.16.2
User Classes 5.8.1
Names (UCNAME) 6.3.4
Actual Flows 15.21.4
User Interfaces
See SATWIN10/11 3.7, 3.8
USESPI 15.27.7.2, 15.27.7.3
Within P1X SLA 11.8.1.12, 15.56.7.2
USEUFO 15.23.6, 15.27.7.3
Within SATPIJA 13.3.14
Within SATCH 12.1.12
U-turns: At internal simulation nodes 5.1.4
At external simulation nodes 18.9.1, 16.6.2, 16.6.3
Index
ILOVEU 18.9.2
In bus routes 6.9.2, note 10)
V-records under 33333; maximum speed by veh class 6.6(16), 15.47.3
Validation 11.7
Counts 11.7.1
Travel Time Routes 11.7.2
Variable Demand Models 7.4
Convergence issues 7.8.6
Variable Program Dimensions 15.28
Variational Inequalities 9.2
VCPCU (PCU factors by vehicle class) 6.3.3, 15.17.2
VDM (Variable Demand Models; see also Supply-Demand) 7.4.1
External Loops with SATURN (Cobweb) 7.4.5
Convergence issues 7.8.6
VDU files 3.3, 11.1.3
Change the VDU mode 14.5.6
Vehicle Classes 5.8.2
By user class 6.11
Names (VCNAME) 6.3.4
PCU Factors (VCPCU) 6.3.3, 15.17.2
Updating trip matrices 13.4.6
Vertical editing of network data fields 11.9.17
W-markers: See Weave Priority and/or Weaving on Motorways
WAIT (Parallel operations) 15.52
Walking Networks 15.45
Wardrop Equilibrium 7.1
Choice vrs. Stochastic 7.2.6
Delta Function for measuring success 7.1.4
MSA 7.2.2, 7.11.8
PARTAN variation 7.11.7
ROSIE option 7.1.3
Stopping criteria 7.1.5
Uniqueness 7.1.6
Warm Starts (WSTART/IPERT) 21.3, 22.3
Altered Networks and/or Matrices 22.5
Identical Networks 22.4
With Elastic Assignment 22.6
Warnings 2.9, App.L
Weave Priority Markers (W) at a single junction 6.4.2.5, 15.40.7
Weaving on Motorways (between junctions) 6.4.9.4, 15.40
Using Network Aggregation 15.56.7
WHATHO (See also SOWHAT) 7.11.9
WIDDLE 7.11.16
Wildcard entries on KNOB Files 15.14.5.2
Defining tolls on centroid connectors 20.3
Windows (screen editing) 19.9, 19.10
Windows Operating Systems, see Hardware / Soft-
ware Requirements
WINDY 6.3.1
Word Processors 2.8.3
Worst converged nodes, routes etc; see Top Ten
Index
Index