Я использую генетический алгоритм для решения задачи о рюкзаке, и когда я хотел отладить, он говорит: объект int не подлежит подписке
он просто указал на эти 3 места в коде и в конце просто сказал, что это ошибка, а также дважды ссылался на первую ошибку в определении фитнеса
Я использую генетический алгоритм для решения задачи о рюкзаке, и когда я хотел отладить, он говорит: объект int не подлежит подписке он просто указал на эти 3 места в коде и в конце просто сказал, что это ошибка, а также дважды ссылался на первую ошибку в определении фитнеса [code] import random value = [20, 30, 40, 50, 90, 5, 250, 100] weight = [5, 10, 50, 25, 36, 71, 61, 48,] inventory = 100 popSize = 10 gens = 100 mutationRate = 0.1 numberOfItems = len(value)
def fitness(individual): ---> totalval = sum(value[i] for i in range(numberOfItems)if individual[i] == 1) totalW = sum(weight[i] for i in range(numberOfItems)if individual[i] == 1) if totalW > inventory : return 0 else : return totalval
def createItem() : return[random.randint(0,1) for i in range(numberOfItems)]
def createPop() : return[random.randint(0,1) for i in range(popSize)]
def mutation(individual) : for i in range(numberOfItems) : if random.random() < mutationRate: individual[i] = 1 - individual[i]
pop = createPop()
for i in range(gens) : newPop = [] for gens in range(popSize) : ---> parent1 = selection(pop) parent2 = selection(pop) child = crossover(parent1, parent2) mutation(child) newPop.append(child) pop = newPop
bestInd = max(pop, key=fitness) bestVal = fitness(bestInd) bestWei = sum(weight[i] for i in range(numberOfItems) if bestInd[i] == 1 )
print("Best solution is ", bestInd) print("total value is ", bestVal) print("total weight is ", bestWei) [/code] в чем проблема?