src/subproblem/l1squared_nonneg.rs

branch
dev
changeset 39
6316d68b58af
parent 34
efa60bc4f743
child 42
6a7365d73e4c
equal deleted inserted replaced
37:c5d8bd1a7728 39:6316d68b58af
403 ) -> usize 403 ) -> usize
404 where F : Float + ToNalgebraRealField, 404 where F : Float + ToNalgebraRealField,
405 I : AlgIteratorFactory<F> 405 I : AlgIteratorFactory<F>
406 { 406 {
407 match inner.method { 407 match inner.method {
408 InnerMethod::PDPS | InnerMethod::Default => { 408 InnerMethod::PDPS => {
409 let inner_θ = 0.001; 409 let inner_θ = 0.001;
410 // Estimate of ‖K‖ for K=θ\Id. 410 // Estimate of ‖K‖ for K=θ\Id.
411 let normest = inner_θ; 411 let normest = inner_θ;
412 let (inner_τ, inner_σ) = (inner.pdps_τσ0.0 / normest, inner.pdps_τσ0.1 / normest); 412 let (inner_τ, inner_σ) = (inner.pdps_τσ0.0 / normest, inner.pdps_τσ0.1 / normest);
413 l1squared_nonneg_pdps_alt(y, g, λ, β, x, inner_τ, inner_σ, inner_θ, iterator) 413 l1squared_nonneg_pdps_alt(y, g, λ, β, x, inner_τ, inner_σ, inner_θ, iterator)
414 }, 414 },
415 InnerMethod::FB /*| InnerMethod::Default*/ => { 415 InnerMethod::FB => {
416 // The Lipschitz factor of ∇[x ↦ g^⊤ x + λ∑x]=g - λ𝟙 is FB is just a proximal point 416 // The Lipschitz factor of ∇[x ↦ g^⊤ x + λ∑x]=g - λ𝟙 is FB is just a proximal point
417 // method with on constraints on τ. We “accelerate” it by adding to τ the constant θ 417 // method with on constraints on τ. We “accelerate” it by adding to τ the constant θ
418 // on each iteration. Exponential growth does not seem stable. 418 // on each iteration. Exponential growth does not seem stable.
419 let inner_τ = inner.fb_τ0; 419 let inner_τ = inner.fb_τ0;
420 let inner_θ = inner_τ; 420 let inner_θ = inner_τ;
421 l1squared_nonneg_pp(y, g, λ, β, x, inner_τ, inner_θ, iterator) 421 l1squared_nonneg_pp(y, g, λ, β, x, inner_τ, inner_θ, iterator)
422 }, 422 },
423 _ => unimplemented!("{:?}", inner.method), 423 other => unimplemented!("${other:?} is unimplemented"),
424 } 424 }
425 } 425 }

mercurial