Skip to main content

A Python optimization toolkit focused on global optimization problems, featuring simple and customizable setup of various optimization algorithms implemented in C++.

Project description

quickopt

A Python optimization toolkit developed in C++ geared towards multimodal functions.

Documentation: Click Here!

Most of the information is found in the documentation - please refer to it! Tutorials, examples, descriptions/breakdowns of algorithms, and references are found here.

Installation

To install the package using PyPi, run the following command:

pip install quickopt

Description

This package is a Python optimization toolkit developed in C++ geared towards global optimization problems, such as those encountered in hyperparameter tuning. It contains a variety of optimization algorithms, which are listed below. The package is designed to be easy to use and flexible, allowing users to use popular optimization methods out of the box in as little as one line of code, while also allowing users to customize the optimization process to suit their needs. A list of the optimization algorithms included in the package is provided below:

  • Simulated Annealing: Compatible with string, double, and integer inputs

  • Bayesian Optimization with Tree-Structured Parzen Estimators: Compatible with double inputs

  • Genetic Algorithm: Compatible with string, double, and integer inputs

  • Particle Swarm Optimization: Compatible with double inputs

with more to come soon!

Quick Start

To use the package, import the desired optimization function from the package and run it with the desired parameters (described in detail in documentation). For example, to use the Particle Swarm Optimization algorithm for a double function, you would run the following code:

import quickopt

def objective(params): # The function being optimized - this must take inputs as a list
        return sum(x**2 for x in params)
    space_min = [-1.0, -1.0]
    space_max = [1.0, 1.0]

result = quickopt.pso(funct=objective, space_min=space_min, space_max=space_max, iterations=10) # The optimization is run here

print(result)

Note that some functions have different definitions dependant on variable type. For example, the Simulated Annealing algorithm has different functions for double, integer, and string inputs. The functions are named anneal_double, anneal_int, and anneal_string, respectively. Objective functions must take in inputs as a list, as shown above.

References:

Kirkpatrick, S., C. D. Gelatt, and M. P. Vecchi. 1983. “Optimization by Simulated Annealing.” Science 220 (4598): 671–80. https://doi.org/10.1126/science.220.4598.671.

Shuhei Watanabe, “Tree-Structured Parzen Estimator: Understanding Its Algorithm Components and Their Roles for Better Empirical Performance,” arXiv (Cornell University), January 1, 2023, https://doi.org/10.48550/arxiv.2304.11127.

Bergstra, James, Dan Yamins, and David D. Cox. “Making a Science of Model Search.” arXiv (Cornell University), January 1, 2012. https://doi.org/10.48550/arxiv.1209.5111.

Song, Jiaming, Lantao Yu, Willie Neiswanger, and Stefano Ermon. “A General Recipe for Likelihood-free Bayesian Optimization.” arXiv (Cornell University), January 1, 2022. https://doi.org/10.48550/arxiv.2206.13035.

Falkner, Stefan, Aaron Klein, and Frank Hutter. “BOHB: Robust and Efficient Hyperparameter Optimization at Scale.” arXiv (Cornell University), January 1, 2018. https://doi.org/10.48550/arxiv.1807.01774.

Baluja, Shumeet, and Rich Caruana. 1995. “Removing the Genetics From the Standard Genetic Algorithm.” In Elsevier eBooks, 38–46. https://doi.org/10.1016/b978-1-55860-377-6.50014-1.

Bonyadi, Mohammad Reza, and Zbigniew Michalewicz. 2017. “Particle Swarm Optimization for Single Objective Continuous Space Problems: A Review.” Evolutionary Computation 25 (1): 1–54. https://doi.org/10.1162/evco_r_00180.

More

Contact: varunpiram@gmail.com This project is licensed under the MIT License. See the LICENSE file for details.

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

quickopt-0.1.2.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quickopt-0.1.2-cp39-cp39-macosx_10_9_x86_64.whl (344.7 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

File details

Details for the file quickopt-0.1.2.tar.gz.

File metadata

  • Download URL: quickopt-0.1.2.tar.gz
  • Upload date:
  • Size: 13.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.15

File hashes

Hashes for quickopt-0.1.2.tar.gz
Algorithm Hash digest
SHA256 ec2dafc270ab735e1c5a600df2a47435f75b369595947193ccaf5344e69a3fdf
MD5 6506c69c1035d4deef8eb81a068a584b
BLAKE2b-256 f4e99c06fff113825b6421292d6ee2be89a0b09287d9bd38079c21270b53a31f

See more details on using hashes here.

File details

Details for the file quickopt-0.1.2-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for quickopt-0.1.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cd536d387f3af70f1a250a3a6d7f25561d4f2c848453955e8b92b2d252e5058f
MD5 6dc7e54e8afc25f5f6583c3ad585d21f
BLAKE2b-256 72c841179ec2069ff5033b408cb831e6dd0d73d115cd5e95fabdd71c3cd0d486

See more details on using hashes here.

Supported by

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