Advertisement
LukacikPavel

Untitled

Oct 7th, 2020
1,837
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.68 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sun Oct  4 14:25:03 2020
  4.  
  5. @author: admin
  6. """
  7. import copy, numpy as np
  8.  
  9. #nasa funkcia signum
  10. def signum(number):
  11.   if number >= 0:
  12.       return 1
  13.   else:
  14.       return 0
  15.  
  16. #zadefinovanie architektury neuromatu
  17. n = 5                           #pocet neuronov
  18. typy = [1,1,1,0,0]              #typy danych neuronov
  19.  
  20. #matica susednosti
  21. hrany = [[0,0,0,0,0,0,1,0],
  22.          [0,0,1,0,0,0,0,0],
  23.          [0,1,0,1,0,0,1,0],
  24.          [0,0,0,0,1,0,0,0],
  25.          [0,0,0,1,0,0,1,0],
  26.          [1,1,1,1,1,0,0,0],
  27.          [0,0,0,0,0,0,0,0],
  28.          [1,1,0,1,0,0,1,0]]
  29.  
  30. vstupny = n                     #index vstupneho neuronu
  31. vystupny = n + 1                #index vystupneho neuronu
  32. startovaci = n + 2              #index startovacieho neuronu
  33.  
  34. #pociatocne stavy neuronov - 1 aktivny, 0 neaktivny
  35. #na zaciatok je aktivny len startovaci
  36. pocStavy = [0,0,0,0,0,0,0,1]  
  37.  
  38. #vypocet d(i) - pocty vstupov do neuronu i
  39. d = [0 for i in range(n+3)];    #inicializovanie nuloveho vektora velkosti n+3
  40.    
  41. for i in range(len(d)):
  42.     for j in range(len(hrany)):
  43.         d[i] += hrany[j][i]
  44.  
  45. print('d(i) - pocty vstupov do neuronu i')
  46. print(d)
  47.  
  48. #priradenie prahov
  49. prahy = [0 for i in range(n+3)] #inicializovanie nuloveho vektora velkosti n+3
  50.  
  51. for i in range(len(typy)):
  52.     if typy[i] == 1:
  53.         prahy[i] = d[i] + 1
  54.     else:
  55.         prahy[i] = 1
  56.  
  57. prahy[vystupny] = 1
  58. prahy[startovaci] = 1
  59.  
  60. print('\nprahy:')
  61. print(prahy)
  62.  
  63. #priradenie vah
  64. vahy = copy.deepcopy(hrany);    #vytvorenie kopie matice susednosti
  65.  
  66. for i in range(len(typy)):
  67.     if typy[i] == 1:
  68.         vahy[vstupny][i] = d[i]
  69.     else:
  70.         vahy[vstupny][i] = - d[i]
  71.  
  72. print('\nvahy:')
  73. print(np.matrix(vahy))          #vypisanie matice pomocou kniznice numpy
  74.  
  75. #vypocet
  76. def vypocet(vstup):
  77.     stavy = [pocStavy]  #v premennej stavy ukladame stavy pocas celeho vypoctu
  78.    
  79.     retazec = vstup + '0'   #pridanie e3te jedneho znaku za
  80.                             #vstup pre ziskanie vysledku po spracovani povodneho vstupu
  81.    
  82.     for h in range(len(retazec)):
  83.         stavy.append([0 for i in range(len(pocStavy))])
  84.         stavy[h][vstupny] = int(retazec[h])
  85.        
  86.         for i in range(len(stavy[h])):
  87.             ciastocVypocet = 0
  88.             for j in range(len(vahy)):
  89.                 ciastocVypocet += stavy[h][j]*vahy[j][i]
  90.             ciastocVypocet -= prahy[i]
  91.             stavy[h+1][i] = signum(ciastocVypocet)
  92.    
  93.     print('\nvypocet na vstupe ' + vstup + ':')
  94.     print(np.matrix(stavy))
  95.     return stavy[len(retazec)][vystupny]
  96.  
  97. #volanie funkcie vypocet na zvolenom vstupe a vypisanie vysledku
  98. print('\nvysledok:' + ' ' + str(vypocet('111')))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement