Expand description
Decomposition methods for large-scale optimization
This module provides classical decomposition approaches that exploit problem structure to break large optimization problems into manageable subproblems.
§Methods
BendersDecomposition: Decomposes mixed problems into master + subproblemsDantzigWolfe: Column generation for structured LP/NLPAdmm: Alternating direction method of multipliers for consensus problemsProximalBundle: Bundle method for nonsmooth convex optimization
§Example
use scirs2_optimize::decomposition::{Admm, AdmmOptions};
// Solve: min x^2 + ||z-1||^2 s.t. x = z
let result = Admm::default().solve(
|x: &[f64]| x[0].powi(2),
|v: &[f64], rho: f64| {
vec![(1.0 + rho * 0.5 * v[0]) / (1.0 + rho * 0.5)]
},
&[1.0],
).expect("valid input");
println!("x* = {:?}, f = {}", result.x, result.fun);Re-exports§
pub use benders::Admm;pub use benders::AdmmOptions;pub use benders::AdmmResult;pub use benders::BendersDecomposition;pub use benders::BendersOptions;pub use benders::BendersResult;pub use benders::DantzigWolfe;pub use benders::DantzigWolfeOptions;pub use benders::DantzigWolfeResult;pub use benders::ProximalBundle;pub use benders::ProximalBundleOptions;pub use benders::ProximalBundleResult;
Modules§
- benders
- Decomposition methods for large-scale optimization