def objectivefunction(self, simulation, evaluation): if self.used_algorithm == 'sceua' or self.used_algorithm == 'abc' or self.used_algorithm == 'fscabc': objectivefunction = rmse(evaluation=evaluation, simulation=simulation) elif self.used_algorithm == 'dream' or self.used_algorithm == 'demcz' or self.used_algorithm == 'mcmc': objectivefunction = log_p(evaluation=evaluation, simulation=simulation) else: objectivefunction = - rmse(evaluation=evaluation, simulation=simulation) return objectivefunction
def objectivefunction(self, simulation, evaluation, params): if self.objfunc is None: return -1 * rmse(evaluation, simulation) else: pars, names = params return self.objfunc(pars)
def objectivefunction( self, simulation: Union[list, np.array], evaluation: Union[list, np.array], params=None, ) -> float: """ A user defined objective function to calculate fitness. Parameters ---------- simulation: simulation results evaluation: evaluation results params: parameters leading to the simulation Returns ------- float likelihood """ # SPOTPY expects to get one or multiple values back, # that define the performance of the model run if not self.obj_func: # This is used if not overwritten by user like = rmse(evaluation, simulation) else: # Way to ensure flexible spot setup class like = self.obj_func(evaluation, simulation) return like
def objectivefunction(self,simulation,evaluation, params=None): #SPOTPY expects to get one or multiple values back, #that define the performence of the model run if not self.obj_func: # This is used if not overwritten by user like = rmse(evaluation,simulation) else: #Way to ensure flexible spot setup class like = self.obj_func(evaluation,simulation) return like
def objectivefunction(self, simulation, evaluation, params=None): # SPOTPY expects to get one or multiple values back, # that define the performance of the model run if not self.obj_func: eval = np.delete(evaluation.SC_median.values, np.argwhere(np.isnan(simulation))) sim = simulation[~np.isnan(simulation)] like = -rmse( eval, sim ) #set minus before rmse if trying to maximize, depends on algorithm print("RMSE is: ", like) else: # Way to ensure flexible spot setup class like = self.obj_func(evaluation.SC_median.values, simulation.Med_TSL.values) return like
def objectivefunction(self, simulation, evaluation): evaluation_input = np.array([]) # Get rid of the impact of NULL values in the evaluation data for index in range(0, len(simulation)): if not evaluation[index]: evaluation_input = np.append(evaluation_input, simulation[index]) else: evaluation_input = np.append(evaluation_input, evaluation[index]) # Generates a minimum objective value of the output objective_function = -rmse(evaluation=evaluation_input, simulation=simulation) print("Objective Value: {}".format(objective_function)) return objective_function
def objectivefunction(self, simulation, evaluation, params=None): objectivefunction = -rmse(evaluation=evaluation, simulation=simulation) return objectivefunction
def objectivefunction(self, simulation, evaluation): objectivefunction = rmse(evaluation=evaluation, simulation=simulation) return objectivefunction
return {'obs': pend_obs, 'sim': pend_sim, 'correcta': (pend_obs > 0) is (pend_sim > 0)} algs_spotpy = { 'fast': spotpy.algorithms.fast, 'dream': spotpy.algorithms.dream, 'cm': spotpy.algorithms.mc, 'cmmc': spotpy.algorithms.mcmc, 'epm': spotpy.algorithms.mle, 'mhl': spotpy.algorithms.lhs, 'as': spotpy.algorithms.sa, 'sceua': spotpy.algorithms.sceua, 'erop': spotpy.algorithms.rope, 'caa': spotpy.algorithms.abc, 'fscabc': spotpy.algorithms.fscabc, 'bdd': spotpy.algorithms.dds } eval_funcs = { 'ens': lambda o, s, f: spt_f.nashsutcliffe(o, s), 'rcep': lambda o, s, f: -spt_f.rmse(o, s), 'corresp': lambda o, s, f: spt_f.agreementindex(o, s), 'ekg': lambda o, s, f: spt_f.kge(o, s), 'r2': lambda o, s, f: spt_f.rsquared(o, s), 'rcnep': lambda o, s, f: -spt_f.rrmse(o, s), 'log p': lambda o, s, f: spt_f.log_p(o, s), 'verosimil_gaus': lambda o, s, f: spt_l.gaussianLikelihoodMeasErrorOut(o, s), 'tendencia': _anlz_tendencia }
def test_rmse_with_self_is_zero(self): res = of.rmse(self.evaluation, self.evaluation) self.assertAlmostEqual(res, 0.0, self.tolerance)
def test_rmse(self): res = of.rmse(self.evaluation, self.simulation) self.assertAlmostEqual(res, 1.6207985019059006, self.tolerance)