78 use crate::dataterm::{ |
78 use crate::dataterm::{ |
79 DataTerm, |
79 DataTerm, |
80 L2Squared, |
80 L2Squared, |
81 L1 |
81 L1 |
82 }; |
82 }; |
|
83 use crate::measures::merging::SpikeMergingMethod; |
|
84 |
83 |
85 |
84 /// Acceleration |
86 /// Acceleration |
85 #[derive(Clone, Copy, Eq, PartialEq, Serialize, Deserialize, ValueEnum, Debug)] |
87 #[derive(Clone, Copy, Eq, PartialEq, Serialize, Deserialize, ValueEnum, Debug)] |
86 pub enum Acceleration { |
88 pub enum Acceleration { |
87 /// No acceleration |
89 /// No acceleration |
133 } |
135 } |
134 |
136 |
135 #[replace_float_literals(F::cast_from(literal))] |
137 #[replace_float_literals(F::cast_from(literal))] |
136 impl<F : Float> Default for PDPSConfig<F> { |
138 impl<F : Float> Default for PDPSConfig<F> { |
137 fn default() -> Self { |
139 fn default() -> Self { |
138 let τ0 = 0.5; |
140 let τ0 = 5.0; |
139 PDPSConfig { |
141 PDPSConfig { |
140 τ0, |
142 τ0, |
141 σ0 : 0.99/τ0, |
143 σ0 : 0.99/τ0, |
142 acceleration : Acceleration::Partial, |
144 acceleration : Acceleration::Partial, |
143 generic : Default::default(), |
145 generic : FBGenericConfig { |
|
146 merging : SpikeMergingMethod { enabled : true, ..Default::default() }, |
|
147 .. Default::default() |
|
148 }, |
144 } |
149 } |
145 } |
150 } |
146 } |
151 } |
147 |
152 |
148 /// Trait for data terms for the PDPS |
153 /// Trait for data terms for the PDPS |
283 config, ®, &state, &mut stats |
288 config, ®, &state, &mut stats |
284 ); |
289 ); |
285 |
290 |
286 // Prune and possibly merge spikes |
291 // Prune and possibly merge spikes |
287 if config.merge_now(&state) { |
292 if config.merge_now(&state) { |
288 stats.merged += prox_penalty.merge_spikes(&mut μ, &mut τv, &μ_base, τ, ε, config, ®); |
293 stats.merged += prox_penalty.merge_spikes_no_fitness( |
|
294 &mut μ, &mut τv, &μ_base, None, τ, ε, config, ®, |
|
295 ); |
289 } |
296 } |
290 stats.pruned += prune_with_stats(&mut μ); |
297 stats.pruned += prune_with_stats(&mut μ); |
291 |
298 |
292 // Update step length parameters |
299 // Update step length parameters |
293 let ω = pdpsconfig.acceleration.accelerate(&mut τ, &mut σ, γ); |
300 let ω = pdpsconfig.acceleration.accelerate(&mut τ, &mut σ, γ); |