Объект «numpy.ndarray» не имеет атрибута «пригодность»

У меня есть этот код для nsga3 (эволюционный алгоритм), но я получаю сообщение об ошибке «numpy.ndarray», объект не имеет атрибута «пригодность». Создает контрольные точки для выбора NSGA-III. Этот код основан наjMetal NSGA-III implementation <https://github.com/jMetal/jMetal>_. Помогите убрать эту ошибку

import copy
import random
import numpy as np
from deap import tools


class ReferencePoint(list):   # A reference point exists in objective space an has a set of individuals associated with it

    def __init__(self, *args):
        list.__init__(self, *args)
        self.associations_count = 0
        self.associations = []



def generate_reference_points(num_objs, num_divisions_per_obj):

    def gen_refs_recursive(work_point, num_objs, left, total, depth):
        if depth == num_objs - 1:
            work_point[depth] = left/total
            ref = ReferencePoint(copy.deepcopy(work_point))
            return [ref]
        else:
            res = []
            for i in range(left):
                work_point[depth] = i/total
                res = res + gen_refs_recursive(work_point, num_objs, left-i, total, depth+1)
            return res
    print(gen_refs_recursive([0]*num_objs, num_objs, num_objs*num_divisions_per_obj,
                              num_objs*num_divisions_per_obj, 0))



def find_ideal_point(individuals):
    'Finds the ideal point from a set individuals.'
    current_ideal = [np.infty] * len(individuals[0].fitness.values)  # Here th error is coming 
    for ind in individuals:
        # Use wvalues to accomodate for maximization and minimization problems.
        current_ideal = np.minimum(current_ideal,
                                   np.multiply(ind.fitness.wvalues, -1))
    print("Ideal POint is\n",current_ideal)




global individulas
individulas=np.random.rand(10,4)
generate_reference_points(2, 4)
find_ideal_point(individulas)

person Shivam Sharma    schedule 19.06.2018    source источник


Ответы (1)


Вы можете проверить, как подготовить ввод для find_ideal_point, в этот блокнот Jupyter. Реализация работает с записями из deap.tools.Logbook, которые это «эволюционные записи как хронологический список словарей», а не массивы NumPy.

person Sasha Tsukanov    schedule 19.06.2018