/// <summary>Computations that depend on the observed value of vVector__153</summary>
        private void Changed_vVector__153()
        {
            if (this.Changed_vVector__153_iterationsDone == 1)
            {
                return;
            }
            this.vVector__153_marginal = new PointMass <Vector[]>(this.VVector__153);
            // The constant 'vVectorGaussian153'
            VectorGaussian vVectorGaussian153 = 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.vVector459_marginal_F = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian153);
            // Buffer for ReplicateOp_Divide.Marginal<VectorGaussian>
            VectorGaussian vVector459_rep_B_toDef = default(VectorGaussian);

            // Message to 'vVector459_rep' from Replicate factor
            vVector459_rep_B_toDef = ReplicateOp_Divide.ToDefInit <VectorGaussian>(vVectorGaussian153);
            // Message to 'vVector459_marginal' from Variable factor
            this.vVector459_marginal_F = VariableOp.MarginalAverageConditional <VectorGaussian>(vVector459_rep_B_toDef, vVectorGaussian153, this.vVector459_marginal_F);
            DistributionStructArray <Gaussian, double> vdouble__459_F = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__459' Forwards messages.
            vdouble__459_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index153 = 0; index153 < 1; index153++)
            {
                vdouble__459_F[index153] = Gaussian.Uniform();
            }
            DistributionStructArray <Gaussian, double> vdouble__460_F = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__460' Forwards messages.
            vdouble__460_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index153 = 0; index153 < 1; index153++)
            {
                vdouble__460_F[index153] = Gaussian.Uniform();
            }
            DistributionRefArray <VectorGaussian, Vector> vVector459_rep_F = default(DistributionRefArray <VectorGaussian, Vector>);
            DistributionRefArray <VectorGaussian, Vector> vVector459_rep_B = default(DistributionRefArray <VectorGaussian, Vector>);

            // Create array for 'vVector459_rep' Forwards messages.
            vVector459_rep_F = new DistributionRefArray <VectorGaussian, Vector>(1);
            // Create array for 'vVector459_rep' Backwards messages.
            vVector459_rep_B = new DistributionRefArray <VectorGaussian, Vector>(1);
            for (int index153 = 0; index153 < 1; index153++)
            {
                vVector459_rep_B[index153] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian153);
                vVector459_rep_F[index153] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian153);
            }
            // Buffer for ReplicateOp_Divide.UsesAverageConditional<VectorGaussian>
            VectorGaussian vVector459_rep_F_marginal = default(VectorGaussian);

            // Message to 'vVector459_rep' from Replicate factor
            vVector459_rep_F_marginal = ReplicateOp_Divide.MarginalInit <VectorGaussian>(vVectorGaussian153);
            // Message to 'vVector459_rep' from Replicate factor
            vVector459_rep_F_marginal = ReplicateOp_Divide.Marginal <VectorGaussian>(vVector459_rep_B_toDef, vVectorGaussian153, vVector459_rep_F_marginal);
            // Buffer for InnerProductOp.InnerProductAverageConditional
            // Create array for replicates of 'vVector459_rep_F_index153__AMean'
            Vector[] vVector459_rep_F_index153__AMean = new Vector[1];
            for (int index153 = 0; index153 < 1; index153++)
            {
                // Message to 'vdouble__460' from InnerProduct factor
                vVector459_rep_F_index153__AMean[index153] = InnerProductOp.AMeanInit(vVector459_rep_F[index153]);
            }
            // Buffer for InnerProductOp.AMean
            // Create array for replicates of 'vVector459_rep_F_index153__AVariance'
            PositiveDefiniteMatrix[] vVector459_rep_F_index153__AVariance = new PositiveDefiniteMatrix[1];
            for (int index153 = 0; index153 < 1; index153++)
            {
                // Message to 'vdouble__460' from InnerProduct factor
                vVector459_rep_F_index153__AVariance[index153] = InnerProductOp.AVarianceInit(vVector459_rep_F[index153]);
                // Message to 'vVector459_rep' from Replicate factor
                vVector459_rep_F[index153] = ReplicateOp_Divide.UsesAverageConditional <VectorGaussian>(vVector459_rep_B[index153], vVector459_rep_F_marginal, index153, vVector459_rep_F[index153]);
            }
            // Create array for 'vdouble__460_marginal' Forwards messages.
            this.vdouble__460_marginal_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index153 = 0; index153 < 1; index153++)
            {
                this.vdouble__460_marginal_F[index153] = Gaussian.Uniform();
            }
            // Message from use of 'vdouble__460'
            DistributionStructArray <Gaussian, double> vdouble__460_use_B = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__460_use' Backwards messages.
            vdouble__460_use_B = new DistributionStructArray <Gaussian, double>(1);
            for (int index153 = 0; index153 < 1; index153++)
            {
                vdouble__460_use_B[index153] = Gaussian.Uniform();
                // Message to 'vdouble__460' from InnerProduct factor
                vVector459_rep_F_index153__AVariance[index153] = InnerProductOp.AVariance(vVector459_rep_F[index153], vVector459_rep_F_index153__AVariance[index153]);
                // Message to 'vdouble__460' from InnerProduct factor
                vVector459_rep_F_index153__AMean[index153] = InnerProductOp.AMean(vVector459_rep_F[index153], vVector459_rep_F_index153__AVariance[index153], vVector459_rep_F_index153__AMean[index153]);
                // Message to 'vdouble__460' from InnerProduct factor
                vdouble__460_F[index153] = InnerProductOp.InnerProductAverageConditional(vVector459_rep_F_index153__AMean[index153], vVector459_rep_F_index153__AVariance[index153], this.VVector__153[index153]);
                // Message to 'vdouble__460_marginal' from DerivedVariable factor
                this.vdouble__460_marginal_F[index153] = DerivedVariableOp.MarginalAverageConditional <Gaussian>(vdouble__460_use_B[index153], vdouble__460_F[index153], this.vdouble__460_marginal_F[index153]);
            }
            // Create array for 'vdouble__459_marginal' Forwards messages.
            this.vdouble__459_marginal_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index153 = 0; index153 < 1; index153++)
            {
                this.vdouble__459_marginal_F[index153] = Gaussian.Uniform();
            }
            // Message from use of 'vdouble__459'
            DistributionStructArray <Gaussian, double> vdouble__459_use_B = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__459_use' Backwards messages.
            vdouble__459_use_B = new DistributionStructArray <Gaussian, double>(1);
            for (int index153 = 0; index153 < 1; index153++)
            {
                vdouble__459_use_B[index153] = Gaussian.Uniform();
                // Message to 'vdouble__459' from GaussianFromMeanAndVariance factor
                vdouble__459_F[index153] = GaussianFromMeanAndVarianceOp.SampleAverageConditional(vdouble__460_F[index153], 0.1);
                // Message to 'vdouble__459_marginal' from Variable factor
                this.vdouble__459_marginal_F[index153] = VariableOp.MarginalAverageConditional <Gaussian>(vdouble__459_use_B[index153], vdouble__459_F[index153], this.vdouble__459_marginal_F[index153]);
            }
            this.Changed_vVector__153_iterationsDone = 1;
        }
Esempio n. 2
0
        /// <summary>Computations that depend on the observed value of vVector__280 and vdouble__840</summary>
        private void Changed_vVector__280_vdouble__840()
        {
            if (this.Changed_vVector__280_vdouble__840_iterationsDone == 1)
            {
                return;
            }
            this.vVector__280_marginal = new PointMass <Vector[]>(this.VVector__280);
            this.vdouble__840_marginal = new DistributionStructArray <Gaussian, double>(5622, delegate(int index280) {
                return(Gaussian.Uniform());
            });
            this.vdouble__840_marginal = Distribution.SetPoint <DistributionStructArray <Gaussian, double>, double[]>(this.vdouble__840_marginal, this.Vdouble__840);
            // The constant 'vVectorGaussian280'
            VectorGaussian vVectorGaussian280 = 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.vVector841_marginal_F = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian280);
            // Message from use of 'vdouble__841'
            DistributionStructArray <Gaussian, double> vdouble__841_use_B = default(DistributionStructArray <Gaussian, double>);

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

            // Create array for 'vVector841_rep' Backwards messages.
            vVector841_rep_B = new DistributionRefArray <VectorGaussian, Vector>(5622);
            for (int index280 = 0; index280 < 5622; index280++)
            {
                vVector841_rep_B[index280] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian280);
                // Message to 'vVector841_rep' from InnerProduct factor
                vVector841_rep_B[index280] = InnerProductOp.AAverageConditional(vdouble__841_use_B[index280], this.VVector__280[index280], vVector841_rep_B[index280]);
            }
            // Buffer for ReplicateOp_Divide.Marginal<VectorGaussian>
            VectorGaussian vVector841_rep_B_toDef = default(VectorGaussian);

            // Message to 'vVector841_rep' from Replicate factor
            vVector841_rep_B_toDef = ReplicateOp_Divide.ToDefInit <VectorGaussian>(vVectorGaussian280);
            // Message to 'vVector841_rep' from Replicate factor
            vVector841_rep_B_toDef = ReplicateOp_Divide.ToDef <VectorGaussian>(vVector841_rep_B, vVector841_rep_B_toDef);
            // Message to 'vVector841_marginal' from Variable factor
            this.vVector841_marginal_F = VariableOp.MarginalAverageConditional <VectorGaussian>(vVector841_rep_B_toDef, vVectorGaussian280, this.vVector841_marginal_F);
            DistributionStructArray <Gaussian, double> vdouble__841_F = default(DistributionStructArray <Gaussian, double>);

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

            // Create array for 'vVector841_rep' Forwards messages.
            vVector841_rep_F = new DistributionRefArray <VectorGaussian, Vector>(5622);
            for (int index280 = 0; index280 < 5622; index280++)
            {
                vVector841_rep_F[index280] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian280);
            }
            // Buffer for ReplicateOp_Divide.UsesAverageConditional<VectorGaussian>
            VectorGaussian vVector841_rep_F_marginal = default(VectorGaussian);

            // Message to 'vVector841_rep' from Replicate factor
            vVector841_rep_F_marginal = ReplicateOp_Divide.MarginalInit <VectorGaussian>(vVectorGaussian280);
            // Message to 'vVector841_rep' from Replicate factor
            vVector841_rep_F_marginal = ReplicateOp_Divide.Marginal <VectorGaussian>(vVector841_rep_B_toDef, vVectorGaussian280, vVector841_rep_F_marginal);
            // Buffer for InnerProductOp.InnerProductAverageConditional
            // Create array for replicates of 'vVector841_rep_F_index280__AMean'
            Vector[] vVector841_rep_F_index280__AMean = new Vector[5622];
            for (int index280 = 0; index280 < 5622; index280++)
            {
                // Message to 'vdouble__841' from InnerProduct factor
                vVector841_rep_F_index280__AMean[index280] = InnerProductOp.AMeanInit(vVector841_rep_F[index280]);
            }
            // Buffer for InnerProductOp.AMean
            // Create array for replicates of 'vVector841_rep_F_index280__AVariance'
            PositiveDefiniteMatrix[] vVector841_rep_F_index280__AVariance = new PositiveDefiniteMatrix[5622];
            for (int index280 = 0; index280 < 5622; index280++)
            {
                // Message to 'vdouble__841' from InnerProduct factor
                vVector841_rep_F_index280__AVariance[index280] = InnerProductOp.AVarianceInit(vVector841_rep_F[index280]);
                // Message to 'vVector841_rep' from Replicate factor
                vVector841_rep_F[index280] = ReplicateOp_Divide.UsesAverageConditional <VectorGaussian>(vVector841_rep_B[index280], vVector841_rep_F_marginal, index280, vVector841_rep_F[index280]);
            }
            // Create array for 'vdouble__841_marginal' Forwards messages.
            this.vdouble__841_marginal_F = new DistributionStructArray <Gaussian, double>(5622);
            for (int index280 = 0; index280 < 5622; index280++)
            {
                this.vdouble__841_marginal_F[index280] = Gaussian.Uniform();
                // Message to 'vdouble__841' from InnerProduct factor
                vVector841_rep_F_index280__AVariance[index280] = InnerProductOp.AVariance(vVector841_rep_F[index280], vVector841_rep_F_index280__AVariance[index280]);
                // Message to 'vdouble__841' from InnerProduct factor
                vVector841_rep_F_index280__AMean[index280] = InnerProductOp.AMean(vVector841_rep_F[index280], vVector841_rep_F_index280__AVariance[index280], vVector841_rep_F_index280__AMean[index280]);
                // Message to 'vdouble__841' from InnerProduct factor
                vdouble__841_F[index280] = InnerProductOp.InnerProductAverageConditional(vVector841_rep_F_index280__AMean[index280], vVector841_rep_F_index280__AVariance[index280], this.VVector__280[index280]);
                // Message to 'vdouble__841_marginal' from DerivedVariable factor
                this.vdouble__841_marginal_F[index280] = DerivedVariableOp.MarginalAverageConditional <Gaussian>(vdouble__841_use_B[index280], vdouble__841_F[index280], this.vdouble__841_marginal_F[index280]);
            }
            this.Changed_vVector__280_vdouble__840_iterationsDone = 1;
        }