/// <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; } }
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); } }
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); } }
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); } }
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."); }
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); }