示例#1
0
 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
示例#2
0
    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
示例#4
0
 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
示例#5
0
 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
示例#6
0
    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
示例#7
0
 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
示例#9
0
    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)