SM-SPSA (stochastic matrix simultaneous perturbation stochastic approximation) is an extension of the SPSA algorithm to optimize a nonlinear objective function over the stationary distribution of a Markov chain. For more information, please visit the SM-SPSA website: https://nanned.github.io/SM-SPSA.
The code is written in Python 3.10.4.
For installation instructions, please see: https://nanned.github.io/SM-SPSA/installation/installation.html.
For the user guide, including documentation and a quickstart, please see: https://nanned.github.io/SM-SPSA/userguide/userguide.html.
If you would like to cite SM-SPSA
, please consider citing the following paper:
Nanne A. Dieleman, Joost Berkhout, Bernd Heidergott (2024). A Pseudo-Gradient Approach for Model-free Markov Chain Optimization. Preprint at arXiv: https://www.arxiv.org/abs/2407.14786. doi: 10.48550/arXiv.2407.14786.
Or, using the following BibTeX entry:
@article{Dieleman_Berkhout_Heidergott_2024,
title = {A Pseudo-Gradient Approach for Model-free Markov Chain Optimization},
author = {Dieleman, Nanne A. and Berkhout, Joost and Heidergott, Bernd},
year = {2024},
url = {https://www.arxiv.org/abs/2407.14786},
doi = {10.48550/arXiv.2407.14786},
}
The GNU General Public License v3 (GPL-3) license is used. For more information, please see the included LICENSE.md file.
If you would like to contribute to SM-SPSA
in any way, please feel free to create an issue to discuss what you would like to add or change. Moreover, make sure that your code submission includes:
- tests
- type hints
- documentation
- docstrings for the added/changed methods, classes, etc. according to the NumPy docstrings format
To check whether the type hints and tests run smoothly, you can follow these steps:
- Open the command line and move to the
SMSPSA
folder. - Run the tests by using the following command:
pytest smspsa/tests.py
- Run the mypy checker by using:
mypy smspsa/