/// <summary>Computations that depend on the observed value of vVector__343</summary>
        private void Changed_vVector__343()
        {
            if (this.Changed_vVector__343_iterationsDone == 1)
            {
                return;
            }
            this.vVector__343_marginal = new PointMass <Vector[]>(this.VVector__343);
            // The constant 'vVectorGaussian343'
            VectorGaussian vVectorGaussian343 = 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.vVector1029_marginal_F = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian343);
            // Buffer for ReplicateOp_Divide.Marginal<VectorGaussian>
            VectorGaussian vVector1029_rep_B_toDef = default(VectorGaussian);

            // Message to 'vVector1029_rep' from Replicate factor
            vVector1029_rep_B_toDef = ReplicateOp_Divide.ToDefInit <VectorGaussian>(vVectorGaussian343);
            // Message to 'vVector1029_marginal' from Variable factor
            this.vVector1029_marginal_F = VariableOp.MarginalAverageConditional <VectorGaussian>(vVector1029_rep_B_toDef, vVectorGaussian343, this.vVector1029_marginal_F);
            DistributionStructArray <Gaussian, double> vdouble__1029_F = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__1029' Forwards messages.
            vdouble__1029_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index343 = 0; index343 < 1; index343++)
            {
                vdouble__1029_F[index343] = Gaussian.Uniform();
            }
            DistributionStructArray <Gaussian, double> vdouble__1030_F = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__1030' Forwards messages.
            vdouble__1030_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index343 = 0; index343 < 1; index343++)
            {
                vdouble__1030_F[index343] = Gaussian.Uniform();
            }
            DistributionRefArray <VectorGaussian, Vector> vVector1029_rep_F = default(DistributionRefArray <VectorGaussian, Vector>);
            DistributionRefArray <VectorGaussian, Vector> vVector1029_rep_B = default(DistributionRefArray <VectorGaussian, Vector>);

            // Create array for 'vVector1029_rep' Forwards messages.
            vVector1029_rep_F = new DistributionRefArray <VectorGaussian, Vector>(1);
            // Create array for 'vVector1029_rep' Backwards messages.
            vVector1029_rep_B = new DistributionRefArray <VectorGaussian, Vector>(1);
            for (int index343 = 0; index343 < 1; index343++)
            {
                vVector1029_rep_B[index343] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian343);
                vVector1029_rep_F[index343] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian343);
            }
            // Buffer for ReplicateOp_Divide.UsesAverageConditional<VectorGaussian>
            VectorGaussian vVector1029_rep_F_marginal = default(VectorGaussian);

            // Message to 'vVector1029_rep' from Replicate factor
            vVector1029_rep_F_marginal = ReplicateOp_Divide.MarginalInit <VectorGaussian>(vVectorGaussian343);
            // Message to 'vVector1029_rep' from Replicate factor
            vVector1029_rep_F_marginal = ReplicateOp_Divide.Marginal <VectorGaussian>(vVector1029_rep_B_toDef, vVectorGaussian343, vVector1029_rep_F_marginal);
            // Buffer for InnerProductOp.InnerProductAverageConditional
            // Create array for replicates of 'vVector1029_rep_F_index343__AMean'
            Vector[] vVector1029_rep_F_index343__AMean = new Vector[1];
            for (int index343 = 0; index343 < 1; index343++)
            {
                // Message to 'vdouble__1030' from InnerProduct factor
                vVector1029_rep_F_index343__AMean[index343] = InnerProductOp.AMeanInit(vVector1029_rep_F[index343]);
            }
            // Buffer for InnerProductOp.AMean
            // Create array for replicates of 'vVector1029_rep_F_index343__AVariance'
            PositiveDefiniteMatrix[] vVector1029_rep_F_index343__AVariance = new PositiveDefiniteMatrix[1];
            for (int index343 = 0; index343 < 1; index343++)
            {
                // Message to 'vdouble__1030' from InnerProduct factor
                vVector1029_rep_F_index343__AVariance[index343] = InnerProductOp.AVarianceInit(vVector1029_rep_F[index343]);
                // Message to 'vVector1029_rep' from Replicate factor
                vVector1029_rep_F[index343] = ReplicateOp_Divide.UsesAverageConditional <VectorGaussian>(vVector1029_rep_B[index343], vVector1029_rep_F_marginal, index343, vVector1029_rep_F[index343]);
            }
            // Create array for 'vdouble__1030_marginal' Forwards messages.
            this.vdouble__1030_marginal_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index343 = 0; index343 < 1; index343++)
            {
                this.vdouble__1030_marginal_F[index343] = Gaussian.Uniform();
            }
            // Message from use of 'vdouble__1030'
            DistributionStructArray <Gaussian, double> vdouble__1030_use_B = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__1030_use' Backwards messages.
            vdouble__1030_use_B = new DistributionStructArray <Gaussian, double>(1);
            for (int index343 = 0; index343 < 1; index343++)
            {
                vdouble__1030_use_B[index343] = Gaussian.Uniform();
                // Message to 'vdouble__1030' from InnerProduct factor
                vVector1029_rep_F_index343__AVariance[index343] = InnerProductOp.AVariance(vVector1029_rep_F[index343], vVector1029_rep_F_index343__AVariance[index343]);
                // Message to 'vdouble__1030' from InnerProduct factor
                vVector1029_rep_F_index343__AMean[index343] = InnerProductOp.AMean(vVector1029_rep_F[index343], vVector1029_rep_F_index343__AVariance[index343], vVector1029_rep_F_index343__AMean[index343]);
                // Message to 'vdouble__1030' from InnerProduct factor
                vdouble__1030_F[index343] = InnerProductOp.InnerProductAverageConditional(vVector1029_rep_F_index343__AMean[index343], vVector1029_rep_F_index343__AVariance[index343], this.VVector__343[index343]);
                // Message to 'vdouble__1030_marginal' from DerivedVariable factor
                this.vdouble__1030_marginal_F[index343] = DerivedVariableOp.MarginalAverageConditional <Gaussian>(vdouble__1030_use_B[index343], vdouble__1030_F[index343], this.vdouble__1030_marginal_F[index343]);
            }
            // Create array for 'vdouble__1029_marginal' Forwards messages.
            this.vdouble__1029_marginal_F = new DistributionStructArray <Gaussian, double>(1);
            for (int index343 = 0; index343 < 1; index343++)
            {
                this.vdouble__1029_marginal_F[index343] = Gaussian.Uniform();
            }
            // Message from use of 'vdouble__1029'
            DistributionStructArray <Gaussian, double> vdouble__1029_use_B = default(DistributionStructArray <Gaussian, double>);

            // Create array for 'vdouble__1029_use' Backwards messages.
            vdouble__1029_use_B = new DistributionStructArray <Gaussian, double>(1);
            for (int index343 = 0; index343 < 1; index343++)
            {
                vdouble__1029_use_B[index343] = Gaussian.Uniform();
                // Message to 'vdouble__1029' from GaussianFromMeanAndVariance factor
                vdouble__1029_F[index343] = GaussianFromMeanAndVarianceOp.SampleAverageConditional(vdouble__1030_F[index343], 0.1);
                // Message to 'vdouble__1029_marginal' from Variable factor
                this.vdouble__1029_marginal_F[index343] = VariableOp.MarginalAverageConditional <Gaussian>(vdouble__1029_use_B[index343], vdouble__1029_F[index343], this.vdouble__1029_marginal_F[index343]);
            }
            this.Changed_vVector__343_iterationsDone = 1;
        }
Esempio n. 2
0
        /// <summary>Computations that depend on the observed value of vVector__134 and vdouble__402</summary>
        private void Changed_vVector__134_vdouble__402()
        {
            if (this.Changed_vVector__134_vdouble__402_iterationsDone == 1)
            {
                return;
            }
            this.vVector__134_marginal = new PointMass <Vector[]>(this.VVector__134);
            this.vdouble__402_marginal = new DistributionStructArray <Gaussian, double>(5622, delegate(int index134) {
                return(Gaussian.Uniform());
            });
            this.vdouble__402_marginal = Distribution.SetPoint <DistributionStructArray <Gaussian, double>, double[]>(this.vdouble__402_marginal, this.Vdouble__402);
            // The constant 'vVectorGaussian134'
            VectorGaussian vVectorGaussian134 = 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.vVector403_marginal_F = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian134);
            // Message from use of 'vdouble__403'
            DistributionStructArray <Gaussian, double> vdouble__403_use_B = default(DistributionStructArray <Gaussian, double>);

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

            // Create array for 'vVector403_rep' Backwards messages.
            vVector403_rep_B = new DistributionRefArray <VectorGaussian, Vector>(5622);
            for (int index134 = 0; index134 < 5622; index134++)
            {
                vVector403_rep_B[index134] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian134);
                // Message to 'vVector403_rep' from InnerProduct factor
                vVector403_rep_B[index134] = InnerProductOp.AAverageConditional(vdouble__403_use_B[index134], this.VVector__134[index134], vVector403_rep_B[index134]);
            }
            // Buffer for ReplicateOp_Divide.Marginal<VectorGaussian>
            VectorGaussian vVector403_rep_B_toDef = default(VectorGaussian);

            // Message to 'vVector403_rep' from Replicate factor
            vVector403_rep_B_toDef = ReplicateOp_Divide.ToDefInit <VectorGaussian>(vVectorGaussian134);
            // Message to 'vVector403_rep' from Replicate factor
            vVector403_rep_B_toDef = ReplicateOp_Divide.ToDef <VectorGaussian>(vVector403_rep_B, vVector403_rep_B_toDef);
            // Message to 'vVector403_marginal' from Variable factor
            this.vVector403_marginal_F = VariableOp.MarginalAverageConditional <VectorGaussian>(vVector403_rep_B_toDef, vVectorGaussian134, this.vVector403_marginal_F);
            DistributionStructArray <Gaussian, double> vdouble__403_F = default(DistributionStructArray <Gaussian, double>);

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

            // Create array for 'vVector403_rep' Forwards messages.
            vVector403_rep_F = new DistributionRefArray <VectorGaussian, Vector>(5622);
            for (int index134 = 0; index134 < 5622; index134++)
            {
                vVector403_rep_F[index134] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian134);
            }
            // Buffer for ReplicateOp_Divide.UsesAverageConditional<VectorGaussian>
            VectorGaussian vVector403_rep_F_marginal = default(VectorGaussian);

            // Message to 'vVector403_rep' from Replicate factor
            vVector403_rep_F_marginal = ReplicateOp_Divide.MarginalInit <VectorGaussian>(vVectorGaussian134);
            // Message to 'vVector403_rep' from Replicate factor
            vVector403_rep_F_marginal = ReplicateOp_Divide.Marginal <VectorGaussian>(vVector403_rep_B_toDef, vVectorGaussian134, vVector403_rep_F_marginal);
            // Buffer for InnerProductOp.InnerProductAverageConditional
            // Create array for replicates of 'vVector403_rep_F_index134__AMean'
            Vector[] vVector403_rep_F_index134__AMean = new Vector[5622];
            for (int index134 = 0; index134 < 5622; index134++)
            {
                // Message to 'vdouble__403' from InnerProduct factor
                vVector403_rep_F_index134__AMean[index134] = InnerProductOp.AMeanInit(vVector403_rep_F[index134]);
            }
            // Buffer for InnerProductOp.AMean
            // Create array for replicates of 'vVector403_rep_F_index134__AVariance'
            PositiveDefiniteMatrix[] vVector403_rep_F_index134__AVariance = new PositiveDefiniteMatrix[5622];
            for (int index134 = 0; index134 < 5622; index134++)
            {
                // Message to 'vdouble__403' from InnerProduct factor
                vVector403_rep_F_index134__AVariance[index134] = InnerProductOp.AVarianceInit(vVector403_rep_F[index134]);
                // Message to 'vVector403_rep' from Replicate factor
                vVector403_rep_F[index134] = ReplicateOp_Divide.UsesAverageConditional <VectorGaussian>(vVector403_rep_B[index134], vVector403_rep_F_marginal, index134, vVector403_rep_F[index134]);
            }
            // Create array for 'vdouble__403_marginal' Forwards messages.
            this.vdouble__403_marginal_F = new DistributionStructArray <Gaussian, double>(5622);
            for (int index134 = 0; index134 < 5622; index134++)
            {
                this.vdouble__403_marginal_F[index134] = Gaussian.Uniform();
                // Message to 'vdouble__403' from InnerProduct factor
                vVector403_rep_F_index134__AVariance[index134] = InnerProductOp.AVariance(vVector403_rep_F[index134], vVector403_rep_F_index134__AVariance[index134]);
                // Message to 'vdouble__403' from InnerProduct factor
                vVector403_rep_F_index134__AMean[index134] = InnerProductOp.AMean(vVector403_rep_F[index134], vVector403_rep_F_index134__AVariance[index134], vVector403_rep_F_index134__AMean[index134]);
                // Message to 'vdouble__403' from InnerProduct factor
                vdouble__403_F[index134] = InnerProductOp.InnerProductAverageConditional(vVector403_rep_F_index134__AMean[index134], vVector403_rep_F_index134__AVariance[index134], this.VVector__134[index134]);
                // Message to 'vdouble__403_marginal' from DerivedVariable factor
                this.vdouble__403_marginal_F[index134] = DerivedVariableOp.MarginalAverageConditional <Gaussian>(vdouble__403_use_B[index134], vdouble__403_F[index134], this.vdouble__403_marginal_F[index134]);
            }
            this.Changed_vVector__134_vdouble__402_iterationsDone = 1;
        }