storm-bn-spn is a tool for analysis of (parametric) Sum Product Networks built on top of storm-bn and STORM. It exploits the probabilistic model checking techniques of STORM by transforming (parametric) SPNs into (parametric) Markov Chains, using the (p)SPN2(p)MC transformer. The (p)SPN2(p)MC transformer takes (parametric) Sum Product Networks in BIF format and translates them into the Jani specification.
- Make the target
rm -rf build
mkdir build && cd build
cmake ..
make
- Run
build/bin/storm-bn-robin
- Type spn or bn depending on what you want to transform and enter
spn
- Type the name of the network example you want to transform and press enter.
random1_SPFlow
Note: Adjust the std::string folder
in "/src/storm-bn-robin-cli/storm-bn-robin.cpp" to indicate the location of the examples.
The tool builds upon "storm-bn/bn-mc-transformer" without creating additional subdirectories. It derives from the original classes to tailor the transformation to SPNs. Class files derived from the original classes are placed under the directory "/src/storm-bn-robin". New classes include:
- storm-bn-robin/src/jani/JaniFileCreator_SPN.cpp
- storm-bn-robin/src/parser/ProbabilityRow_SPN.cpp
- storm-bn-robin/src/parser/ProbabilityTable_SPN.cpp
- storm-bn-robin/src/parser/SPNetwork.cpp
- storm-bn-robin/src/transformer/SPNTransformer.cpp
We modified the "/src/storm-bn-robin-cli/storm-bn-robin.cpp" file from storm-bn to allow users to utilize both the pSPN2pMC and existing pBN2pMC transformations.
Minor changes were made to existing storm-bn classes under "/src/storm-bn-robin" to enable the use of derived classes.
Benchmarks are located under "/src/storm-bn-robin/TopologicalOrderingsBeyza". They were created using the SPFlow library by learning SPNs from random data.