code: def update_weights(self, x, y):
          
          m     = self._inputSize
          n     = self._outputSize
          W     = self._W
          Q     = self._Q
          t     = self._t
          alpha = self._alpha
          beta  = self._beta
          gamma = self._gamma
          p     = self._p
  
          for i in range(n):
              for j in range(n):
                  Delta_W  = - alpha * ( y[i] * y[j] - p*p )
                  W[i,j]  += Delta_W
  
                  if i==j or W[i,j] > 0:
                      W[i,j] = 0.
  
  
          for i in range(n):
              for j in range(m):
                  Delta_Q  = beta * y[i] * ( x[j] - Q[i,j] )
                  Q[i,j]  += Delta_Q
  
  
  
          for i in range(n):
              Delta_t  = gamma * ( y[i] - p )
              t[i]    += Delta_t
docs: Weight updates as described in the Földiák's paper.