Example #1
0
        public void TestCrossEntropy1And2()
        {
            var solver = SetupCrossEntropy();

            var gammaInfo   = new GammaInfo(2);
            var inputArray1 = new object[] { gammaInfo };

            var method1       = solver.GetType().GetMethod("CrossEntropy1", BindingFlags.NonPublic | BindingFlags.Instance, Type.DefaultBinder, new[] { typeof(GammaInfo) }, null);
            var gammaInfoOut1 = (GammaInfo)method1.Invoke(solver, inputArray1);

            Assert.AreEqual(23.0, gammaInfoOut1.IntermediateRareEvent);


            var inputArray2   = new object[] { gammaInfoOut1 };
            var method2       = solver.GetType().GetMethod("CrossEntropy2", BindingFlags.NonPublic | BindingFlags.Instance, Type.DefaultBinder, new[] { typeof(GammaInfo) }, null);
            var gammaInfoOut2 = (GammaInfo)method2.Invoke(solver, inputArray2);

            Assert.That(gammaInfoOut2.IntermediateGamma, Is.EquivalentTo(new[] { 1.1685264634846571d, 0.8430033009062794d }));
        }
Example #2
0
        public void TestCrossEntropy1And2()
        {
            var solver = SetupCrossEntropy();

            var gammaInfo   = new GammaInfo(2);
            var inputArray1 = new object[] { gammaInfo };

            var method1       = solver.GetType().GetMethod("CrossEntropy1", BindingFlags.NonPublic | BindingFlags.Instance, Type.DefaultBinder, new[] { typeof(GammaInfo) }, null);
            var gammaInfoOut1 = (GammaInfo)method1.Invoke(solver, inputArray1);

            Assert.AreEqual(23.0f, gammaInfoOut1.IntermediateRareEvent);


            var inputArray2   = new object[] { gammaInfoOut1 };
            var method2       = solver.GetType().GetMethod("CrossEntropy2", BindingFlags.NonPublic | BindingFlags.Instance, Type.DefaultBinder, new[] { typeof(GammaInfo) }, null);
            var gammaInfoOut2 = (GammaInfo)method2.Invoke(solver, inputArray2);

            Assert.That(new[] { 1.1709945407814435d, 0.84595592854181967d }, Is.EquivalentTo(gammaInfoOut2.IntermediateGamma));
        }
Example #3
0
        public void TestGammaInfo()
        {
            const int numReactions = 3;
            var       gammaInfo    = new GammaInfo(numReactions);

            int[]        n      = { 2, 4, 0 };
            double[]     lambda = { 4.0, 10.0, 25.0 };
            const double weight = 1.5;

            gammaInfo.UpdateGamma(weight, n, lambda);
            gammaInfo.SetIntermediateGamma();
            gammaInfo.UpdateStructure();
            var intermediateGamma = gammaInfo.IntermediateGamma;
            var gammaNum          = GetHiddenField <double[]>("_gammaNum", gammaInfo);

            Assert.AreEqual(intermediateGamma[0], 0.5);
            Assert.AreEqual(intermediateGamma[1], 0.4);
            Assert.AreEqual(intermediateGamma[2], double.Epsilon);
            Assert.AreEqual(gammaInfo.IntermediateRareEvent, -1);
            Assert.AreEqual(new double[] { 0, 0, 0 }, gammaNum);
        }