optymus is a Python library for solving optimization problems in engineering and scientific computing. Built on JAX for automatic differentiation, it provides efficient gradient computation and GPU acceleration. The library supports continuous optimization, topology optimization, and combinatorial optimization (vehicle routing).
-
Install optymus:
uv add optymus
-
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()
-
Vehicle Routing Problem:
import numpy as np from optymus.routing import solve_vrp coordinates = np.array([[0,0], [1,2], [3,1], [4,3], [2,4]], dtype=float) demands = np.array([0, 3, 5, 4, 6], dtype=float) result = solve_vrp( coordinates=coordinates, demands=demands, vehicle_capacity=10, ) print(result.routes) # e.g. [[1, 4], [2, 3]] print(result.total_distance)
-
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)
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}
}