This is the artifact for the ACM TECS article presented at EMSOFT 2021.
To reproduce the results from the article run make paper-results.
This has been tested on Ubuntu 18.04 and 20.04, you might need to install python3-venv for it to work.
sequence_generation.py: Contains the code for the declarative power sequencing framework (classes for the model and algorithms).enzian_descriptions.py: Model instance for the Enzian Research Computer.main.py: Main entry point to generate power up sequencesevaluation.py: Runs the evaluation for the modelmanual_sequence.py,manual_sequence_event_graph.txt: Manually developed sequence for Enzian, baseline to compare generated sequences against.visualize.py: Experimental framework to visualize sequences.tests.py: Unit tests for the framework.
The code has been tested to work on Ubuntu 18.04 and 20.04.
The code needs Python 3 (tested with 3.6.9 and 3.8.10).
It also needs matplotlib, numpy, pandas and for some functionality z3-solver.
Those can be installed using pip.
We also provide a requirements file.
We recommend using a virtual environment, the venv module can be installed with apt-get install python3-venv on Ubuntu.
The make target venv automates the creation of the virtual environment.
To generate a full power sequence for Enzian run ./main.py -o OUT_FILE enzian.
This will store the sequence to the given OUT_FILE.
This is how we generate the sequence for Section 6.1 in the article.
The results in Section 6.2 in the article can be reproduced running ./evaluation.py --e1m2 to run the experiment followed by ./plots --m2 to generate the plots.
The raw data is saved to results/eval1_m2_p{1,2,3}.csv, the plots are saved to plots/eval1_m2_p{1,2,3}.png.
The experiment in Section 6.3 can be run with ./evaluation.py --e2.
The data will be saved to results/eval2.csv.
There are a few more experiments that aren't in the article. See Jasmin Schult's Bachelor's thesis for detailed descriptions of these.