示例#1
0
        /// <summary>
        /// Genetic mutation for auxiliary argument data.
        /// </summary>
        public void MutateAuxArgs(double[] auxArgs, IRandomSource rng, ZigguratGaussianDistribution gaussianSampler, double connectionWeightRange)
        {
            // Mutate centre.
            // Add Gaussian distribution sample and clamp result to +-connectionWeightRange.
            double tmp = auxArgs[0] + gaussianSampler.Sample(0, _auxArgsMutationSigmaCenter);

            if (tmp < -connectionWeightRange)
            {
                auxArgs[0] = -connectionWeightRange;
            }
            else if (tmp > connectionWeightRange)
            {
                auxArgs[0] = connectionWeightRange;
            }
            else
            {
                auxArgs[0] = tmp;
            }

            // Mutate radius.
            // Add Gaussian distribution sample and clamp result to [0,1]
            tmp = auxArgs[1] + gaussianSampler.Sample(0, _auxArgsMutationSigmaRadius);
            if (tmp < 0.0)
            {
                auxArgs[1] = 0.0;
            }
            else if (tmp > 1.0)
            {
                auxArgs[1] = 1.0;
            }
            else
            {
                auxArgs[1] = tmp;
            }
        }
示例#2
0
        public void TestCumulativeDistribution()
        {
            // Standard normal.
            var dist = new ZigguratGaussianDistribution(0.0, 1.0);

            GaussianDistributionTestUtils.TestDistribution(dist, 0.0, 1.0);

            // Non-zero mean tests.
            dist = new ZigguratGaussianDistribution(10.0, 1.0);
            GaussianDistributionTestUtils.TestDistribution(dist, 10.0, 1.0);

            dist = new ZigguratGaussianDistribution(-100.0, 1.0);
            GaussianDistributionTestUtils.TestDistribution(dist, -100.0, 1.0);

            // Non-1.0 standard deviations
            dist = new ZigguratGaussianDistribution(0.0, 0.2);
            GaussianDistributionTestUtils.TestDistribution(dist, 0.0, 0.2);

            dist = new ZigguratGaussianDistribution(0.0, 5.0);
            GaussianDistributionTestUtils.TestDistribution(dist, 0.0, 5.0);

            // Non-zero mean and non-1.0 standard deviation.
            dist = new ZigguratGaussianDistribution(10.0, 2.0);
            GaussianDistributionTestUtils.TestDistribution(dist, 10.0, 2.0);

            dist = new ZigguratGaussianDistribution(-10.0, 3.0);
            GaussianDistributionTestUtils.TestDistribution(dist, -10.0, 3.0);
        }
 public FunctionFloatBenchmarks()
 {
     // Create some random Gaussian values as the inputs to the activation functions.
     ZigguratGaussianDistribution gaussian = new ZigguratGaussianDistribution(0);
     for(int i=0; i<_x.Length; i++) {
         _x[i] = (float)gaussian.Sample(0, 2.0);
     }
 }
示例#4
0
 static NNFunctions()
 {
     using (RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider())
     {
         DateTime now = DateTime.Now;
         ZIGGURAT = new ZigguratGaussianDistribution(provider.GetHashCode() ^ now.TimeOfDay.Milliseconds ^ (int)now.TimeOfDay.TotalMilliseconds, 0, 0.01);
     }
 }
示例#5
0
        public BenchmarksVectorizedDouble()
        {
            // Create some random Gaussian values as the inputs to the activation functions.
            var gaussian = new ZigguratGaussianDistribution(0);

            for (int i = 0; i < _x.Length; i++)
            {
                _x[i] = gaussian.Sample(0, 2.0);
            }
        }
示例#6
0
 public void MutateAuxArgs(double[] auxArgs, IRandomSource rng, ZigguratGaussianDistribution gaussianSampler, double connectionWeightRange)
 {
     throw new SharpNeatException("MutateAuxArgs() called on activation function that does not use auxiliary arguments.");
 }
示例#7
0
        public void TestSimpleStats()
        {
            var dist = new ZigguratGaussianDistribution();

            GaussianDistributionTestUtils.TestSimpleStats(dist);
        }
        public void TestStandardDeviation()
        {
            var dist = new ZigguratGaussianDistribution();

            GaussianDistributionTestUtils.TestStandardDeviation(dist);
        }
        public void TestMean()
        {
            var dist = new ZigguratGaussianDistribution();

            GaussianDistributionTestUtils.TestMean(dist);
        }