| 174 let τ = config.τ0 * φ / (σ_d * bigM * a + φ * l); |
174 let τ = config.τ0 * φ / (σ_d * bigM * a + φ * l); |
| 175 // Acceleration is not currently supported |
175 // Acceleration is not currently supported |
| 176 // let γ = dataterm.factor_of_strong_convexity(); |
176 // let γ = dataterm.factor_of_strong_convexity(); |
| 177 let ω = 1.0; |
177 let ω = 1.0; |
| 178 |
178 |
| |
179 dbg!(τ, σ_p); |
| |
180 |
| 179 // We multiply tolerance by τ for FB since our subproblems depending on tolerances are scaled |
181 // We multiply tolerance by τ for FB since our subproblems depending on tolerances are scaled |
| 180 // by τ compared to the conditional gradient approach. |
182 // by τ compared to the conditional gradient approach. |
| 181 let tolerance = config.insertion.tolerance * τ * reg.tolerance_scaling(); |
183 let tolerance = config.insertion.tolerance * τ * reg.tolerance_scaling(); |
| 182 let mut ε = tolerance.initial(); |
184 let mut ε = tolerance.initial(); |
| 183 |
185 |
| 307 { |
309 { |
| 308 let opKz = ZeroOp::new_dualisable(Loc([]), z.dual_origin()); |
310 let opKz = ZeroOp::new_dualisable(Loc([]), z.dual_origin()); |
| 309 let fnH = Zero::new(); |
311 let fnH = Zero::new(); |
| 310 // Convert config. We don't implement From (that could be done with the o2o crate), as σd0 |
312 // Convert config. We don't implement From (that could be done with the o2o crate), as σd0 |
| 311 // needs to be chosen in a general case; for the problem of this fucntion, anything is valid. |
313 // needs to be chosen in a general case; for the problem of this fucntion, anything is valid. |
| 312 let &FBConfig { τ0, σp0, insertion } = config; |
314 let &FBConfig { τ0, σp0, insertion, .. } = config; |
| 313 let pdps_config = ForwardPDPSConfig { τ0, σp0, insertion, σd0: 0.0 }; |
315 let pdps_config = ForwardPDPSConfig { τ0, σp0, insertion, σd0: 0.0 }; |
| 314 |
316 |
| 315 pointsource_forward_pdps_pair( |
317 pointsource_forward_pdps_pair( |
| 316 f, |
318 f, |
| 317 reg, |
319 reg, |