Exemplo n.º 1
0
        public VariableArray2D <double> GetPopulationForIteration(int Iterations, double CatPopulation, double MousePopulation)
        {
            Variable <int> numTimes = Variable.Observed(Iterations);
            Range          time     = new Range(numTimes);
            Range          cols     = new Range(2); // frist is Cats and second Mice

            VariableArray2D <double> days = Variable.Array <double>(time, cols);

            using (ForEachBlock rowBlock = Variable.ForEach(time))
            {
                var day = rowBlock.Index;
                using (Variable.If(day == 0))
                {
                    Cat.SetNewPopulation(CatPopulation);
                    Mouse.SetNewPopulation(MousePopulation);
                    days[day, 0] = Cat.GetPopulation();
                    days[day, 1] = Mouse.GetPopulation();
                }
                using (Variable.If(day > 0))
                {
                    days[day, 0] = days[day - 1, 0] + GetCatPopulationChange();
                    days[day, 1] = days[day - 1, 1] + GetMousePopulationChange();
                }
            }

            return(days);
        }
Exemplo n.º 2
0
        public static void Mouse()
        {
            BaseAnimalModel.AnimalModelData MousePriors = new BaseAnimalModel.AnimalModelData(
                new Gaussian(5.5, 2.22),
                new Gaussian(0.0195, 0.000004),
                new Gaussian(0.001141552511, 0.0000000225)
                );

            InferenceEngine engine = new InferenceEngine();

            BaseAnimalModel Mouse = new BaseAnimalModel();

            Mouse.CreateModel();
            Mouse.SetModelData(MousePriors);
            Mouse.SetNewPopulation(100);

            Gaussian BornYoung = engine.Infer <Gaussian>(Mouse.GetBornYoung(0.5));

            Console.WriteLine(
                "Mouse BornYoung Mean: {0:f10}, Standard Deviation: {1:f10}",
                BornYoung.GetMean(),
                Math.Sqrt(BornYoung.GetVariance())
                );

            Gaussian NaturalDeath = engine.Infer <Gaussian>(Mouse.GetNaturalDeath());

            Console.WriteLine(
                "Mouse NaturalDeath Mean: {0:f10}, Standard Deviation: {1:f10}",
                NaturalDeath.GetMean(),
                Math.Sqrt(NaturalDeath.GetVariance())
                );
        }