Ejemplo n.º 1
0
    def __update_from_symbolic__(self):

        import numpy
        # updates calibration according to the symbolic definitions

        system = self.symbolic.calibration_dict

        from dolo.compiler.triangular_solver import solve_triangular_system

        self.calibration_dict = solve_triangular_system( system )

        from dolo.compiler.misc import calibration_to_vector

        self.calibration = calibration_to_vector(self.symbols, self.calibration_dict)

        from symbolic_eval import NumericEval
        evaluator = NumericEval(self.calibration_dict)

        # read symbolic structure
        covariances = evaluator.eval(self.symbolic.covariances)
        if covariances is None:
            self.covariances = covariances
        else:
            self.covariances = numpy.atleast_2d(numpy.array(covariances, dtype=float))

        markov_chain = evaluator.eval(self.symbolic.markov_chain)
        if markov_chain is None:
            self.markov_chain = None
        else:
            self.markov_chain = [numpy.atleast_2d(numpy.array(tab, dtype=float)) for tab in markov_chain]

        self.options = evaluator.eval(self.symbolic.options)
Ejemplo n.º 2
0
    def __update_from_symbolic__(self):

        import numpy
        # updates calibration according to the symbolic definitions

        system = self.symbolic.calibration_dict

        from dolo.compiler.triangular_solver import solve_triangular_system
        self.calibration_dict = solve_triangular_system( system )
        from dolo.compiler.misc import CalibrationDict, calibration_to_vector
        calib = calibration_to_vector(self.symbols, self.calibration_dict)
        self.calibration = CalibrationDict(self.symbols, calib)
        from .symbolic_eval import NumericEval
        evaluator = NumericEval(self.calibration_dict)

        # read symbolic structure
        self.options = evaluator.eval(self.symbolic.options)

        distribution = evaluator.eval(self.symbolic.distribution)
        discrete_transition = evaluator.eval(self.symbolic.discrete_transition)


        covariances = distribution
        if distribution is None:
            self.covariances = None
        else:
            self.covariances = numpy.atleast_2d(numpy.array(covariances, dtype=float))

        markov_chain = discrete_transition
        if markov_chain is None:
            self.markov_chain = None
        else:
            self.markov_chain = [numpy.atleast_2d(numpy.array(tab, dtype=float)) for tab in markov_chain]
Ejemplo n.º 3
0
 def calibration(self):
     if self.__calibration__ is None:
         calibration_dict = super(self.__class__, self).get_calibration()
         from dolo.compiler.misc import CalibrationDict, calibration_to_vector
         calib = calibration_to_vector(self.symbols, calibration_dict)
         self.__calibration__ = CalibrationDict(self.symbols, calib)  #
     return self.__calibration__
Ejemplo n.º 4
0
 def calibration(self):
     if self.__calibration__ is None:
         calibration_dict = super(self.__class__, self).get_calibration()
         from dolo.compiler.misc import CalibrationDict, calibration_to_vector
         calib = calibration_to_vector(self.symbols, calibration_dict)
         self.__calibration__ = CalibrationDict(self.symbols, calib)  #
     return self.__calibration__
Ejemplo n.º 5
0
    def __update_from_symbolic__(self):

        import numpy
        # updates calibration according to the symbolic definitions

        system = self.symbolic.calibration_dict

        from dolo.compiler.triangular_solver import solve_triangular_system
        self.calibration_dict = solve_triangular_system(system)

        from dolo.compiler.misc import CalibrationDict, calibration_to_vector
        calib = calibration_to_vector(self.symbols, self.calibration_dict)
        self.calibration = CalibrationDict(self.symbols, calib)

        from .symbolic_eval import NumericEval
        evaluator = NumericEval(self.calibration_dict)
        # read symbolic structure
        self.options = evaluator.eval(self.symbolic.options)
        self.exogenous = self.get_exogenous()
        self.domain = self.get_domain()
Ejemplo n.º 6
0
    def __update_from_symbolic__(self):

        import numpy
        # updates calibration according to the symbolic definitions

        system = self.symbolic.calibration_dict

        from dolo.compiler.triangular_solver import solve_triangular_system
        self.calibration_dict = solve_triangular_system( system )

        from dolo.compiler.misc import CalibrationDict, calibration_to_vector
        calib = calibration_to_vector(self.symbols, self.calibration_dict)
        self.calibration = CalibrationDict(self.symbols, calib)

        from .symbolic_eval import NumericEval
        evaluator = NumericEval(self.calibration_dict)
        # read symbolic structure
        self.options = evaluator.eval(self.symbolic.options)
        #
        # distribution = evaluator.eval(self.symbolic.options.get('distribution'))
        # discrete_transition = evaluator.eval(self.symbolic.options.get('discrete_transition'))

        distribution = self.options.get('distribution')
        discrete_transition = self.options.get('discrete_transition')

        self.distribution = distribution
        self.discrete_transition = discrete_transition

        if distribution is None:
            self.covariances = None
        else:
            self.covariances = numpy.atleast_2d(numpy.array(distribution.sigma, dtype=float))

        markov_chain = discrete_transition

        if markov_chain is None:
            self.markov_chain = None
        else:
            markov_chain = [markov_chain.P, markov_chain.Q]
            self.markov_chain = [numpy.atleast_2d(numpy.array(tab, dtype=float)) for tab in markov_chain]
Ejemplo n.º 7
0
 def calibration(self):
     if self.__calibration__ is None:
         calibration_dict = self.__get_calibration__()
         calib = calibration_to_vector(self.symbols, calibration_dict)
         self.__calibration__ = CalibrationDict(self.symbols, calib)  #
     return self.__calibration__
Ejemplo n.º 8
0
    z="zbar",
    rk="1/β-1+δ",
    w="(1-α)*exp(z)*(k/n)**(α)",
    k="n/(rk/α)**(1/(1-α))",
    y="exp(z)*k**α*n**(1-α)",
    i="δ*k",
    c="y - i",
    V="log(c)/(1-β)",
    u="c**(1-σ)/(1-σ) - χ*n**(1+η)/(1+η)",
    m="β/c**σ*(1-δ+rk)")

from dolang.triangular_solver import solve_triangular_system

calibration_dict = solve_triangular_system(calibration_strings)

calibration_vector = calibration_to_vector(symbols, calibration_dict)
calibration = CalibrationDict(symbols, calibration_vector)
calibration

###
### Define functions
###

# the basic formulation of the functions (aka kernel)

# take and return "tuples" of floats because tuples are supposed
# to be easy to be optimzed away by the compiler
# after the definition of the function, there is some boilerplate
# to translate these functions into broadcastable ones, with
# optional numerical differentiation capabilities