src/pdps.rs

changeset 71
e2953ffd4e0b
parent 63
7a8a55fd41c0
child 75
677a5fd1b014
equal deleted inserted replaced
70:ed16d0f10d08 71:e2953ffd4e0b
219 219
220 // Update step length parameters 220 // Update step length parameters
221 let ω = pdpsconfig.acceleration.accelerate(&mut τ, &mut σ, γ); 221 let ω = pdpsconfig.acceleration.accelerate(&mut τ, &mut σ, γ);
222 222
223 // Do dual update 223 // Do dual update
224 // y = y_prev + τb 224 // y = y_prev - σb
225 y.axpy(τ, b, 1.0); 225 y.axpy(-σ, b, 1.0);
226 // y = y_prev - τ(A[(1+ω)μ^{k+1}]-b) 226 // y = y_prev + σ(A[(1+ω)μ^{k+1}]-b)
227 opA.gemv(&mut y, -τ * (1.0 + ω), &μ, 1.0); 227 opA.gemv(&mut y, σ * (1.0 + ω), &μ, 1.0);
228 // y = y_prev - τ(A[(1+ω)μ^{k+1} - ω μ^k]-b) 228 // y = y_prev + σ(A[(1+ω)μ^{k+1} - ω μ^k]-b)
229 opA.gemv(&mut y, τ * ω, &μ_base, 1.0); 229 opA.gemv(&mut y, -σ * ω, &μ_base, 1.0);
230 y = phistar.prox(τ, y); 230 y = phistar.prox(σ, y);
231 231
232 // Give statistics if requested 232 // Give statistics if requested
233 let iter = state.iteration(); 233 let iter = state.iteration();
234 stats.this_iters += 1; 234 stats.this_iters += 1;
235 235

mercurial