Exemple #1
0
 def test_SolveEquation(self):
     obj = EquationSolver()
     obj.RunEquationReduction = False
     # By forcing 't' into the variable list, no automatic creation of time variables
     obj.ParseString("""
      x=t
      z=x+1
      z(0) = 2.
      exogenous
      t=[10.]*20
      MaxTime=3""")
     obj.ExtractVariableList()
     obj.SetInitialConditions()
     obj.SolveStep(1)
     obj.SolveStep(2)
     obj.SolveStep(3)
     obj2 = EquationSolver()
     obj2.RunEquationReduction = False
     # By forcing 't' into the variable list, no automatic creation of time variables
     obj2.ParseString("""
      x=t
      z=x+1
      z(0) = 2.
      exogenous
      t=[10.]*20
      MaxTime=3""")
     obj2.SolveEquation()
     self.assertEqual(obj.TimeSeries['x'], obj2.TimeSeries['x'])
Exemple #2
0
 def test_SolveEquation_with_initial_equilibrium(self):
     obj2 = EquationSolver()
     obj2.RunEquationReduction = False
     # By forcing 't' into the variable list, no automatic creation of time variables
     obj2.ParseString("""
      x=t
      z=x+1
      z(0) = 2.
      exogenous
      t=[10.]*20
      MaxTime=3""")
     obj2.ParameterSolveInitialSteadyState = True
     obj2.SolveEquation()
     # Must be reset
     self.assertFalse(Parameters.SolveInitialEquilibrium)
     # The Initial equilibrium calculation overrides the initial condition.
     self.assertEqual([11., 11., 11., 11.], obj2.TimeSeries['z'])
Exemple #3
0
def generate_model(eqns, use_control=False):
    if use_control:
        eqns += """
        u = (-.7 * x + .75 * r)/.05
        u(0) = 1.0
        exogenous
        r = [1.] * 10 + [2.]*21
            """
    else:
        eqns += """
    exogenous
    u = [1.] * 10 + [2.]*21
        """
    print(eqns)
    out = EquationSolver(eqns)
    out.Parser.MaxTime = 30
    out.SolveEquation()
    return out