Skip to content
/ SM-SPSA Public

The SM-SPSA algorithm optimises a function over the stationary distribution of a Markov chain.

License

Notifications You must be signed in to change notification settings

NanneD/SM-SPSA

Repository files navigation

SM-SPSA logo Code style: black

SM-SPSA

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.

Installation

For installation instructions, please see: https://nanned.github.io/SM-SPSA/installation/installation.html.

Documentation

For the user guide, including documentation and a quickstart, please see: https://nanned.github.io/SM-SPSA/userguide/userguide.html.

Citing

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},
} 

License

The GNU General Public License v3 (GPL-3) license is used. For more information, please see the included LICENSE.md file.

Contributing

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:

  1. Open the command line and move to the SMSPSA folder.
  2. Run the tests by using the following command:
pytest smspsa/tests.py
  1. Run the mypy checker by using:
mypy smspsa/

About

The SM-SPSA algorithm optimises a function over the stationary distribution of a Markov chain.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages