docs: def f(self, m):
          ''' Function to minimize '''
          M = reshape(m,self.input_dim)
          n = M.shape[0]
          if M.shape[1] != self.input_dim:
              return 'Wrong input dimension'
          else:
              S = self.environment.update(M)
              m = M[0]
              s = S[0]
              # Store the points (m,s) explored during the optimisation
              self.pointsList.append((m,s))
              return self.dist_array(S)