File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -299,13 +299,15 @@ where
299299 ) -> GenerationSummary < E :: Metrics > {
300300 let mut total = 0.0 ;
301301 let mut count = 0usize ;
302- let mut best_fitness = f64:: NEG_INFINITY ;
303- let mut best_metrics = None ;
302+ let mut best: Option < & Individual < G , E :: Metrics > > = None ;
304303
305304 for individual in population {
306- if individual. fitness > best_fitness {
307- best_fitness = individual. fitness ;
308- best_metrics = individual. metrics . clone ( ) ;
305+ if best
306+ . as_ref ( )
307+ . map ( |current| individual. fitness > current. fitness )
308+ . unwrap_or ( true )
309+ {
310+ best = Some ( individual) ;
309311 }
310312
311313 if individual. fitness . is_finite ( ) {
@@ -320,11 +322,16 @@ where
320322 f64:: NEG_INFINITY
321323 } ;
322324
325+ let best = best. expect ( "population must contain at least one individual" ) ;
326+
323327 GenerationSummary {
324328 index,
325- best_fitness,
329+ best_fitness : best . fitness ,
326330 average_fitness : average,
327- best_metrics : best_metrics. expect ( "metrics must exist after evaluation" ) ,
331+ best_metrics : best
332+ . metrics
333+ . clone ( )
334+ . expect ( "metrics must exist after evaluation" ) ,
328335 }
329336 }
330337}
You can’t perform that action at this time.
0 commit comments