docs: def findLocalOptima(self,fast=False,verbose=True,n_times=10,lambd=None):
          """
          Train the model repeadly up to a number specified by the users with random restarts and
          return a list of all relative minima that have been found 
          
          Args:
              fast:       Boolean. if set to True initalize kronSumGP
              verbose:    Boolean. If set to True, verbose output is produced. (default True)
              n_times:    number of re-starts of the optimization. (default 10)
          """
          if not self.init:       self.initGP(fast)
          
          opt_list = []
  
          fixed0 = SP.zeros_like(self.gp.getParams()['dataTerm'])    
  
          # minimises n_times
          for i in range(n_times):
              
              scales1 = self._getScalesRand()
              fixed1  = 1e-1*SP.randn(fixed0.shape[0],fixed0.shape[1])
              conv = self.trainGP(fast=fast,scales0=scales1,fixed0=fixed1,lambd=lambd)
  
              if conv:
                  # compare with previous minima
                  temp=1
                  for j in range(len(opt_list)):
                      if SP.allclose(abs(self.getScales()),abs(opt_list[j]['scales'])):
                          temp=0
                          opt_list[j]['counter']+=1
                          break
                  if temp==1:
                      opt = {}
                      opt['counter'] = 1
                      opt['LML'] = self.getLML()
                      opt['scales'] = self.getScales()
                      opt_list.append(opt)
          
          
          # sort by LML
          LML = SP.array([opt_list[i]['LML'] for i in range(len(opt_list))])
          index   = LML.argsort()[::-1]
          out = []
          if verbose:
              print("\nLocal mimima\n")
              print("n_times\t\tLML")
              print("------------------------------------")
              for i in range(len(opt_list)):
                  out.append(opt_list[index[i]])
                  if verbose:
                      print(("%d\t\t%f" % (opt_list[index[i]]['counter'], opt_list[index[i]]['LML'])))
                  print("")
  
          return out