def is_behavior_learning_done(self):
"""Check if the optimization is finished.
Returns
-------
finished : bool
Is the learning of a behavior finished?
"""
if self.it <= self.n_samples_per_update:
return False
if not np.all(np.isfinite(self.fitness)):
return True
# Check for invalid values
if not (np.all(np.isfinite(self.invsqrtC)) and
np.all(np.isfinite(self.cov)) and
np.all(np.isfinite(self.mean)) and
np.isfinite(self.var)):
self.logger.info("Stopping: infs or nans" % self.var)
return True
if (self.min_variance is not None and
np.max(np.diag(self.cov)) * self.var <= self.min_variance):
self.logger.info("Stopping: %g < min_variance" % self.var)
return True
max_dist = np.max(pdist(self.fitness[:, np.newaxis]))
if max_dist < self.min_fitness_dist:
self.logger.info("Stopping: %g < min_fitness_dist" % max_dist)
return True
cov_diag = np.diag(self.cov)
if (self.max_condition is not None and
np.max(cov_diag) > self.max_condition * np.min(cov_diag)):
self.logger.info("Stopping: %g / %g > max_condition"
% (np.max(self.cov), np.min(self.cov)))
return True
return False
评论列表
文章目录