16 pub mod unconstrained; |
16 pub mod unconstrained; |
17 pub mod l1squared_unconstrained; |
17 pub mod l1squared_unconstrained; |
18 pub mod l1squared_nonneg; |
18 pub mod l1squared_nonneg; |
19 |
19 |
20 |
20 |
21 /// Method for solving finite-dimensional subproblems |
21 /// Method for solving finite-dimensional subproblems. |
|
22 /// Not all outer methods necessarily support all options. |
22 #[derive(Clone, Copy, Eq, PartialEq, Serialize, Deserialize, Debug)] |
23 #[derive(Clone, Copy, Eq, PartialEq, Serialize, Deserialize, Debug)] |
23 #[allow(dead_code)] |
24 #[allow(dead_code)] |
24 pub enum InnerMethod { |
25 pub enum InnerMethod { |
25 /// Forward-backward |
26 /// Forward-backward |
26 FB, |
27 FB, |
27 /// Semismooth Newton |
28 /// Semismooth Newton |
28 SSN, |
29 SSN, |
29 /// PDPS |
30 /// PDPS |
30 PDPS, |
31 PDPS, |
31 /// Problem-specific choice (in practise FB or PDPS, whichever is implemented) |
|
32 Default, |
|
33 } |
32 } |
34 |
33 |
35 /// Settings for the solution of finite-dimensional subproblems |
34 /// Settings for the solution of finite-dimensional subproblems |
36 #[derive(Clone, Copy, Eq, PartialEq, Serialize, Deserialize, Debug)] |
35 #[derive(Clone, Copy, Eq, PartialEq, Serialize, Deserialize, Debug)] |
37 pub struct InnerSettings<F : Float> { |
36 pub struct InnerSettings<F : Float> { |
63 verbose_iter : Verbose::Every(1), |
62 verbose_iter : Verbose::Every(1), |
64 // … but don't print out anything |
63 // … but don't print out anything |
65 quiet : true, |
64 quiet : true, |
66 .. Default::default() |
65 .. Default::default() |
67 }, |
66 }, |
68 method : InnerMethod::Default, |
67 method : InnerMethod::SSN, |
69 tolerance_mult : 0.01, |
68 tolerance_mult : 0.01, |
70 } |
69 } |
71 } |
70 } |
72 } |
71 } |