Я хочу исправить ошибку «объект int не подлежит подписке».Python

Программы на Python
Ответить
Anonymous
 Я хочу исправить ошибку «объект int не подлежит подписке».

Сообщение Anonymous »

Я использую генетический алгоритм для решения задачи о рюкзаке, и когда я хотел отладить, он говорит: объект int не подлежит подписке
он ​​просто указал на эти 3 места в коде и в конце просто сказал, что это ошибка, а также дважды ссылался на первую ошибку в определении фитнеса

Код: Выделить всё

 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 selection(pop) :
players = random.sample(pop, 3)
--->  players.sort(key = fitness, reverse=True)
return players[0]

def crossover(parent1, parent2) :
point = random.randint(0, numberOfItems-1)
child = parent1[:point] + parent2[point:]
return child

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)
в чем проблема?

Подробнее здесь: https://stackoverflow.com/questions/798 ... able-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»