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); }
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()) ); }