[workspace]
members = ["optimizer-derive"]
[package]
name = "optimizer"
version = "1.0.0"
edition = "2024"
rust-version = "1.89"
license = "MIT"
authors = ["Manuel Raimann <raimannma@outlook.de>"]
description = "Bayesian and population-based optimization library with an Optuna-like API for hyperparameter tuning and black-box optimization"
repository = "https://github.com/raimannma/rust-optimizer"
documentation = "https://docs.rs/optimizer"
keywords = ["optimization", "hyperparameter", "tpe", "grid-search", "bayesian"]
categories = ["algorithms", "science", "mathematics"]
readme = "README.md"
[dependencies]
fastrand = "2.3"
thiserror = "2"
parking_lot = "0.12"
tokio = { version = "1.30", features = ["sync", "rt-multi-thread"], optional = true }
optimizer-derive = { version = "0.1.0", path = "optimizer-derive", optional = true }
serde = { version = "1", features = ["derive"], optional = true }
serde_json = { version = "1", optional = true }
tracing = { version = "0.1.29", optional = true }
sobol_burley = { version = "0.5", optional = true }
nalgebra = { version = "0.34", optional = true }
fs2 = { version = "0.4", optional = true }
[features]
default = []
async = ["dep:tokio"]
derive = ["dep:optimizer-derive"]
serde = ["dep:serde", "dep:serde_json"]
journal = ["dep:fs2", "serde"]
tracing = ["dep:tracing"]
sobol = ["dep:sobol_burley"]
cma-es = ["dep:nalgebra"]
gp = ["dep:nalgebra"]
[dev-dependencies]
tokio = { version = "1.30", features = ["rt-multi-thread", "macros", "time"] }
optimizer-derive = { version = "0.1.0", path = "optimizer-derive" }
serde_json = "1"
criterion = { version = "0.8", features = ["html_reports"] }
[[bench]]
name = "samplers"
harness = false
[[bench]]
name = "optimization"
harness = false
[[example]]
name = "basic_optimization"
path = "examples/basic_optimization.rs"
[[example]]
name = "parameter_types"
path = "examples/parameter_types.rs"
required-features = ["derive"]
[[example]]
name = "sampler_comparison"
path = "examples/sampler_comparison.rs"
[[example]]
name = "pruning"
path = "examples/pruning.rs"
[[example]]
name = "early_stopping"
path = "examples/early_stopping.rs"
[[example]]
name = "async_parallel"
path = "examples/async_parallel.rs"
required-features = ["async"]
[[example]]
name = "journal_storage"
path = "examples/journal_storage.rs"
required-features = ["journal"]
[[example]]
name = "ask_and_tell"
path = "examples/ask_and_tell.rs"
[[example]]
name = "multi_objective"
path = "examples/multi_objective.rs"
[[test]]
name = "journal_tests"
required-features = ["journal"]