예제 #1
0
 public static double INTEG(Nivel nivel, Tasa tasa)
 {
     //Aqui se pueden usar los diferentes métodos de integración
     //Euler . Por defecto
     //Rugger-Kutta 2
     //Rugger-Kutta 4
     return(nivel.j + tasa.k * Reloj.DT);
 }
예제 #2
0
 public Delay3(string Nombre, double delay, Tasa Entrada)
 {
     _Nombre           = Nombre;
     _delay            = delay;
     _entrada          = Entrada;
     _retrasosporetapa = _delay / 3;
     _j = 0;
     _k = 0;
     Modelo.Agregar(this);
 }
예제 #3
0
        public static double SMOOTH(Nivel nivel, Tasa tasa, double demora)
        {
            //nivel : Lado izquierdo
            //expected demand=SMOOTH(demand, time to form expectations)

            //This equation is exactly the same as:
            //expected demand = INTEG((demand - expected demand) / time to form expectations,demand)

            //nivel.k = 1;
            return(0);
        }
예제 #4
0
        public Smooth(string Nombre, double Delay, int Orden, Auxiliar Aux)
        {
            _Nombre  = Nombre;
            _Delay   = Delay;
            Tipo     = "Smooth";
            Unidades = "Sin Dimensión";
            _orden   = Orden;
            //Nivel _TheInput = new Nivel("TheInput-"+_Nombre,0);
            _valorInicial = 0;// ValorInicial;
            _aux          = Aux;
            _DL           = _Delay / Orden;
            if (_orden == 3)
            {
                //Crear Stocks Auxiliares
                //Nivel

                _level          = new Nivel("_level_" + _Nombre, _valorInicial);
                _level.UpdateFn = () => (_level.j + Reloj.DT * _flow3.j);
                _flow3          = new Tasa("_flow3" + _Nombre);
                _flow3.UpdateFn = () => (_level2.k - _level.k) / _DL;

                //Nivel 1

                _level1          = new Nivel("_level1_" + _Nombre, 0);
                _level1.UpdateFn = () => (_level1.j + Reloj.DT * _flow.j);
                _flow            = new Tasa("_flow" + _Nombre);
                _flow.UpdateFn   = () => (Aux.k - _level1.k) / _DL;

                //Nivel 2
                _level2          = new Nivel("_level2_" + _Nombre, _level.k);
                _level2.UpdateFn = () => (_level2.j + Reloj.DT * _flow2.j);
                _flow2           = new Tasa("_flow2" + _Nombre);
                _flow2.UpdateFn  = () => (_level1.k - _level2.k) / _DL;
            }

            _Numero = Modelo.Agregar(this);
        }
예제 #5
0
 internal static void Agregar(Tasa tasa)
 {
     _diccionario.Add(tasa.Nombre, tasa);
     _tasas.Agregar(tasa);
 }
예제 #6
0
 public int Agregar(Tasa t)
 {
     return(base.Agregar(t));
 }