- Fix format_push_string: write!() instead of push_str(&format!()) (25 sites) - Fix str_to_string: .to_owned() instead of .to_string() on &str (6 sites) - Fix unseparated_literal_suffix: add _ separator (6 sites) - Fix multiple_inherent_impl: merge split impl blocks in TGGN, TFT, OFI (3) - Fix else_if_without_else: add exhaustive else clauses (3 sites) - Fix if_then_some_else_none: use .then().transpose() (1 site) - Fix unwrap_in_result: replace expect() with match + ? (2 sites) - Fix wildcard_enum_match_arm: enumerate Storage variants explicitly (2) - Fix decimal_literal_representation: use hex for power-of-2 constants (5) - Fix rc_buffer: Arc<Vec<T>> → Arc<[T]> for OFI features - Fix needless_range_loop: convert to iterator patterns (17 sites) - Fix used_underscore_binding: remove prefix on used vars (6 sites) - Fix doc list item indentation (7 sites) - Allow too_many_arguments on ML training functions (4) - Allow multiple_unsafe_ops_per_block on CUDA FFI functions (3) - Allow upper_case_acronyms on SLSTM/MLSTM model names (2) - Add ML-crate pedantic allows: shadow, similar_names, type_complexity, indexing_slicing, partial_pub_fields, non_ascii_literal, same_name_method (following existing ml-labeling/ml-universe pattern) Result: cargo clippy --workspace -- -D warnings passes with zero warnings. All 2758+ lib tests pass (2 pre-existing backtesting failures unchanged). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
52 lines
2.1 KiB
Rust
52 lines
2.1 KiB
Rust
//! Hyperparameter Optimization Library
|
|
//!
|
|
//! Production-ready hyperparameter optimization using argmin (PSO) and TPE.
|
|
//!
|
|
//! This crate provides:
|
|
//! - **Argmin Optimization**: Derivative-free optimization using Particle Swarm
|
|
//! - **TPE**: Tree-Parzen Estimator for Bayesian optimization
|
|
//! - **Latin Hypercube Sampling**: Smart initialization for exploration
|
|
//! - **Early Stopping**: Plateau detection, median pruning, percentile pruning
|
|
//! - **Sensitivity Analysis**: Fragility detection for hyperparameter robustness
|
|
//!
|
|
//! Model-specific adapters (DQN, PPO, TFT, Mamba2, etc.) live in the `ml` crate's
|
|
//! `hyperopt::adapters` module and depend on this crate for core infrastructure.
|
|
|
|
#![deny(clippy::unwrap_used, clippy::expect_used)]
|
|
#![cfg_attr(test, allow(clippy::unwrap_used, clippy::expect_used))]
|
|
#![allow(clippy::module_name_repetitions)]
|
|
#![allow(clippy::integer_division)]
|
|
#![allow(clippy::doc_markdown)]
|
|
#![allow(clippy::float_arithmetic)]
|
|
#![allow(clippy::partial_pub_fields)] // ML config structs: some fields are pub API, some internal
|
|
#![allow(clippy::shadow_reuse, clippy::shadow_same, clippy::shadow_unrelated)] // Common in optimization code
|
|
#![allow(clippy::non_ascii_literal)] // Math symbols in optimization documentation
|
|
#![allow(clippy::same_name_method)] // Intentional: inherent methods shadow trait defaults
|
|
#![allow(clippy::indexing_slicing)]
|
|
#![allow(clippy::missing_const_for_fn)]
|
|
#![allow(clippy::non_ascii_literal)]
|
|
#![allow(clippy::shadow_reuse)]
|
|
#![allow(clippy::shadow_unrelated)]
|
|
#![allow(clippy::shadow_same)]
|
|
#![allow(dead_code)]
|
|
#![allow(missing_docs)]
|
|
#![allow(unused_crate_dependencies)]
|
|
|
|
pub use ml_core::{MLError, MLResult};
|
|
|
|
pub mod early_stopping;
|
|
pub mod observer;
|
|
pub mod optimizer;
|
|
pub mod paths;
|
|
pub mod sensitivity;
|
|
pub mod tpe;
|
|
pub mod traits;
|
|
|
|
// Re-exports for convenience
|
|
pub use observer::TrialBudgetObserver;
|
|
pub use optimizer::{optimize_with_tpe, ArgminOptimizer, ArgminOptimizerBuilder, TwoPhaseObjective};
|
|
pub use traits::{
|
|
HardwareBudget, HyperoptStrategy, HyperparameterOptimizable, ObjectiveMode,
|
|
OptimizationResult, ParameterSpace, TrialResult,
|
|
};
|