Skip to main content

StochOPy (STOCHastic OPtimization for PYthon) provides user-friendly routines to sample or optimize objective functions with the most popular algorithms.

Project description

Summary

Version:

1.2.1

Author:

Keurfon Luu

Web site:

https://github.com/keurfonluu/stochopy

Copyright:

This document has been placed in the public domain.

License:

StochOPy is released under the MIT License.

NOTE: StochOPy has been implemented in the frame of my Ph. D. thesis. If you find any error or bug, or if you have any suggestion, please don’t hesitate to contact me.

Features

StochOPy provides routines for sampling of a model parameter space:

  • Pure Monte-Carlo

  • Metropolis-Hastings algorithm

  • Hamiltonian (Hybrid) Monte-Carlo [1,2]

or optimization of an objective function:

  • Differential Evolution [3]

  • Particle Swarm Optimization [4,5]

  • Competitive Particle Swarm Optimization [6]

  • Covariance Matrix Adaptation - Evolution Strategy [7]

Installation

The recommended way to install StochOPy is through pip (internet required):

pip install stochopy

Otherwise, download and extract the package, then run:

python setup.py install

Usage

First, import StochOPy and define an objective function (here Rosenbrock):

import numpy as np
from stochopy import MonteCarlo, Evolutionary

f = lambda x: 100*np.sum((x[1:]-x[:-1]**2)**2)+np.sum((1-x[:-1])**2)

You can define the search space boundaries if necessary:

n_dim = 2
lower = np.full(n_dim, -5.12)
upper = np.full(n_dim, 5.12)

Initialize the Monte-Carlo sampler:

max_iter = 1000
mc = MonteCarlo(f, lower = lower, upper = upper, max_iter = max_iter)

Now, you can start sampling with the simple method ‘sample’:

mc.sample(sampler = "hamiltonian", stepsize = 0.005, n_leap = 20, xstart = [ 2., 2. ])

Note that sampler can be set to “pure” or “hastings” too. The models sampled and their corresponding energies are stored in:

print(mc.models)
print(mc.energy)

Optimization is just as easy:

n_dim = 10
lower = np.full(n_dim, -5.12)
upper = np.full(n_dim, 5.12)
popsize = 4 + np.floor(3.*np.log(n_dim))
ea = Evolutionary(f, lower = lower, upper = upper, popsize = popsize, max_iter = max_iter)
xopt, gfit = ea.optimize(solver = "cmaes")
print(xopt)
print(gfit)

References

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stochopy-1.2.1.tar.gz (29.0 kB view details)

Uploaded Source

Built Distribution

stochopy-1.2.1-py3.5.egg (35.8 kB view details)

Uploaded Egg

File details

Details for the file stochopy-1.2.1.tar.gz.

File metadata

  • Download URL: stochopy-1.2.1.tar.gz
  • Upload date:
  • Size: 29.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for stochopy-1.2.1.tar.gz
Algorithm Hash digest
SHA256 8369a26895b82b4178fb96b11bd0d5af310e2d6e5e6d3668039b9463bbab3848
MD5 68e0d2cbfa1cebac38408bef6c415696
BLAKE2b-256 143d65049336ec4d96d07cf4b5e86a6acfc7f28db40d0a7fe97af3d0976ab9e4

See more details on using hashes here.

File details

Details for the file stochopy-1.2.1-py3.5.egg.

File metadata

  • Download URL: stochopy-1.2.1-py3.5.egg
  • Upload date:
  • Size: 35.8 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for stochopy-1.2.1-py3.5.egg
Algorithm Hash digest
SHA256 8ac9cfdb2618d2965838bb835c4416cf3dbd4348fbf94858fd1e05b5abe6e51d
MD5 5b7160228da0c39891229e43c50b1c02
BLAKE2b-256 7af82254a941630530ec9e41a5f7ace0815b0d2438b24a7023282c36b63b7abc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page