def _decorate_objective(self, cost, ExtraArgs=None): """decorate the cost function with bounds, penalties, monitors, etc input:: - cost is the objective function, of the form y = cost(x, *ExtraArgs), where x is a candidate solution, and ExtraArgs is the tuple of positional arguments required to evaluate the objective.""" #print("@%r %r %r" % (cost, ExtraArgs, max)) evalmon = self._evalmon raw = cost if ExtraArgs is None: ExtraArgs = () self._fcalls, cost = wrap_function(cost, ExtraArgs, evalmon) if self._useStrictRange: indx = list(self.popEnergy).index(self.bestEnergy) ngen = self.generations #XXX: no random if generations=0 ? for i in range(self.nPop): self.population[i] = self._clipGuessWithinRangeBoundary( self.population[i], (not ngen) or (i == indx)) cost = wrap_bounds(cost, self._strictMin, self._strictMax) #XXX: remove? from mystic.constraints import and_ constraints = and_(self._constraints, self._strictbounds, onfail=self._strictbounds) else: constraints = self._constraints cost = wrap_penalty(cost, self._penalty) cost = wrap_nested(cost, constraints) if self._reducer: #cost = reduced(*self._reducer)(cost) # was self._reducer = (f,bool) cost = reduced(self._reducer, arraylike=True)(cost) # hold on to the 'wrapped' and 'raw' cost function self._cost = (cost, raw, ExtraArgs) self._live = True return cost
def _decorate_objective(self, cost, ExtraArgs=None): """decorate the cost function with bounds, penalties, monitors, etc""" #print("@%r %r %r" % (cost, ExtraArgs, max)) evalmon = self._evalmon raw = cost if ExtraArgs is None: ExtraArgs = () self._fcalls, cost = wrap_function(cost, ExtraArgs, evalmon) if self._useStrictRange: if self.generations: #NOTE: pop[0] was best, may not be after resetting simplex for i, j in enumerate(self._setSimplexWithinRangeBoundary()): self.population[i + 1] = self.population[0].copy() self.population[i + 1][i] = j else: self.population[0] = self._clipGuessWithinRangeBoundary( self.population[0]) cost = wrap_bounds(cost, self._strictMin, self._strictMax) cost = wrap_penalty(cost, self._penalty) cost = wrap_nested(cost, self._constraints) if self._reducer: #cost = reduced(*self._reducer)(cost) # was self._reducer = (f,bool) cost = reduced(self._reducer, arraylike=True)(cost) # hold on to the 'wrapped' and 'raw' cost function self._cost = (cost, raw, ExtraArgs) self._live = True return cost
def _RegisterObjective(self, cost, ExtraArgs=None): """decorate cost function with bounds, penalties, monitors, etc""" if ExtraArgs == None: ExtraArgs = () self._fcalls, cost = wrap_function(cost, ExtraArgs, self._evalmon) if self._useStrictRange: for i in range(self.nPop): self.population[i] = self._clipGuessWithinRangeBoundary(self.population[i]) cost = wrap_bounds(cost, self._strictMin, self._strictMax) cost = wrap_penalty(cost, self._penalty) cost = wrap_nested(cost, self._constraints) # hold on to the 'wrapped' cost function self._cost = (cost, ExtraArgs) return cost
def _RegisterObjective(self, cost, ExtraArgs=None): """decorate cost function with bounds, penalties, monitors, etc""" if ExtraArgs == None: ExtraArgs = () self._fcalls, cost = wrap_function(cost, ExtraArgs, self._evalmon) if self._useStrictRange: for i in range(self.nPop): self.population[i] = self._clipGuessWithinRangeBoundary( self.population[i]) cost = wrap_bounds(cost, self._strictMin, self._strictMax) cost = wrap_penalty(cost, self._penalty) cost = wrap_nested(cost, self._constraints) # hold on to the 'wrapped' cost function self._cost = (cost, ExtraArgs) return cost
def _decorate_objective(self, cost, ExtraArgs=None): """decorate the cost function with bounds, penalties, monitors, etc""" #print ("@", cost, ExtraArgs, max) raw = cost if ExtraArgs is None: ExtraArgs = () self._fcalls, cost = wrap_function(cost, ExtraArgs, self._evalmon) if self._useStrictRange: indx = list(self.popEnergy).index(self.bestEnergy) ngen = self.generations #XXX: no random if generations=0 ? for i in range(self.nPop): self.population[i] = self._clipGuessWithinRangeBoundary(self.population[i], (not ngen) or (i is indx)) cost = wrap_bounds(cost, self._strictMin, self._strictMax) cost = wrap_penalty(cost, self._penalty) cost = wrap_nested(cost, self._constraints) if self._reducer: #cost = reduced(*self._reducer)(cost) # was self._reducer = (f,bool) cost = reduced(self._reducer, arraylike=True)(cost) # hold on to the 'wrapped' and 'raw' cost function self._cost = (cost, raw, ExtraArgs) self._live = True return cost
def _decorate_objective(self, cost, ExtraArgs=None): """decorate the cost function with bounds, penalties, monitors, etc input:: - cost is the objective function, of the form y = cost(x, *ExtraArgs), where x is a candidate solution, and ExtraArgs is the tuple of positional arguments required to evaluate the objective.""" #print("@%r %r %r" % (cost, ExtraArgs, max)) evalmon = self._evalmon raw = cost if ExtraArgs is None: ExtraArgs = () self._fcalls, cost = wrap_function(cost, ExtraArgs, evalmon) if self._useStrictRange: if self.generations: #NOTE: pop[0] was best, may not be after resetting simplex for i, j in enumerate(self._setSimplexWithinRangeBoundary()): self.population[i + 1] = self.population[0].copy() self.population[i + 1][i] = j else: self.population[0] = self._clipGuessWithinRangeBoundary( self.population[0]) cost = wrap_bounds(cost, self._strictMin, self._strictMax) #XXX: remove? from mystic.constraints import and_ constraints = and_(self._constraints, self._strictbounds, onfail=self._strictbounds) else: constraints = self._constraints cost = wrap_penalty(cost, self._penalty) cost = wrap_nested(cost, constraints) if self._reducer: #cost = reduced(*self._reducer)(cost) # was self._reducer = (f,bool) cost = reduced(self._reducer, arraylike=True)(cost) # hold on to the 'wrapped' and 'raw' cost function self._cost = (cost, raw, ExtraArgs) self._live = True return cost
def _decorate_objective(self, cost, ExtraArgs=None): """decorate the cost function with bounds, penalties, monitors, etc""" #print ("@", cost, ExtraArgs, max) raw = cost if ExtraArgs is None: ExtraArgs = () self._fcalls, cost = wrap_function(cost, ExtraArgs, self._evalmon) if self._useStrictRange: if self.generations: #NOTE: pop[0] was best, may not be after resetting simplex for i,j in enumerate(self._setSimplexWithinRangeBoundary()): self.population[i+1] = self.population[0].copy() self.population[i+1][i] = j else: self.population[0] = self._clipGuessWithinRangeBoundary(self.population[0]) cost = wrap_bounds(cost, self._strictMin, self._strictMax) cost = wrap_penalty(cost, self._penalty) cost = wrap_nested(cost, self._constraints) if self._reducer: #cost = reduced(*self._reducer)(cost) # was self._reducer = (f,bool) cost = reduced(self._reducer, arraylike=True)(cost) # hold on to the 'wrapped' and 'raw' cost function self._cost = (cost, raw, ExtraArgs) self._live = True return cost