Beispiel #1
0
 def __call__(self,
              fcn,
              x0,
              xmin,
              xmax,
              tol=EPSILON,
              maxnfev=None,
              step=None,
              finalsimplex=[0, 1, 1],
              verbose=0):
     x0 = np.asarray(x0)
     n = len(x0)
     if step is None:
         step = abs(x0) + 1.2
     maxnfev = self.get_maxnfev(maxnfev, n)
     init = 0
     x0, fval, nfev, err = \
         _saoopt.neldermead(verbose, maxnfev, init, finalsimplex, tol, step,
                            xmin, xmax, x0, fcn)
     iquad = 1
     simp = 1.0e-2 * tol
     step = n * [0.4]
     self.par, self.fmin, tmpnfev, ifault = \
         _saoopt.minim(verbose, maxnfev - nfev, init, iquad, simp, tol*10,
                       step, xmin, xmax, x0, fcn)
     self.nfev = nfev + tmpnfev
     return self.nfev, self.fmin, self.par
Beispiel #2
0
 def test_mccormick(self):
     from sherpa.optmethods.opt import McCormick
     init = 0
     iquad = 1
     ftol = 1.0e-7
     simp = 1.0e-2 * ftol
     xmin = [-1.5, -3.0]
     xmax = [4.0, 4.0]
     x = np.asarray([0, 0])
     step = 0.4 * np.ones(x.shape, np.float_)
     x, fval, neval, ifalut = _saoopt.minim(0, 1000, init, iquad, simp,
                                            ftol, step, xmin, xmax, x,
                                            McCormick)
     fmin = -1.9132229549810362
     self.assertEqualWithinTol(fval, fmin, self.tolerance)
Beispiel #3
0
 def __call__(self,
              fcn,
              x0,
              xmin,
              xmax,
              tol=1.0e-6,
              maxnfev=None,
              step=None,
              finalsimplex=1,
              verbose=0):
     init = 0
     iquad = 1
     simp = 1.0e-2 * tol
     x0 = np.asarray(x0)
     n = len(x0)
     if step is None:
         step = n * [0.4]
     maxnfev = self.get_maxnfev(maxnfev, n)
     par, fmin, nfev, ifault = \
         _saoopt.minim(verbose, maxnfev, init, iquad, simp, tol*10,
                       step, xmin, xmax, x0, fcn)
     return nfev, fmin, par