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.)
minrange = [-1000., -1000., -100., -10.] 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, 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')