Livingstone has 9 configuration parameters. These determine how Livingstone uses resources and what algorithms it uses.
The configuration parameters are not independent of one another; some are meaningful only if others have been specified.
These are the 9 configuration parameters for Livingstone. One of them (maximum rank) is implemented under two different names in Livingstone, though they are mutually exclusive (one for each search method) and one parameter would have sufficed.
The choice has to do with clearing the existing set of candidates before searching for new ones. Either there is no clearing ("extend"), only outdated ones are cleared ("prune and search") or all candidates are cleared ("find fresh"). The preferred method, for correctness and efficiency, is "tracker default", which is "prune and search" for the CBFS tracker.
An upper bound can be placed on the number of time steps for which complete information is kept. When this limit is reached, the transition system "truncates" the history and summarizes the truncated information in a special assumption variable called the "state variable." The default value is 3. A zero value means that there is no upper bound; that is, truncation will not be performed.
An upper bound can be placed on the number of candidate diagnoses returned by a "find candidates" tracker operation when the search method is CBFS. The default value is 5. A zero value means that there is no upper bound.
An upper bound can be placed on the "rank" of candidate diagnostes returned by a "Find Candidates" tracker operation. For the CBFS search method, the default value is 100; for the cover search method, the default value is 8.
An upper bound can be placed on the number of nodes searched when the search method is CBFS. The default value is 1000. A zero value means that there is no upper bound.
Neither tracker currently uses this configuration parameter. The default value is 5.
The choice is between Full Progress and Minimal Progress. Since the latter is simply an optimization of the former, and should yield identical results, it is preferred. Note, however, that Minimal Progress requires, and automatically enables, model optimization. The default is Full Progress unless Full Progress has been disabled at compile time.
Note on optimization Sets of variables that are constrained to
have the same value can be
represented by only one "representative" variable in the set, the others
being excluded from the system. This can result in reductions of up to 50%
of the variables in a model. Similarly, logical equivalences (such as
(TRUE || P) == TRUE and (TRUE && P) == P) can be
exploited to reduce the number of clauses in the model.
The choice is between the Conflict-Directed Best-First Search (CBFS) and conflict coverage (cover), implemented by two trackers. Only the former is now used. The default is CBFS unless this has been disabled at compile time.
Note that once the tracker has been created, changing the search method will have no further effect.
When the search method is CBFS, an upper bound can be placed on the number of Candidates that differ in more than time step. Candidates are partitioned into equivalence classes, defined by the equivalence relation that two Candidates are equivalent if, ignoring time steps, their Assignments are identical. The default value is zero, meaning that there is no upper bound to the number of equivalence classes.
Configuration parameters are conveyed to Livingstone in three different ways.
Methods on class Livingstone and on class L2_parameters can be called to
set the configuration parameters. To use this method, you will have to
write an alternative to l2test and l2flight. Be
sure to call these methods after the file is read in, or the
*.params file will over-write your settings.
| Method | Value domain |
|---|---|
| void Livingstone::set_cbfs_maxcand (unsigned max_value) | |
| void Livingstone::set_cbfs_max_candidate_classes(unsigned maxClassCount) | |
| void Livingstone::set_cbfs_max_cutoff_weight (unsigned max_value) | |
| void Livingstone::set_cbfs_search (unsigned max_value) | |
| void Livingstone::set_cover_maxrank (unsigned max_value) | |
| void Livingstone::set_fc_style (L2_parameters::FC_style style | L2_parameters::tracker_default, L2_parameters::extend,
L2_parameters::find_fresh,
L2_parameters::prune_and_search |
| void Livingstone::set_fc_style_str (const MBA_string& fc_style) | "default", "extend", "ff", "find-fresh", "findfresh", "none",
"prune-and-search", "prune-search", "ps",
"the tracker default fc" |
| void Livingstone::set_history (unsigned value) | |
| void Livingstone::set_max_truncated_candidates (unsigned max_value) | |
| void Livingstone::set_progress_style (L2_parameters::Progress_style style) | L2_parameters::full, L2_parameters::min |
| void Livingstone::set_progress_style_str (const MBA_string& style_str) | "full", "min" |
| void Livingstone::set_search_style(L2_parameters::Search_style style) | L2_parameters::cbfs, L2_parameters::cover |
| void Livingstone::set_use_optimizer(bool val) | |
| void L2_parameters::set_cbfs_max_candidates(unsigned maxcand) | |
| void L2_parameters::set_cbfs_max_rank(unsigned weight) | |
| void L2_parameters::set_cbfs_search_space(unsigned nsearched) | |
| void L2_parameters::set_cover_max_rank(unsigned weight) | |
| void L2_parameters::set_find_candidates_style(L2Parameters::FC_style style) | L2_parameters::tracker_default, L2_parameters::extend,
L2_parameters::find_fresh,
L2_parameters::prune_and_search |
| void L2_parameters::set_history(unsigned h) | |
| void L2_parameters::set_max_truncated_candidates(unsigned n) | |
| void L2_parameters::set_progress_style(L2Parameters::Progress_style style) | L2_parameters::full, L2_parameters::min |
| void L2_parameters::set_search_style(L2Parameters::Search_style style) | L2_parameters::cbfs, L2_parameters::cover |
*.params fileA file with extension .params may be placed in the model
file directory. When the model file is read, the parameters file is also
read. This file need not exist.
One configuration parameter is declared per line. Each line is of the
form <parameter>=<value>. Blank lines are ignored,
as is whitespace within lines and as are lines whose first two
non-whitespace characters are not "L2".
| Parameter Name | Value Domain |
|---|---|
| L2FindCandidatesCmdType | default, extend, ff, find-fresh, findfresh, none,
prune-and-search, prune-search, ps |
| L2MaxCBFSCandidates | int |
| L2MaxCBFSCandidateClasses | int |
| L2MaxCBFSCutoffWeight | int |
| L2MaxCBFSSearchSpace | int |
| L2MaxCoverCandidateRank | int |
| L2MaxHistorySteps | int |
| L2ProgressCmdType | full, min |
| L2NumTrajectoriesTracked | int |
| L2SearchMethod | cbfs, cover |
Stanley creates a *.params file when it creates the
*.hrn, *.ini, and *.xmpl files in
the model file directory. Stanley has its own set of default values to
write the the *.params file. These defaults (as well as
many other Stanley-specific configuration parameters) are saved in a
file named skunkworks/preferences/prefDefaults. Do not
modify this file. An extract from the file is:
#
# LIVINGSTONE PREFERENCES
#
L2SearchMethod = cbfs
# 0 indicates unbounded classes
L2MaxCBFSCandidateClasses = 0
L2MaxCBFSCandidates = 5
L2MaxCBFSSearchSpace = 1000
L2MaxCBFSCutoffWeight = 100
L2MaxCoverCandidateRank = 8
# 0 indicates no history
L2MaxHistorySteps = 3
L2ProgressCmdType = min
L2NumTrajectoriesTracked = 5
L2FindCandidatesCmdType = prune-search
Stanley's default values for the Livingstone configuration parameters
can be changed using the Stanley dialogs:
Edit->Preferences->Skunkworks/User/Workspace->Edit User ... or
Edit->Preferences->Skunkworks/User/Workspace->Edit Workspace ...
The build script for Livingstone creates two executables,
l2test and l2flight, the first of which takes
command-line options that set the configuration parameters. These options
are prefixed on the command line by a double hyphen (--), for
example, --history=5.
l2testCommand-line configuration parameters to the l2test
executable must precede the model file pathname. Note that the command-line
configuration parameters do not override those in the *.params
file; the latter dominate.
The command-line configuration parameters to l2test come
from the following set.
| Option (long form) | Option (short form) | Value Domain | Meaning | Remarks |
|---|---|---|---|---|
cbfs |
[no value] | Use the CBFS search style | Unless disabled at compile time | |
cbfs-candidates |
int | Maximum number of candidates | Used with --cbfs unless disabled at compile time |
|
cbfs-candidate-classes |
int | Maximum number of candidate classes | Used with --cbfs unless disabled at compile time |
|
cbfs-search |
int | Maximum number of nodes to search | Used with --cbfs unless disabled at compile time |
|
cover |
[no value] | Use the cover search style | Unless disabled at compile time. | |
cover-max-rank |
int | Maximum-rank candidate to consider | Used with --cover unless disabled at compile time |
|
help |
h |
[no value] | Print usage message and exit | Not a configuration parameter |
history |
y |
int | Set the maximum history to hold | |
max-truncate |
int | The maximum number of candidates to keep through truncation | Neither tracker currently uses this value | |
optimize |
O |
[no value] | Optimize the model between reading in and loading | Not needed if --progress=min |
progress |
p |
full, min |
Set progress style | |
verbose |
v |
[o][r][w] |
Print information when reading, optimizing and writing | Not a Livingstone configuration parameter; specific to
l2test |
version |
[no value] | Print version number and exit | Not a configuration parameter |
l2flightThere are no command-line parameters to the l2flight
executable; use the *.params file.