pub struct ADMMSolver {
pub rho: f64,
pub max_iter: usize,
pub tol: f64,
}Expand description
ADMM solver for problems of the form: min f(x) + g(z) s.t. Ax + Bz = c.
Fields§
§rho: f64Penalty parameter ρ > 0.
max_iter: usizeMaximum iterations.
tol: f64Tolerance.
Implementations§
Source§impl ADMMSolver
impl ADMMSolver
Sourcepub fn lasso_convergence_rate(&self, lambda: f64, _n: usize) -> f64
pub fn lasso_convergence_rate(&self, lambda: f64, _n: usize) -> f64
ADMM for LASSO: min (1/2)||Ax-b||^2 + λ||x||_1. Simplified: returns the number of iterations to convergence estimate.
Sourcepub fn dual_update(&self, y: f64, primal_residual: f64) -> f64
pub fn dual_update(&self, y: f64, primal_residual: f64) -> f64
Dual update: y_{k+1} = y_k + ρ(Ax_{k+1} + Bz_{k+1} - c). Simplified for scalar: returns updated dual variable.
Sourcepub fn stopping_criteria(&self, primal_res: f64, dual_res: f64) -> bool
pub fn stopping_criteria(&self, primal_res: f64, dual_res: f64) -> bool
Stopping criteria: primal and dual residuals. primal: ||Ax + Bz - c||, dual: ||ρA^T B(z - z_old)||.
Sourcepub fn convergence_bound_at(&self, k: usize, _initial_gap: f64) -> f64
pub fn convergence_bound_at(&self, k: usize, _initial_gap: f64) -> f64
Convergence bound: ADMM converges at O(1/k) for general convex problems.
Auto Trait Implementations§
impl Freeze for ADMMSolver
impl RefUnwindSafe for ADMMSolver
impl Send for ADMMSolver
impl Sync for ADMMSolver
impl Unpin for ADMMSolver
impl UnsafeUnpin for ADMMSolver
impl UnwindSafe for ADMMSolver
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more