code: def optimize_with_repeates(self,fast=None,verbose=None,n_times=10,lambd=None,lambd_g=None,lambd_n=None):
          verbose = dlimix.getVerbose(verbose)
          if not self.init:       self._initGP(fast)
          opt_list = []
          fixed0 = sp.zeros_like(self.gp.getParams()['dataTerm'])
          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,lambd_g=lambd_g,lambd_n=lambd_n)
              if conv:
                  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)
          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