Skip to main content

Optimization methods in Python

Project description

PyPI GitHub Documentation Status jax_badge

Structural Optimization and Scientific Computing

optymus is a Python library for solving optimization problems in mechanical engineering and scientific computing. Built on JAX for automatic differentiation, it provides efficient gradient computation and GPU acceleration. The library is designed for structural optimization, topology optimization, and general-purpose numerical optimization.

Key Features

  • Topology Optimization: PolyMesher-based mesh generation with signed distance functions
  • Pre-built Engineering Domains: Cook membrane, Michell truss, MBB beam, Wrench, Suspension
  • Structural Analysis Support: Boundary conditions, load definitions, and FEM-ready domains
  • Multiple Optimization Methods: Gradient-based (BFGS, Conjugate Gradient, Newton), adaptive (Adam, AdaGrad), and evolutionary (CMA-ES, Differential Evolution, Particle Swarm)
  • Constraint Handling: Support for equality and inequality constraints via penalty methods

Getting Started

  1. Install optymus:

    uv add optymus
    
  2. Basic optimization example:

    from optymus import Optimizer
    from optymus.benchmark import Mccormick
    
    import jax.numpy as jnp
    
    f = Mccormick()
    initial_point = jnp.array([2.0, 2.0])
    
    opt = Optimizer(f_obj=f,
                    x0=initial_point,
                    method='bfgs')
    
    opt.report()
    
  3. Topology optimization with engineering domains:

    from optymus.benchmark import MbbDomain
    from optymus.methods import polymesher
    
    # MBB beam domain with boundary conditions
    domain = MbbDomain
    
    # Generate polygonal mesh
    result = polymesher(domain=domain, num_elements=100)
    

Documentation

Visit the official documentation for:

  • Complete API reference
  • Optimization method guides
  • Mechanical engineering examples
  • Topology optimization tutorials

Citation

If you use optymus in your research, please cite:

@misc{optymus2024,
  author = {da Costa, Kleyton and Menezes, Ivan and Lopes, Helio},
  title = {Optymus: Optimization Methods in Python},
  year = {2024},
  note = {GitHub Repository},
  url = {https://github.com/quant-sci/optymus}
}

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

optymus-0.1.11.tar.gz (55.4 kB view details)

Uploaded Source

Built Distribution

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

optymus-0.1.11-py3-none-any.whl (72.8 kB view details)

Uploaded Python 3

File details

Details for the file optymus-0.1.11.tar.gz.

File metadata

  • Download URL: optymus-0.1.11.tar.gz
  • Upload date:
  • Size: 55.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for optymus-0.1.11.tar.gz
Algorithm Hash digest
SHA256 444f4161080f002a638971ed4c1b651c9087ec1566da7e76b16242261d0885eb
MD5 401c4b5b6af8740a4a6cffff5ca9d9b5
BLAKE2b-256 b0d9610b22bc267b0ab835061d2fd075dc882cb43cc2c5f46224f12e9af8ebfe

See more details on using hashes here.

File details

Details for the file optymus-0.1.11-py3-none-any.whl.

File metadata

  • Download URL: optymus-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 72.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for optymus-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 8f6d2495b2abcc0b75da81b9d0b2d8bcce5b7e99b25af990208485f641a6a9ca
MD5 9b7e9b4725025628a3c91269a5eaee10
BLAKE2b-256 6a6dbbc38c688491ce2f5bc405b5ead564c045237960ab23616eb2118e02a570

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