def update(self, *args, **kwargs): evaluations = kwargs['EVALUATIONS'] solutions = kwargs['SOLUTIONS'] if solutions: if self.figure is None: self.figure = StreamingPlot(reference_point=self.reference_point, reference_front=self.reference_front) self.figure.plot(solutions) if (evaluations % self.display_frequency) == 0: # check if reference point has changed reference_point = kwargs.get('REFERENCE_POINT', None) if reference_point: self.reference_point = reference_point self.figure.update(solutions, reference_point) else: self.figure.update(solutions) self.figure.ax.set_title('Eval: {}'.format(evaluations), fontsize=13)
class VisualizerObserver(Observer): def __init__(self, reference_front: List[S] = None, reference_point: list = None, display_frequency: int = 1) -> None: self.figure = None self.display_frequency = display_frequency self.reference_point = reference_point self.reference_front = reference_front def update(self, *args, **kwargs): evaluations = kwargs["EVALUATIONS"] solutions = kwargs["SOLUTIONS"] if solutions: if self.figure is None: self.figure = StreamingPlot( reference_point=self.reference_point, reference_front=self.reference_front) self.figure.plot(solutions) if (evaluations % self.display_frequency) == 0: # check if reference point has changed reference_point = kwargs.get("REFERENCE_POINT", None) if reference_point: self.reference_point = reference_point self.figure.update(solutions, reference_point) else: self.figure.update(solutions) self.figure.ax.set_title("Eval: {}".format(evaluations), fontsize=13)
def update(self, *args, **kwargs): evaluations = kwargs['EVALUATIONS'] solutions = kwargs['SOLUTIONS'] if solutions: if self.figure is None: axis_labels = None problem = kwargs['PROBLEM'] if problem and problem.obj_labels: axis_labels = problem.obj_labels self.figure = StreamingPlot( reference_point=self.reference_point, reference_front=self.reference_front, axis_labels=axis_labels) self.figure.plot(solutions) if (evaluations % self.display_frequency) == 0: # check if reference point has changed reference_point = kwargs.get('REFERENCE_POINT', None) # negative fitness values are converted to positive population = copy.copy(solutions) if self.non_dominated: population = non_dominated_population(population) for i in range(len(population)): obj = [abs(x) for x in population[i].objectives] population[i].objectives = obj if reference_point: self.reference_point = reference_point self.figure.update(population, reference_point) else: self.figure.update(population) self.figure.ax.set_title('Eval: {}'.format(evaluations), fontsize=13)