예제 #1
0
    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)
예제 #2
0
파일: observer.py 프로젝트: jMetal/jMetalPy
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)
예제 #3
0
파일: observers.py 프로젝트: pg42862/mewpy
    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)