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
示例#2
0
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