SHARE
TWEET

Fase 3

jetsky0 Oct 8th, 2012 13 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/python
  2. #Adan Silva                                                                                                                                          
  3. import random
  4.  
  5. x=[]
  6. w=[]    #pesos
  7. wn=[]   #pesos nuevos
  8. wi=[]           #pesos nuevos insertados
  9. alpha = 0.05
  10. umbral = 0.5
  11. t = 0
  12. p = 0
  13. res = 0
  14. res2 = 0
  15. suma = 0
  16. mult = 0
  17. cont = 0
  18. i = 1
  19.  
  20.  
  21. def main():    
  22.                                                                                                                                      
  23.     global x,w,wn,wi,umbral
  24.  
  25. def inicio():
  26.  
  27.     for i in range(10):
  28.  
  29.         x.insert(i,random.uniform(0,1)) #generar cadena de entradas binarias aleatorias
  30.                                                                                                                            
  31.         w.insert(i,random.uniform(-1.0,1.0))    #generar cadenas de pesos random
  32.                                                                                                                                                                                                                            
  33.     x.append(-1)                        #agregar al vector de entradas un -1 al final
  34.     print '\nVector de elementos de entrada generado \n', x[:]
  35.                                                                                                        
  36.     w.append(umbral)                    #agregar al vector de pesos el umbral al final
  37.     print '\nVector de elementos de pesos generado \n', w[:]
  38.    
  39.     sumatoria()                         #brincar a la funcion sumatoria
  40.  
  41. def sumatoria():
  42.    
  43.     global suma
  44.     suma=0
  45.     res=0
  46.    
  47.     res = x[i] * w[i]                   #sumatoria del producto de elementos de entrada por elmentos del peso
  48.                                                                                                        
  49.     suma = suma + res                   #actualizar sumatoria
  50.                                                                                                          
  51.     #t = raw_input("\nSalida Esperada (0 o 1): ")       #pedir al usuario salida esperada
  52.     t = random.randint(0,1)             #generar solucion esperada aleatoria entre 0 y 1
  53.     #t = int(t)
  54.     print '\nLa salida aleatoria deseada es ', t
  55.                                                                                                  
  56.     print '\nLa sumatoria de productos de entradas por pesos es:', suma #imprimir la sumatoria total del producto de entradas por pesos
  57.     print '\nEl umbral es igual a: ', umbral
  58.    
  59.     comparacion(t)                      #brincar a la funcion comparacion
  60.    
  61.     return t
  62.  
  63. def comparacion(t):
  64.    
  65.     global cont
  66.                                                                                                                        
  67.     if(suma>=umbral):   #comparar suma con el umbral
  68.                                                                                    
  69.         p=1             #suma mayor o igual a 1, salida obtenida = 1
  70.         print '\nLa salida obtenida = 1'
  71.    
  72.     else:
  73.                                                                    
  74.         p=0             #de lo contrario, salida obtenida = 0
  75.         print '\nLa salida obtenida = 0'
  76.  
  77.    
  78.    
  79.     i=1
  80.     if(t!=p):           #si la salida esperada difiere de la salida producida, se realiza un cambio en el vector de pesos
  81.         wn[:]=[]
  82.  
  83.         for i in range(11):
  84.            
  85.             mult = alpha*(t-p)*x[i]     #agregamos la tasa de aprendizaje alpha para modificar los pesos
  86.             wi.insert(i,w[i] + mult)
  87.             wn.insert(i,wi[i])          #agregamos a un vector nuevo los nuevos pesos
  88.         wn.append(umbral)               #agregamos el umbral al final del vector de pesos nuevo
  89.         w[:]=[]
  90.         for i in range(11):
  91.             w.insert(i,wn[i])
  92.          
  93.         print '\nVector de elementos de pesos nuevos generado es \n', wn[:]     #imprimimos el vector nuevo de pesos
  94.         sumatoria()     #brincamos a la funcion sumatoria para volver a hacer calculas
  95.          
  96.     return w[:]
  97.        
  98.      
  99. def main():
  100.     #for n in range (10):        
  101.         inicio()       
  102.  
  103. main()
RAW Paste Data
Top