/// <summary>Computations that depend on the observed value of vVector__49</summary>
        private void Changed_vVector__49()
        {
            if (this.Changed_vVector__49_iterationsDone == 1)
            {
                return;
            }
            this.vVector__49_marginal = new PointMass <Vector[]>(this.VVector__49);
            // The constant 'vVectorGaussian49'
            VectorGaussian vVectorGaussian49 = VectorGaussian.FromNatural(DenseVector.FromArray(new double[3] {
                1547829870.0, 525077980.0, 200270.0
            }), new PositiveDefiniteMatrix(new double[3, 3] {
                { 4254590363351.0, 1127383488860.0, 433199230.0 }, { 1127383488860.0, 482723521821.0, 146764360.0 }, { 433199230.0, 146764360.0, 56221.0 }
            }));

            this.vVector147_marginal_F = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian49);
            // Buffer for ReplicateOp_Divide.Marginal<VectorGaussian>
            VectorGaussian vVector147_rep_B_toDef = default(VectorGaussian);

            // Message to 'vVector147_rep' from Replicate factor
            vVector147_rep_B_toDef = ReplicateOp_Divide.ToDefInit <VectorGaussian>(vVectorGaussian49);
            // Message to 'vVector147_marginal' from Variable factor
            this.vVector147_marginal_F = VariableOp.MarginalAverageConditional <VectorGaussian>(vVector147_rep_B_toDef, vVectorGaussian49, this.vVector147_marginal_F);
            DistributionStructArray <Gaussian, double> vdouble__147_F = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__147' Forwards messages.
            vdouble__147_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index49 = 0; index49 < 1; index49++)
            {
                vdouble__147_F[index49] = Gaussian.Uniform();
            }
            DistributionStructArray <Gaussian, double> vdouble__148_F = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__148' Forwards messages.
            vdouble__148_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index49 = 0; index49 < 1; index49++)
            {
                vdouble__148_F[index49] = Gaussian.Uniform();
            }
            DistributionRefArray <VectorGaussian, Vector> vVector147_rep_F = default(DistributionRefArray <VectorGaussian, Vector>);
            DistributionRefArray <VectorGaussian, Vector> vVector147_rep_B = default(DistributionRefArray <VectorGaussian, Vector>);

            // Create array for 'vVector147_rep' Forwards messages.
            vVector147_rep_F = new DistributionRefArray <VectorGaussian, Vector>(1);
            // Create array for 'vVector147_rep' Backwards messages.
            vVector147_rep_B = new DistributionRefArray <VectorGaussian, Vector>(1);
            for (int index49 = 0; index49 < 1; index49++)
            {
                vVector147_rep_B[index49] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian49);
                vVector147_rep_F[index49] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian49);
            }
            // Buffer for ReplicateOp_Divide.UsesAverageConditional<VectorGaussian>
            VectorGaussian vVector147_rep_F_marginal = default(VectorGaussian);

            // Message to 'vVector147_rep' from Replicate factor
            vVector147_rep_F_marginal = ReplicateOp_Divide.MarginalInit <VectorGaussian>(vVectorGaussian49);
            // Message to 'vVector147_rep' from Replicate factor
            vVector147_rep_F_marginal = ReplicateOp_Divide.Marginal <VectorGaussian>(vVector147_rep_B_toDef, vVectorGaussian49, vVector147_rep_F_marginal);
            // Buffer for InnerProductOp.InnerProductAverageConditional
            // Create array for replicates of 'vVector147_rep_F_index49__AMean'
            Vector[] vVector147_rep_F_index49__AMean = new Vector[1];
            for (int index49 = 0; index49 < 1; index49++)
            {
                // Message to 'vdouble__148' from InnerProduct factor
                vVector147_rep_F_index49__AMean[index49] = InnerProductOp.AMeanInit(vVector147_rep_F[index49]);
            }
            // Buffer for InnerProductOp.AMean
            // Create array for replicates of 'vVector147_rep_F_index49__AVariance'
            PositiveDefiniteMatrix[] vVector147_rep_F_index49__AVariance = new PositiveDefiniteMatrix[1];
            for (int index49 = 0; index49 < 1; index49++)
            {
                // Message to 'vdouble__148' from InnerProduct factor
                vVector147_rep_F_index49__AVariance[index49] = InnerProductOp.AVarianceInit(vVector147_rep_F[index49]);
                // Message to 'vVector147_rep' from Replicate factor
                vVector147_rep_F[index49] = ReplicateOp_Divide.UsesAverageConditional <VectorGaussian>(vVector147_rep_B[index49], vVector147_rep_F_marginal, index49, vVector147_rep_F[index49]);
            }
            // Create array for 'vdouble__148_marginal' Forwards messages.
            this.vdouble__148_marginal_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index49 = 0; index49 < 1; index49++)
            {
                this.vdouble__148_marginal_F[index49] = Gaussian.Uniform();
            }
            // Message from use of 'vdouble__148'
            DistributionStructArray <Gaussian, double> vdouble__148_use_B = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__148_use' Backwards messages.
            vdouble__148_use_B = new DistributionStructArray <Gaussian, double>(1);
            for (int index49 = 0; index49 < 1; index49++)
            {
                vdouble__148_use_B[index49] = Gaussian.Uniform();
                // Message to 'vdouble__148' from InnerProduct factor
                vVector147_rep_F_index49__AVariance[index49] = InnerProductOp.AVariance(vVector147_rep_F[index49], vVector147_rep_F_index49__AVariance[index49]);
                // Message to 'vdouble__148' from InnerProduct factor
                vVector147_rep_F_index49__AMean[index49] = InnerProductOp.AMean(vVector147_rep_F[index49], vVector147_rep_F_index49__AVariance[index49], vVector147_rep_F_index49__AMean[index49]);
                // Message to 'vdouble__148' from InnerProduct factor
                vdouble__148_F[index49] = InnerProductOp.InnerProductAverageConditional(vVector147_rep_F_index49__AMean[index49], vVector147_rep_F_index49__AVariance[index49], this.VVector__49[index49]);
                // Message to 'vdouble__148_marginal' from DerivedVariable factor
                this.vdouble__148_marginal_F[index49] = DerivedVariableOp.MarginalAverageConditional <Gaussian>(vdouble__148_use_B[index49], vdouble__148_F[index49], this.vdouble__148_marginal_F[index49]);
            }
            // Create array for 'vdouble__147_marginal' Forwards messages.
            this.vdouble__147_marginal_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index49 = 0; index49 < 1; index49++)
            {
                this.vdouble__147_marginal_F[index49] = Gaussian.Uniform();
            }
            // Message from use of 'vdouble__147'
            DistributionStructArray <Gaussian, double> vdouble__147_use_B = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__147_use' Backwards messages.
            vdouble__147_use_B = new DistributionStructArray <Gaussian, double>(1);
            for (int index49 = 0; index49 < 1; index49++)
            {
                vdouble__147_use_B[index49] = Gaussian.Uniform();
                // Message to 'vdouble__147' from GaussianFromMeanAndVariance factor
                vdouble__147_F[index49] = GaussianFromMeanAndVarianceOp.SampleAverageConditional(vdouble__148_F[index49], 0.1);
                // Message to 'vdouble__147_marginal' from Variable factor
                this.vdouble__147_marginal_F[index49] = VariableOp.MarginalAverageConditional <Gaussian>(vdouble__147_use_B[index49], vdouble__147_F[index49], this.vdouble__147_marginal_F[index49]);
            }
            this.Changed_vVector__49_iterationsDone = 1;
        }
Esempio n. 2
0
        /// <summary>Computations that depend on the observed value of vVector__286 and vdouble__858</summary>
        private void Changed_vVector__286_vdouble__858()
        {
            if (this.Changed_vVector__286_vdouble__858_iterationsDone == 1)
            {
                return;
            }
            this.vVector__286_marginal = new PointMass <Vector[]>(this.VVector__286);
            this.vdouble__858_marginal = new DistributionStructArray <Gaussian, double>(5622, delegate(int index286) {
                return(Gaussian.Uniform());
            });
            this.vdouble__858_marginal = Distribution.SetPoint <DistributionStructArray <Gaussian, double>, double[]>(this.vdouble__858_marginal, this.Vdouble__858);
            // The constant 'vVectorGaussian286'
            VectorGaussian vVectorGaussian286 = VectorGaussian.FromNatural(DenseVector.FromArray(new double[3] {
                0.0, 0.0, 0.0
            }), new PositiveDefiniteMatrix(new double[3, 3] {
                { 1.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }, { 0.0, 0.0, 1.0 }
            }));

            this.vVector859_marginal_F = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian286);
            // Message from use of 'vdouble__859'
            DistributionStructArray <Gaussian, double> vdouble__859_use_B = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__859_use' Backwards messages.
            vdouble__859_use_B = new DistributionStructArray <Gaussian, double>(5622);
            for (int index286 = 0; index286 < 5622; index286++)
            {
                vdouble__859_use_B[index286] = Gaussian.Uniform();
                // Message to 'vdouble__859_use' from GaussianFromMeanAndVariance factor
                vdouble__859_use_B[index286] = GaussianFromMeanAndVarianceOp.MeanAverageConditional(this.Vdouble__858[index286], 0.1);
            }
            DistributionRefArray <VectorGaussian, Vector> vVector859_rep_B = default(DistributionRefArray <VectorGaussian, Vector>);

            // Create array for 'vVector859_rep' Backwards messages.
            vVector859_rep_B = new DistributionRefArray <VectorGaussian, Vector>(5622);
            for (int index286 = 0; index286 < 5622; index286++)
            {
                vVector859_rep_B[index286] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian286);
                // Message to 'vVector859_rep' from InnerProduct factor
                vVector859_rep_B[index286] = InnerProductOp.AAverageConditional(vdouble__859_use_B[index286], this.VVector__286[index286], vVector859_rep_B[index286]);
            }
            // Buffer for ReplicateOp_Divide.Marginal<VectorGaussian>
            VectorGaussian vVector859_rep_B_toDef = default(VectorGaussian);

            // Message to 'vVector859_rep' from Replicate factor
            vVector859_rep_B_toDef = ReplicateOp_Divide.ToDefInit <VectorGaussian>(vVectorGaussian286);
            // Message to 'vVector859_rep' from Replicate factor
            vVector859_rep_B_toDef = ReplicateOp_Divide.ToDef <VectorGaussian>(vVector859_rep_B, vVector859_rep_B_toDef);
            // Message to 'vVector859_marginal' from Variable factor
            this.vVector859_marginal_F = VariableOp.MarginalAverageConditional <VectorGaussian>(vVector859_rep_B_toDef, vVectorGaussian286, this.vVector859_marginal_F);
            DistributionStructArray <Gaussian, double> vdouble__859_F = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__859' Forwards messages.
            vdouble__859_F = new DistributionStructArray <Gaussian, double>(5622);
            for (int index286 = 0; index286 < 5622; index286++)
            {
                vdouble__859_F[index286] = Gaussian.Uniform();
            }
            DistributionRefArray <VectorGaussian, Vector> vVector859_rep_F = default(DistributionRefArray <VectorGaussian, Vector>);

            // Create array for 'vVector859_rep' Forwards messages.
            vVector859_rep_F = new DistributionRefArray <VectorGaussian, Vector>(5622);
            for (int index286 = 0; index286 < 5622; index286++)
            {
                vVector859_rep_F[index286] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian286);
            }
            // Buffer for ReplicateOp_Divide.UsesAverageConditional<VectorGaussian>
            VectorGaussian vVector859_rep_F_marginal = default(VectorGaussian);

            // Message to 'vVector859_rep' from Replicate factor
            vVector859_rep_F_marginal = ReplicateOp_Divide.MarginalInit <VectorGaussian>(vVectorGaussian286);
            // Message to 'vVector859_rep' from Replicate factor
            vVector859_rep_F_marginal = ReplicateOp_Divide.Marginal <VectorGaussian>(vVector859_rep_B_toDef, vVectorGaussian286, vVector859_rep_F_marginal);
            // Buffer for InnerProductOp.InnerProductAverageConditional
            // Create array for replicates of 'vVector859_rep_F_index286__AMean'
            Vector[] vVector859_rep_F_index286__AMean = new Vector[5622];
            for (int index286 = 0; index286 < 5622; index286++)
            {
                // Message to 'vdouble__859' from InnerProduct factor
                vVector859_rep_F_index286__AMean[index286] = InnerProductOp.AMeanInit(vVector859_rep_F[index286]);
            }
            // Buffer for InnerProductOp.AMean
            // Create array for replicates of 'vVector859_rep_F_index286__AVariance'
            PositiveDefiniteMatrix[] vVector859_rep_F_index286__AVariance = new PositiveDefiniteMatrix[5622];
            for (int index286 = 0; index286 < 5622; index286++)
            {
                // Message to 'vdouble__859' from InnerProduct factor
                vVector859_rep_F_index286__AVariance[index286] = InnerProductOp.AVarianceInit(vVector859_rep_F[index286]);
                // Message to 'vVector859_rep' from Replicate factor
                vVector859_rep_F[index286] = ReplicateOp_Divide.UsesAverageConditional <VectorGaussian>(vVector859_rep_B[index286], vVector859_rep_F_marginal, index286, vVector859_rep_F[index286]);
            }
            // Create array for 'vdouble__859_marginal' Forwards messages.
            this.vdouble__859_marginal_F = new DistributionStructArray <Gaussian, double>(5622);
            for (int index286 = 0; index286 < 5622; index286++)
            {
                this.vdouble__859_marginal_F[index286] = Gaussian.Uniform();
                // Message to 'vdouble__859' from InnerProduct factor
                vVector859_rep_F_index286__AVariance[index286] = InnerProductOp.AVariance(vVector859_rep_F[index286], vVector859_rep_F_index286__AVariance[index286]);
                // Message to 'vdouble__859' from InnerProduct factor
                vVector859_rep_F_index286__AMean[index286] = InnerProductOp.AMean(vVector859_rep_F[index286], vVector859_rep_F_index286__AVariance[index286], vVector859_rep_F_index286__AMean[index286]);
                // Message to 'vdouble__859' from InnerProduct factor
                vdouble__859_F[index286] = InnerProductOp.InnerProductAverageConditional(vVector859_rep_F_index286__AMean[index286], vVector859_rep_F_index286__AVariance[index286], this.VVector__286[index286]);
                // Message to 'vdouble__859_marginal' from DerivedVariable factor
                this.vdouble__859_marginal_F[index286] = DerivedVariableOp.MarginalAverageConditional <Gaussian>(vdouble__859_use_B[index286], vdouble__859_F[index286], this.vdouble__859_marginal_F[index286]);
            }
            this.Changed_vVector__286_vdouble__858_iterationsDone = 1;
        }