def Mutacion1H(hijo,mask,E): Tam= [FG.metabounds[i]["size"] for i in range(0,FG.tam)] Sol=[] for i in range(len(mask)): if mask[i]==1: if Tam[i]==2: [Sol,cont,Eti]=FG.Caso2([],0,[]) #continue #Se obtiene el vector de nodays, la duracion el numero de dias [Nodays,Nohours,nt,np,dt,dp]=FG.ObtenerDatos(i) if Tam[i]==3: [Sol,cont,Eti]=FG.caso3([],0,[],i,np,nt,Nodays) #continue if Tam[i]==4: [Sol,cont,Eti]=FG.caso4([],0,[],Nodays,np,nt,i) #continue if Tam[i]==5: [Sol,cont,Eti]=FG.caso5([],0,[],Nodays,np,nt,i,dt,dp) #continue if Tam[i]==6: [Sol,cont,Eti]=FG.caso6([],0,[],Nodays,np,nt,i,dt,dp) k=0 for j in range(sum(Tam[0:i]),sum(Tam[0:i+1])): hijo[j]=Sol[k] k+=1 [E,hijo]=FG.FactG1(E,hijo) [E,hijo]=FG.FactG2(E,hijo) [E,hijo]=FG.FactG3(E,hijo) return hijo
def vecino(S,E,mask,porc): #mask=Mascara(FG.tam,porc) hijo=copy.deepcopy(S) #print "mask:",mask cont=0 for i in range(len(mask)): if mask[i]==1: Sol=[] if i==0: cont=0 else: cont=SumaT[i-1] #print "cont",cont if Tam[i]==2: [Sol,cont,Eti]=FG.Caso2([],cont,[]) #print i," ",Tam[i]," ",Sol #continue #Se obtiene el vector de nodays, la duracion el numero de dias [Nodays,Nohours,nt,np,dt,dp]=FG.ObtenerDatos(i) #Si es de tamanio 3 if Tam[i]==3: [Sol,cont,Eti]=FG.caso3([],cont,[],i,np,nt,Nodays) #print i," ",Tam[i]," ",Sol #continue #Si es de tamnio 4 if Tam[i]==4: [Sol,cont,Eti]=FG.caso4([],cont,[],Nodays,np,nt,i) #print i," ",Tam[i]," ",Sol #continue #Si el tamanio es de 5 if Tam[i]==5: #print "hijo: ",len(hijo) for kk in range(5): hijo.pop() [hijo,cont,Eti]=FG.caso5(hijo,cont,[],Nodays,np,nt,i,dt,dp) #print "hijo: ",len(hijo) #print i," ",Tam[i]," ",Sol if Tam[i]==6: [Sol,cont,Eti]=FG.caso6([],cont,[],Nodays,np,nt,i,dt,dp) #print i," ",Tam[i]," ",Sol if i==0 and Tam[i]!=5: hijo[0:SumaT[0]]=copy.deepcopy(Sol) else: if Tam[i]!=5: hijo[SumaT[i-1]:SumaT[i]]=copy.deepcopy(Sol) # for j in range(sum(Tam[0:i]),sum(Tam[0:i+1])): # hijo[j]=Sol[k] # k+=1 [E,hijo]=FG.FactG1(E,hijo) [E,hijo]=FG.FactG2(E,hijo) [E,hijo]=FG.FactG3(E,hijo) return hijo
def vecino(S,E,mask,porc): #mask=Mascara(FG.tam,porc) hijo=copy.deepcopy(S) for i in range(len(mask)): Sol=[] if mask[i]==1: if Tam[i]==2: [Sol,cont,Eti]=FG.Caso2([],0,[]) #continue #Se obtiene el vector de nodays, la duracion el numero de dias [Nodays,Nohours,nt,np,dt,dp]=FG.ObtenerDatos(i) #Si es de tamanio 3 if Tam[i]==3: [Sol,cont,Eti]=FG.caso3([],0,[],i,np,nt,Nodays) #continue #Si es de tamnio 4 if Tam[i]==4: [Sol,cont,Eti]=FG.caso4([],0,[],Nodays,np,nt,i) #continue #Si el tamanio es de 5 if Tam[i]==5: [Sol,cont,Eti]=FG.caso5([],0,[],Nodays,np,nt,i,dt,dp) if Tam[i]==6: [Sol,cont,Eti]=FG.caso6([],0,[],Nodays,np,nt,i,dt,dp) hijo[SumaT[i]:SumaT[i+1]]=Sol # for j in range(sum(Tam[0:i]),sum(Tam[0:i+1])): # hijo[j]=Sol[k] # k+=1 [E,hijo]=FG.FactG1(E,hijo) [E,hijo]=FG.FactG2(E,hijo) [E,hijo]=FG.FactG3(E,hijo) return hijo
def Mutacion1H(hijo,mask,E): Tam= [FG.metabounds[i]["size"] for i in range(0,FG.tam)] for i in range(len(mask)): #print i if mask[i]==1: if Tam[i]==2: [Sol,cont,Eti]=FG.Caso2([],0,[]) continue #Se obtiene el vector de nodays, la duracion el numero de dias [Nodays,Nohours,nt,np,dt,dp]=FG.ObtenerDatos(i) #Si es de tamanio 3 if Tam[i]==3: [Sol,cont,Eti]=FG.caso3([],0,[],i,np,nt,Nodays) continue #Si es de tamnio 4 if Tam[i]==4: [Sol,cont,Eti]=FG.caso4([],0,[],Nodays,np,nt,i) continue #Si el tamanio es de 5 if Tam[i]==5: [Sol,cont,Eti]=FG.caso5([],0,[],Nodays,np,nt,i,dt,dp) k=0 for j in range(sum(Tam[0:i-1]),sum(Tam[0:i])): hijo[j]=Sol[k] k+=1 [E,hijo]=FG.FactG1(E,hijo) #print "\n",S0 [E,hijo]=FG.FactG2(E,hijo) #print "\n",S0 [E,hijo]=FG.FactG3(E,hijo) #print "\n",S0 return hijo