def CostFactory2(self,pts,datapts,nparams): """generates a cost function instance from datapoints and evaluation points""" F = CF() F.addModel(self.ForwardFactory,self.__name__,nparams) self.__cost__ = F.getCostFunction(evalpts=pts,observations=datapts,sigma=self.__sigma__,metric=self.__metric__) return self.__cost__
def PolyCostFactory(evalpts,datapts,ndim): """generate a cost function instance from evaluation points and data""" from numpy import sum F = CostFactory() F.addModel(ForwardPolyFactory,ndim,"noisy_polynomial") return F.getCostFunction(evalpts=evalpts,observations=datapts, \ metric=lambda x: sum(x*x),sigma=1000.)
def CostFactory(self,target,pts): """generates a cost function instance from list of coefficients & evaluation points""" datapts = self.evaluate(target,pts) F = CF() F.addModel(self.ForwardFactory,len(target),self.__name__) self.__cost__ = F.getCostFunction(evalpts=pts,observations=datapts,sigma=sqrt(datapts),metric=self.__metric__) return self.__cost__
def CostFactory(self,target,pts): """generates a cost function instance from list of coefficients & evaluation points""" datapts = self.evaluate(target,pts) F = CF() F.addModel(self.ForwardFactory,self.__name__,len(target)) self.__cost__ = F.getCostFunction(evalpts=pts,observations=datapts,sigma=sqrt(datapts),metric=self.__metric__) return self.__cost__
def CostFactory2(self,pts,datapts,nparams): """generates a cost function instance from datapoints and evaluation points""" F = CF() F.addModel(self.ForwardFactory,nparams,self.__name__) self.__cost__ = F.getCostFunction(evalpts=pts,observations=datapts,sigma=self.__sigma__,metric=self.__metric__) return self.__cost__
solver.SetRandomInitialPoints(min=minrange, max=maxrange) solver.SetEvaluationLimits(generations=MAX_GENERATIONS) solver.SetGenerationMonitor(stepmon) solver.Solve(CF, termination = ChangeOverGeneration(generations=100), \ CrossProbability=0.5, ScalingFactor=0.5) solution = solver.Solution() return solution, stepmon if __name__ == '__main__': F = CostFactory() F.addModel(ForwardMogiFactory, 4, 'mogi1', outputFilter=component(2)) myCostFunction = F.getCostFunction(evalpts=stations, observations=data_z) print(F) rp = F.getRandomParams() print("new Cost Function : %s " % myCostFunction(rp)) print("orig Cost Function: %s " % cost_function(rp)) f1 = ForwardMogiFactory(rp) f2 = ForwardMogiFactory(rp) print('start cf') for i in range(3000): xx = cost_function(rp) print('end cf') print('start cf2') for i in range(3000):
from mystic.models.lorentzian import gendata, histogram npts = 4000; binwidth = 0.1 N = npts * binwidth xmin, xmax = 0.0, 3.0 pdf = F(target) # normalized print "pdf(1): ", pdf(1) data = gendata(target, xmin, xmax, npts) # data is 'unnormalized' #pylab.plot(data[1:N],0*data[1:N],'k.') #pylab.title('Samples drawn from density to be estimated.') #show() #pylab.clf() binsc, histo = histogram(data, binwidth, xmin,xmax) print "binsc: ", binsc print "count: ", histo print "ncount: ", histo/N print "exact : ", pdf(binsc) print "now with DE..." from mystic.forward_model import CostFactory CF = CostFactory() CF.addModel(F, 'lorentz', ND) myCF = CF.getCostFunction(binsc, histo/N) sol, steps = de_solve(myCF) plot_sol()(sol) #print "steps: ", steps.x, steps.y # end of file
maxrange = [1000., 1000., 100., 10.]; solver.SetRandomInitialPoints(min = minrange, max = maxrange) solver.SetEvaluationLimits(generations=MAX_GENERATIONS) solver.SetGenerationMonitor(stepmon) solver.Solve(CF, termination = ChangeOverGeneration(generations=100), \ CrossProbability=0.5, ScalingFactor=0.5) solution = solver.Solution() return solution, stepmon if __name__ == '__main__': F = CostFactory() F.addModel(ForwardMogiFactory, 'mogi1', 4, outputFilter = PickComponent(2)) myCostFunction = F.getCostFunction(evalpts = stations, observations = data_z) print F rp = F.getRandomParams() print "new Cost Function : %s " % myCostFunction(rp) print "orig Cost Function: %s " % cost_function(rp) f1 = ForwardMogiFactory(rp) f2 = ForwardMogiFactory(rp) print 'start cf' for i in range(3000): xx = cost_function(rp) print 'end cf' print 'start cf2' for i in range(3000):