我如何修复回溯(最近一次通话最近):

时间:2020-07-01 01:00:21

标签: python

您好,我尝试解决此问题,但无法 这是我的代码:

import random

Cromosomas=[[random.randint(1, 1010) for i in range(3)] for j in range(800)]
Z=[]
Fitness=[]
P=[]
C=[]
Padres=[]

def funcOb(Arreglo):
    return 0.2*Arreglo[0]**2+0.08*Arreglo[1]**2+0.18*Arreglo[2]**2+0.1*(Arreglo[0]*Arreglo[1])+0.04*(Arreglo[0]*Arreglo[2])+0.06*(Arreglo[1]*Arreglo[2])-0.14*Arreglo[0]-0.11*Arreglo[1]-0.1*Arreglo[2]+120+abs(Arreglo[0]+Arreglo[1]+Arreglo[2]-1000)-10

for i in range(0,800):
    Z.append(funcOb(Cromosomas[i]))
for i in range(0,800):
    Fitness.append(1/(1+Z[i]))
total=sum(Fitness)

for i in range(0,800):
    P.append(Fitness[i]/total);
A=0
for i in P:
    A=A+i
    C.append(A)    
    
R=[random.random()for i in range(800)]
for i in range(0,800):
    for j in range(0,800):
    if R[i]<=C[j]:
        Cromosomas[i]=Cromosomas[j]
        break
def mutar(Arreglo1,Arreglo2):
    b=random.randint(0, 2)
    if Arreglo1[b]<=Arreglo2[b]:
    Arreglo2[b]=Arreglo1[b]
    return Arreglo2
    if Arreglo1[b]>=Arreglo2[b]:
    Arreglo1[b]=Arreglo2[b]
    return Arreglo1

for i in range(0,800):
    r=random.random()
    if r<(0.3):
    n=Cromosomas[i]
    if n not in Padres:
        Padres.append(n)
    r=0     

for i in range(0,len(Padres)-1):
    if len(Padres)==1:
    Cromosomas[i]=[Padres[i][0],Padres[i][1],Padres[i][2]] 
    else:
    lista=mutar(Padres[i],Padres[i+1])
    Cromosomas[i]=[lista[0],lista[1],lista[2]]
    
for i in range(0,480):
    Cromosomas[Cromosomas==random.randint(1, 2400)]=random.randint(1, 800)      

for m in range(0,800):
    print(funcOb(Cromosomas[m]))

错误:

Traceback (most recent call last):
    File "main.py", line 59, in <module>
    print(funcOb(Cromosomas[m]))  
    File "main.py", line 10, in funcOb
    return 0.2*Arreglo[0]**2+0.08*Arreglo[1]**2+0.18*Arreglo[2]
**2+0.1*(Arreglo[0]*Arreglo[1])+0.04*(Arreglo[0]*Arreglo[2])+0.
06*(Arreglo[1]*Arreglo[2])-0.14*Arreglo[0]-0.11*Arreglo[1]-0.1*
Arreglo[2]+120+abs(Arreglo[0]+Arreglo[1]+Arreglo[2]-1000)-10
TypeError: 'int' object has no attribute '__getitem__'

当我尝试运行代码的最后一个函数并且不知道为什么最后调用的函数已经是我已经使用过的函数并且没有给我带来问题时,也会发生此错误我尝试其他方法,例如定义另一个函数,出现相同的错误。 感谢您的帮助

0 个答案:

没有答案