| 204 if config.fitness_merging { |
204 if config.fitness_merging { |
| 205 if let Some(f) = fitness { |
205 if let Some(f) = fitness { |
| 206 return μ.merge_spikes_fitness(config.merging, f, |&v| v).1; |
206 return μ.merge_spikes_fitness(config.merging, f, |&v| v).1; |
| 207 } |
207 } |
| 208 } |
208 } |
| 209 μ.merge_spikes(config.merging, |μ_candidate| { |
209 μ.merge_spikes(config.merging, |μ_candidate, is_scaling| { |
| 210 let mut d = &*τv + self.preapply(μ_candidate.sub_matching(μ_base)); |
210 if is_scaling { |
| 211 reg.verify_merge_candidate(&mut d, μ_candidate, τ, ε, config) |
211 // Scaling heuristic is pointless without fitness-based merging |
| |
212 false |
| |
213 } else { |
| |
214 let mut d = &*τv + self.preapply(μ_candidate.sub_matching(μ_base)); |
| |
215 reg.verify_merge_candidate(&mut d, μ_candidate, τ, ε, config) |
| |
216 } |
| 212 }) |
217 }) |
| 213 } |
218 } |
| 214 } |
219 } |
| 215 |
220 |
| 216 #[replace_float_literals(F::cast_from(literal))] |
221 #[replace_float_literals(F::cast_from(literal))] |