Skip to main content

Algosto : May randomness be with you

Algosto, from the concatenation of french words Algorithmes Stochastiques (/al.ɡo.ʁitm stɔ.kas.tik/), is a Python package built on top of NumPy that provides implementations of various stochastic algorithms.

The full documentation is available here.

Installation

You can install Algosto with:

pip install algosto

Usage

This section shows an example on how Algosto works by applying the stochastic gradient descent algorithm (SGD) to a quadratic function.

Workflow

The basic workflow needs four elements :

An objective function : This is the function we want to minimize. It is a Python function that takes a numpy matrix (n, d), where n is the number of points to handle and d is the dimension of points, and returns a result vector of length n.

A constraint : It is an object that defines the space in which the solver will optimize the function. Obviously, the objective function needs to be defined on this space.

A solver : In Algosto, solvers are always classes that need an objective function and a constraint to be instanciated. Simply call the fit method to minimize the objective on the constraint.

A plot : Algosto provides some functions to plot most used graph. You can build your own graph using Matplotlib or Plotly.

Objective function

Based on the workflow given just before, we start by defining the quadratic objective function and its gradient in order to use the SGD.

import numpy as np

def objective(x: np.array) -> float :
    return np.sum(x**2, axis=1)

def grad(x: np.array) -> float :
    return 2*x

[!WARNING] As said before, objective functions and gradients need to be able to process multiple points simultaneously to work with Algosto. Specifically, if the function operates on points of dimension d, it should accept a numpy array with shape (n, d) and returns a numpy array of length n, where n is the number of points provided to the objective function or gradient.

Algosto provides some toy objective functions, of which the quadratic function is a part, that you can import like this :

from algosto.utils.functions import quadratic

objective, grad = quadratic()

[!NOTE] You can find a list of all available functions in the references section of the documentation.

Constraints

Now, we need to specify the definition space. To do that, Algosto provides object called constraints that you can import from the module algosto.constraints as follow :

import numpy as np
from algosto.constraints import RdBallConstraint

ct = RdBallConstraint(2, np.zeros(2), 5)

We define a two-dimensional ball in $\mathbb{R}^d$, centered at the origin. Constraints provide the solver with information about the space within which it can optimize the objective function.

[!NOTE] You can find a list of all available constraints in the references section of the documentation.

[!NOTE] If your constraint is not yet implemented, you can define your own. Refer to the constraint chapter in the cookbook to learn how.

Solver

It's time to speak about the solver itself. Solvers are avaible from the algosto.solvers module where you can find all the solvers implemented in Algosto. In this example, we are going to use the stochastic gradient descent (SGD) to minimize the objective.

from algosto.solvers import SGDSolver

solver = SGDSolver(ct, objective)   

[!NOTE] You can find a list of all available solvers in the references section of the documentation.

Finally, we can minimize the objective function with the help of the fit method :

from algosto.utils import plot

solver.fit()

plot(solver)

Full workflow code

The full Python code is avaible just below

import numpy as np
from algosto.functions import quadratic
from algosto.constraints import RdBallConstraint
from algosto.solvers import SGDSolver
from algosto.evaluate import trajectory

objective, grad = quadratic()

ct = RdBallConstraint(2, np.zeros(2), 5)

solver = SGDSolver(ct, objective, grad)

solver.fit()

plot(solver)

Metadata

Release files for algosto 0.0.18

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for algosto 0.0.18
File Size Uploaded
algosto-0.0.18.tar.gz 10.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for algosto 0.0.18
File Interpreter ABI Platform
algosto-0.0.18-py3-none-any.whl Python 3 none any Details

Total release size: 23.5 kB

Release files / algosto-0.0.18.tar.gz

Download URL algosto-0.0.18.tar.gz
Size 10.2 kB
Tags Source
SHA-256 checksum
How to use checksums
1f5fa5b35aa1c9c43cd1b61ed1e5da01ba8a85ed0dca18381a64d7108605b3cb
BLAKE2b-256 checksum
How to use checksums
7504dc00762d2250e1e2b8cb6ef96d5dcba506b67c55a6bb789e844c797518ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.20

Release files / algosto-0.0.18-py3-none-any.whl

Download URL algosto-0.0.18-py3-none-any.whl
Size 13.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4ec5b1817a3316475e90d4b35be76e443ed18f6cfe27a841726cc81841dcb3fc
BLAKE2b-256 checksum
How to use checksums
adc76adaa3a47bacfcf514ec776a6bbb7e85a6d34196ba8b5f2bf47a9cbb76bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.20

Release history Release notifications | RSS feed

This release

0.0.18 This release

2 release files

0.0.17

2 release files

0.0.16

2 release files

0.0.15

2 release files

0.0.12

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page