Changeset 462


Ignore:
Timestamp:
06/21/11 12:12:23 (5 years ago)
Author:
mmckerns
Message:

extended solver interface to include solver.evaluations (ticket #138)

Location:
mystic
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • mystic/examples/test_rosenbrock.py

    r219 r462  
    3636 
    3737    solution = solver.Solution() 
     38   #print "Current function value: %s" % solver.bestEnergy 
     39   #print "Iterations: %s" % solver.generations 
     40   #print "Function evaluations: %s" % solver.evaluations 
    3841   
    3942    print solution 
     
    8285    sol = solver.Solution() 
    8386    print sol 
     87   #print "Current function value: %s" % solver.bestEnergy 
     88   #print "Iterations: %s" % solver.generations 
     89   #print "Function evaluations: %s" % solver.evaluations 
    8490  
    8591    times.append(time.time() - start) 
  • mystic/examples/test_rosenbrock2.py

    r422 r462  
    3939    solver.Solve(rosen,termination=CRT(xtol=4e-5),StepMonitor=stepmon,disp=1) 
    4040    print solver.Solution() 
     41   #print "Current function value: %s" % solver.bestEnergy 
     42   #print "Iterations: %s" % solver.generations 
     43   #print "Function evaluations: %s" % solver.evaluations 
    4144 
    4245    times.append(time.time() - start) 
  • mystic/examples/test_rosenbrock3.py

    r454 r462  
    4343    solver.Solve(rosen,termination=NCOG(tolerance=1e-4),StepMonitor=stepmon,disp=1, constraints=constrain) 
    4444    print solver.Solution() 
     45   #print "Current function value: %s" % solver.bestEnergy 
     46   #print "Iterations: %s" % solver.generations 
     47   #print "Function evaluations: %s" % solver.evaluations 
    4548 
    4649    times.append(time.time() - start) 
  • mystic/mystic/abstract_map_solver.py

    r456 r462  
    9393    nDim, nPop     = dim, npop 
    9494    generations    - an iteration counter. 
     95    evaluations    - an evaluation counter. 
    9596    bestEnergy     - current best energy. 
    9697    bestSolution   - current best parameter set.           [size = dim] 
  • mystic/mystic/abstract_nested_solver.py

    r296 r462  
    9999    nDim, nPop     = dim, npop 
    100100    generations    - an iteration counter. 
     101    evaluations    - an evaluation counter. 
    101102    bestEnergy     - current best energy. 
    102103    bestSolution   - current best parameter set.            [size = dim] 
  • mystic/mystic/abstract_solver.py

    r440 r462  
    9696    nDim, nPop     = dim, npop 
    9797    generations    - an iteration counter. 
     98    evaluations    - an evaluation counter. 
    9899    bestEnergy     - current best energy. 
    99100    bestSolution   - current best parameter set.            [size = dim] 
     
    106107        if kwds.has_key('npop'): NP = kwds['npop'] 
    107108 
     109        self._fcalls          = [0] 
    108110        self.nDim             = dim 
    109111        self.nPop             = NP 
     
    136138        """return the best solution""" 
    137139        return self.bestSolution 
     140 
     141    def __evaluations(self): 
     142        """get the number of function calls""" 
     143        return self._fcalls[0] 
    138144 
    139145    def SetStrictRanges(self, min=None, max=None): 
     
    321327        raise NotImplementedError, "must be overwritten..." 
    322328 
     329    # extensions to the solver interface 
     330    evaluations = property(__evaluations ) 
     331    pass 
     332 
    323333 
    324334 
  • mystic/mystic/differential_evolution.py

    r456 r462  
    245245        self._EARLYEXIT = False 
    246246 
    247         fcalls, costfunction = wrap_function(costfunction, ExtraArgs, EvaluationMonitor) 
     247        self._fcalls, costfunction = wrap_function(costfunction, ExtraArgs, EvaluationMonitor) 
    248248        if self._useStrictRange: 
    249249            for i in range(self.nPop): 
     
    291291        #run for generations <= maxiter 
    292292        for generation in range(self._maxiter - self.generations): 
    293             if fcalls[0] >= self._maxfun: break 
     293            if self._fcalls[0] >= self._maxfun: break 
    294294            for candidate in range(self.nPop): 
    295295                # generate trialSolution (within valid range) 
     
    323323        warnflag = 0 
    324324 
    325         if fcalls[0] >= self._maxfun: 
     325        if self._fcalls[0] >= self._maxfun: 
    326326            warnflag = 1 
    327327            if disp: 
     
    337337                print "         Current function value: %f" % fval 
    338338                print "         Iterations: %d" % self.generations 
    339                 print "         Function evaluations: %d" % fcalls[0] 
     339                print "         Function evaluations: %d" % self._fcalls[0] 
    340340 
    341341        return  
     
    442442        from python_map import python_map 
    443443        if self._map != python_map: 
    444             fcalls = [0] #FIXME: temporary patch for removing the following line 
     444            self._fcalls = [0] #FIXME: temporary patch for removing the following line 
    445445        else: 
    446             fcalls, costfunction = wrap_function(costfunction, ExtraArgs, EvaluationMonitor) 
     446            self._fcalls, costfunction = wrap_function(costfunction, ExtraArgs, EvaluationMonitor) 
    447447        if self._useStrictRange: 
    448448            for i in range(self.nPop): 
     
    502502        #run for generations <= maxiter 
    503503        for generation in range(self._maxiter - self.generations): 
    504             if fcalls[0] >= self._maxfun: break 
     504            if self._fcalls[0] >= self._maxfun: break 
    505505            for candidate in range(self.nPop): 
    506506                # generate trialSolution (within valid range) 
     
    546546        warnflag = 0 
    547547 
    548         if fcalls[0] >= self._maxfun: 
     548        if self._fcalls[0] >= self._maxfun: 
    549549            warnflag = 1 
    550550            if disp: 
     
    560560                print "         Current function value: %f" % fval 
    561561                print "         Iterations: %d" % self.generations 
    562                 print "         Function evaluations: %d" % fcalls[0] 
     562                print "         Function evaluations: %d" % self._fcalls[0] 
    563563 
    564564        return  
  • mystic/mystic/scipy_optimize.py

    r455 r462  
    177177        self._EARLYEXIT = False 
    178178 
    179         fcalls, func = wrap_function(func, args, EvaluationMonitor) 
     179        self._fcalls, func = wrap_function(func, args, EvaluationMonitor) 
    180180        if self._useStrictRange: 
    181181            x0 = self._clipGuessWithinRangeBoundary(x0) 
     
    239239        iterations = 1 
    240240 
    241         while (fcalls[0] < self._maxfun and iterations < self._maxiter): 
     241        while (self._fcalls[0] < self._maxfun and iterations < self._maxiter): 
    242242            if self._EARLYEXIT or termination(self): 
    243243                break 
     
    316316        warnflag = 0 
    317317 
    318         if fcalls[0] >= self._maxfun: 
     318        if self._fcalls[0] >= self._maxfun: 
    319319            warnflag = 1 
    320320            if disp: 
     
    330330                print "         Current function value: %f" % fval 
    331331                print "         Iterations: %d" % iterations 
    332                 print "         Function evaluations: %d" % fcalls[0] 
     332                print "         Function evaluations: %d" % self._fcalls[0] 
    333333 
    334334 
    335335        if full_output: 
    336             retlist = x, fval, iterations, fcalls[0], warnflag 
     336            retlist = x, fval, iterations, self._fcalls[0], warnflag 
    337337            if retall: 
    338338                retlist += (allvecs,) 
     
    515515        self._EARLYEXIT = False 
    516516 
    517         fcalls, func = wrap_function(func, args, EvaluationMonitor) 
     517        self._fcalls, func = wrap_function(func, args, EvaluationMonitor) 
    518518        if self._useStrictRange: 
    519519            x0 = self._clipGuessWithinRangeBoundary(x0) 
     
    584584            self.energy_history.append(fval) #XXX: the 'best' for now... 
    585585            if self._EARLYEXIT or termination(self): CONTINUE = False #break 
    586             elif fcalls[0] >= self._maxfun: CONTINUE = False #break 
     586            elif self._fcalls[0] >= self._maxfun: CONTINUE = False #break 
    587587            elif iter >= self._maxiter: CONTINUE = False #break 
    588588 
     
    621621        warnflag = 0 
    622622 
    623         if fcalls[0] >= self._maxfun: 
     623        if self._fcalls[0] >= self._maxfun: 
    624624            warnflag = 1 
    625625            if disp: 
     
    635635                print "         Current function value: %f" % fval 
    636636                print "         Iterations: %d" % iter 
    637                 print "         Function evaluations: %d" % fcalls[0] 
     637                print "         Function evaluations: %d" % self._fcalls[0] 
    638638     
    639639        x = squeeze(x) 
    640640 
    641641        if full_output: 
    642             retlist = x, fval, direc, iter, fcalls[0], warnflag 
     642            retlist = x, fval, direc, iter, self._fcalls[0], warnflag 
    643643            if retall: 
    644644                retlist += (allvecs,) 
Note: See TracChangeset for help on using the changeset viewer.