Skip to main content

Module decomposition

Module decomposition 

Source
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 + subproblems
  • DantzigWolfe: Column generation for structured LP/NLP
  • Admm: Alternating direction method of multipliers for consensus problems
  • ProximalBundle: 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