Software
Paganini
paganini is a lightweight python library for tuning multiparametric combinatorial specifications. Installation is easy:
pip install --user paganini
-
Source code on [Github]
-
If you use
paganini
or its components for published work, we encourage you to cite the accompanying paper Polynomial tuning of multiparametric combinatorial samplers. You can import the following BibTeX citation:@inproceedings{paganini, title = {Polynomial tuning of multiparametric combinatorial samplers}, author = {Bendkowski, Maciej and Bodini, Olivier and Dovgal, Sergey}, booktitle = {2018 Proceedings of the Fifteenth Workshop on Analytic Algorithmics and Combinatorics (ANALCO)}, pages = {92--106}, year = {2018}, organization = {SIAM} }
Boltzmann Brain
Boltzmann Brain is a Haskell library and standalone application meant for random generation of combinatorial structures. It can be used together with paganini for multiparametric random generation.
- The input specification format mimics that of Haskell algebraic data types where in addition each
type constructor may be annotated with an additional weight parameter. For instance:
-- Motzkin trees MotzkinTree = Leaf | Unary MotzkinTree (2) [0.3] | Binary MotzkinTree MotzkinTree.
-
In the above example, a
MotzkinTree
data type is defined. It contains three constructors:- a constant
Leaf
of weight one (default value if not annotated); - a unary
Unary
constructor of weight two, and - a binary contructor
Binary
of default weight one.
Here, the
Unary
construct is given weight 2 and a target frequency of 0.3. In consequence, the system is to be tuned such that theUnary
node contributes, on average, 30% of the total size of constructed Motzkin trees. It is hence possible to distort the natural frequency of each constructor in the given system. - a constant
-
See the source code and installation instructions on [Github]
- You can find a bunch of combinatorial examples [in another repository].