Scram Versions Save

Probabilistic Risk Analysis Tool (fault tree analysis, event tree analysis, etc.)

0.11.3

7 years ago

Release Notes

This release somewhat stabilizes the performance profile of analysis across platforms. The stabilization results in up to 20% analysis performance regression; however, this regression is compensated by slightly improved BDD/ZBDD variable ordering heuristics, which increases performance by around 20%.

Major Changes

  • CacheTable for BDD (10% memory and 20% speed improvement)
  • Space-optimized container (2-3x memory efficient) for final analysis products (However, the maximum product order is limited to 32.)
  • Generic XML data streaming (25% reporting speed improvement)
  • XML streaming optimization for static string literals (10-15% reporting speed improvement)
  • Simplified role-based (private and public) element lookup in models (at least 30% speed improvement for model element initialization)
  • Continuous integration on Windows (#130)
  • Continuous integration on Mac OS X (#129)

Minor Changes

  • Numerical operation expressions: neg, add, sub, mul, div, pi.

Removed Features

  • Fault tree graphical representation with Graphviz

Bug Fixes

  • Regression in detection of duplicate input files (#131)
  • Regression in handling an undefined event with mixed roles and types in Model input (#141) (The bug was introduced in version 0.11.1)

Since v0.11.2

139 commits resulted in 179 files changed, 6334 insertions(+), 4752 deletions(-)

  • Core : 62 files changed, 3670 insertions(+), 3401 deletions(-)
  • Scripts : 3 files changed, 29 insertions(+), 18 deletions(-)
  • GUI : 5 files changed, 70 insertions(+), 44 deletions(-)
  • Tests : 40 files changed, 864 insertions(+), 378 deletions(-)
  • Documentation : 36 files changed, 1113 insertions(+), 280 deletions(-)

0.11.2

8 years ago

Release Notes

This micro release makes model initialization and validation facilities language-agnostic. The initialization facilities preserve the original representation of names and references without normalization except for trimming leading and trailing whitespace characters, which simplifies internationalization.

The release clarifies the support for the UTF-8, UTF-16, and other encodings in input files, and specifies the encoding for report files (UTF-8).

Removed Features

  • Case-insensitive model initialization and validation

Bug Fixes

  • 10 - 100x performance regression in model initialization from input (noticeable only for large models with 1000 or more events).

Since v0.11.1

6 commits resulted in 31 files changed, 284 insertions(+), 282 deletions(-)

  • Core : 13 files changed, 90 insertions(+), 118 deletions(-)
  • Scripts : no change
  • GUI : no change
  • Tests : 12 files changed, 168 insertions(+), 156 deletions(-)
  • Documentation : 6 files changed, 26 insertions(+), 8 deletions(-)

0.11.1

8 years ago

Release Notes

This release implements apparent, natural BDD-ZBDD optimizations that lead to simplicity or don't introduce much complexity.

Major Changes

  • Stricter application of the set order cut-off for ZBDD
    • Increased ZBDD/MOCUS performance sensitivity to the cut-off
    • Cut-off awareness of ZBDD cut-set extraction (~2x improvement of the extraction speed)
  • Intrusive reference counting for BDD and ZBDD vertices. (around 20% speed and memory improvements)
  • Intrusive hash table for BDD and ZBDD unique tables. (10-30% speed and memory improvements)
  • BDD and ZBDD node management without garbage collectors. (10-30% speed improvement)

Minor Changes

  • Faster and more efficient reporting of analysis results with XML streams. (200,000 cut sets per second with minimal memory overhead)
  • Cross-validation of qualitative analysis algorithms with the Fuzz tester.

Removed Features

  • Experimental support for nested Boolean formulae and nested parentheses in the shorthand format.

Bug Fixes

  • Missing check for negative literal approximations in application of minimal cut set order cut-offs (ZBDD/MOCUS). (#128)
  • Incorrect check for cloning constraints in common argument decomposition processing. The decomposition code fails to correctly determine if the no-clone operation has a side effect outside of the sub-graph. (#128)
  • Undefined behavior (int overflow) in probability calculations of CCF MGL and Alpha Models with many members (> 12) and high factor levels (>= (# members / 2)).
  • Missing proper error messages for int overflow or other numerical problems in XML input files.
  • InvalidArgument error is reported as unexpected when it communicates expected errors in user configurations and settings.
  • Memory leak in validating input files with RelaxNG schema.
  • The population standard deviation from Boost accumulators isn't adjusted to the sample standard deviation.

Since v0.11.0

163 commits resulted in 167 files changed, 7034 insertions(+), 39890 deletions(-)

  • Core : 61 files changed, 3963 insertions(+), 3230 deletions(-)
  • Scripts : 8 files changed, 1894 insertions(+), 2074 deletions(-)
  • GUI : no change
  • Tests : 68 files changed, 496 insertions(+), 33698 deletions(-)
  • Documentation : 15 files changed, 360 insertions(+), 714 deletions(-)

0.11.0

8 years ago

Release Notes

This release implements qualitative analysis with BDD and ZBDD facilities.

Major Changes

  • Fault tree analysis with BDD (#121)
  • Fault tree analysis with ZBDD (#126)
  • ZBDD for MOCUS (#124)
    • 10-100x speed improvement
    • 3-30x better memory utilization
    • Decreased performance sensitivity on approximations
  • Calculation of Prime Implicants (#122)

Minor Changes

  • The BDD-based algorithm is the default analysis algorithm.
  • The MOCUS and ZBDD algorithms run with the rare-event approximation by default.
  • Modules are analyzed only as needed (lazy) with adjusted cut-offs.
  • scram --validate is silent on success.
  • New web address: http://scram-pra.org

Bug Fixes

  • Improper cut set minimization in MOCUS when modules in a cut set are Unity sets.

Since v0.10.0

169 commits resulted in 138 files changed, 7762 insertions(+), 4524 deletions(-)

  • Core : 51 files changed, 2993 insertions(+), 2227 deletions(-)
  • Scripts : 6 files changed, 371 insertions(+), 144 deletions(-)
  • GUI : no change
  • Tests : 36 files changed, 882 insertions(+), 831 deletions(-)
  • Documentation : 20 files changed, 908 insertions(+), 571 deletions(-)

0.10.0

8 years ago

Release Notes

This release introduces Binary Decision Diagrams (BDD) and incorporates BDD-based algorithms into analysis. For quantitative analysis, the observed performance improvement exceeds 100x.

Major Changes

  • Probability analysis with BDD (#118)
  • Importance analysis with BDD (#119)
  • Uncertainty analysis with BDD (#120)
  • Fault tree preprocessing for BDD (#125)
  • Coherent fault tree analysis with BDD/ZBDD

Minor Changes

  • Non-coherent fault tree analysis with BDD/ZBDD (experimental)
  • Boolean optimization for non-coherent fault trees (experimental)
  • Adjustment of invalid calculation results in quantitative analyses due to approximations (the rare-event, MCUB) or invalid ranges (random distributions) (adjustment of probability to 1 if it exceeds 1)
  • Fuzz tester for SCRAM
  • Documentation style guide

Removed Features

  • The Sylvester-Poincaré expansion for probability calculations ('--num-sums' flag and setting are removed.)

Bug Fixes

  • Incorrect formulas for importance factors (#127)
  • Proper calculation of minimal cut sets with positive literals only (#123)
  • Failure to calculate constant outcome (#92)
  • Fault tree generator prevents K/N root gate
  • Boolean optimization fails to properly clone modules
  • Decomposition of common nodes is not semantics preserving
  • Distributivity preprocessing steps don't register new NULL type gates
  • Preprocessor doesn't handle one-arg K/N gates in transformations
  • Preprocessor doesn't handle (K > N) cases for K/N gates in transformations
  • Preprocessor attempts to coalesce empty (constant) gates
  • Filtering step in common argument merging fails to keep arguments unique

Since v0.9.2

  • 217 commits resulted in 128 files changed, 9185 insertions(+), 6512 deletions(-)

0.9.2

8 years ago

Release Notes

This micro release polishes the fault tree preprocessing techniques and optimizes minimal cut set generation.

Major Changes

  • Performance optimization with hash tables and flat sets for MOCUS (2x - 20x speed improvement and 5x - 10x better memory utilization)
  • Merging common arguments of gates for non-coherent fault trees
  • Heuristics for substitution of common arguments by existing gates (Merging common arguments runs 3x-4x faster but results in ~10% performance hit for cut set generation in some cases)
  • Heuristics for reduction of the number of parents of common arguments (Modularity is favored in merging common arguments)
  • Multiple gate definition detection with hash tables (Linear complexity and 10x-100x speed improvement for the detection)
  • Better strategy for handling distributive setups (10% - 20% cut-set-generation improvement for some cases)
  • The Shannon decomposition of common nodes with less gate cloning (Makes possible to preprocess graphs with 1000s of nodes without blowup)

Bug Fixes

  • Mishandling of duplicate arguments in K/N gate preprocessing
  • Handling of distributive setups introduces unmanageable subgraphs for other preprocessing and analysis steps. (Graph visit marks are messed up)
  • Incorrect assumption in common argument merging that if set A of common arguments is a subset of set B, group A of gates is a superset of group B.
  • Failing to properly unset module flags of gates in propagation of complements. The problem manifests itself upon creation of clones.

Since v0.9.1

  • 71 commits resulted in 46 files changed, 2673 insertions(+), 1893 deletions(-)

0.9.1

8 years ago

Release Notes

The release removes the restriction to use C++11 features. The build scripts and system requirements are updated to support C++11. Some features of C++11 have been applied to refactor the code and fix bugs.

Major Changes

  • Transition to C++11 (issue #116)
  • Calculation of both histograms and quantiles for uncertainty analysis (issue #104)
    • Add "--num-bins" and "--num-quantiles" arguments
  • Options to use the rare-event and MCUB approximations in uncertainty analysis
  • Calculation of the error factor in uncertainty analysis
  • Log-normal deviate expression with any level of confidence

Bug Fixes

  • Incorrect sampling for Histogram expressions. Weights and boundaries are swapped upon passing to the generator.
  • Incorrect reporting of quantiles. (issue #104)
  • Incorrect adjustment of the number of sums in probability series for the case with very few cut sets.
  • Mishandling of 95% confidence level for the log-normal deviate expression as 90% confidence level.

Since v0.9.0

  • 54 commits resulted in 114 files changed, 2695 insertions(+), 2602 deletions(-)

0.9.0

8 years ago

Release Notes

This release adds more fault tree preprocessing techniques that simplify a fault tree before the analysis. Depending on the structure of the fault trees, the observed gain in the analysis speed ranges from none to 50x.

Major Changes

  • Boolean optimization
    • Failure propagation
    • Redundancy detection
  • Merging common arguments for gates
  • Multiple definition detection for gates
  • The Shannon decomposition for common nodes
  • Distributivity detection
  • Grouping non-module nodes into modules
  • Recursive normalization of K-out-of-N gates

Other Additions

  • Optional link against TCMalloc (20-30% speed gain)
  • Capability to print the fault tree in preprocessing (the shorthand format)
  • NULL gates in the shorthand format
  • "--gates" argument for the fault tree generator script
  • Semantic Linefeeds for documentation source texts

Bug Fixes

  • Crash on a NULL or NOT gate top event with a single non-gate child.
  • Incorrect warning when no MCS is found, which indicates NULL (guaranteed success or prob(top) = 0).

Since v0.8.0

  • 189 commits resulted in 156 files changed, 10478 insertions(+), 4998 deletions(-)

0.8.0

8 years ago

Release Notes

This release upgrades the fault tree generator and introduces support for the shorthand notation. The release adds more support for OpenPSA MEF features. The project licenses are upgraded, and the project name uses a recursive acronym ("SCRAM is a Command-line Risk Analysis Multi-tool.").

Major Changes

  • Complex-fault-tree generator
    • More gate types: K/N, NOT, XOR.
    • House events
    • CCF groups
    • Common gates with no cycles in the resulting fault tree
    • More factors to control the complexity of the final fault tree
    • Reproducibility (Deterministic execution)
    • Better performance (100,000-basic-event/50,000-gate tree in less than 1min)
    • Better error reporting for wrong parameters
    • XML and the shorthand format for the output
    • Nested Boolean formula for the output
    • Topological sort of the output
  • Shorthand format to XML converter
    • Logical operators: AND, OR, K/N, XOR, NOT
    • Fault tree validation: cycles, repeated children, redefined nodes.
    • Basic and House events
    • Flexible with undefined nodes
    • Multiple top events
    • Topological sort of the output
    • Nested Boolean formula, Boolean equations (Experimental support)
    • Parentheses (Experimental support)
  • OpenPSA MEF features
    • Multiple top events per fault tree container
    • Nested Boolean formula for gates
    • Components in fault trees
    • Public and Private roles
    • Optional expression for basic events
    • Optional expression for house events
  • Updated and corrected OpenPSA MEF DTD

Bug Fixes

  • Cycle detection in parameters that takes into account expressions
  • Corrected graphing instructions for multiple-fault-tree models.

Relicensing

  • The project under the GPLv3
  • The website materials under the CC BY-SA 4.0
  • Individual Contributor License Agreement (Harmony ICLA 1.0-beta and Apache ICLA 2.0)
  • The OIN License Agreement

Since v0.7.0

  • 226 commits resulted in 292 files changed, 16622 insertions(+), 21351 deletions(-)

0.7.0

9 years ago

Release Notes

This release introduces analysis configuration and report in XML format.

Major Changes

  • XML Report Layer
    • OpenPSA MEF recommended schema
    • Special format for CCF events
  • XML Configuration File
    • Incorporation of all available options
    • More options for a finer control over analysis
    • Higher priority for command-line options
  • Bash completion script
  • Removal of the implicit detection of required analyses
    • Fault tree analysis is the default.
    • Other analysis types must be requested explicitly: probability, importance, uncertainty, ccf.
  • Removal of the post-processing(grouping, sorting) of analysis results
    • Delegation of post-processing to other tools like BaseX

Since v0.6.0

  • 64 commits resulted in 103 files changed, 4643 insertions(+), 4651 deletions(-)