Beispiel #1
0
        protected static float TestUniformClosedClosed(RandomVariateGenerator generator, out bool inBounds, out bool zero, out bool one)
        {
            float sample = Single.NaN;

            inBounds = true;
            zero     = false;
            one      = false;

            for (int i = 0; i < UniformCount; i++)
            {
                sample = generator.GenerateUniformCC();
                if ((sample < 0.0f) || (sample > 1.0f))
                {
                    inBounds = false;
                    break;
                }

                if (!zero && (sample == 0.0f))
                {
                    zero = true;
                }
                else if (!one && (sample == 1.0f))
                {
                    one = true;
                }
            }
            return(sample);
        }
Beispiel #2
0
        // Extract this from the static constructor to facilitate testing.
        protected internal static void Reset()
        {
            // Look at the config, if there is one, to determine which generator
            // to use and what seed value.

            string defaultPrngType = (AesCounterVariateGenerator.IsSupported ? "AESCOUNTER" : "PSEUDODES");
            string configPrngType  = Configuration.CurrentConfiguration.GetParameterWithDefault("RNG.type", defaultPrngType);

            _generatorType = (GeneratorType)Enum.Parse(typeof(GeneratorType), configPrngType.ToUpper());
            _generatorSeed = (uint)Configuration.CurrentConfiguration.GetParameterWithDefault("prng_seed", 0);
            _seedIndex     = (uint)Configuration.CurrentConfiguration.GetParameterWithDefault("prng_index", 0);

            _generator = null;
            try
            {
                _generator = CreateNewPrng(_generatorType, _generatorSeed, _seedIndex);
            }
            catch (Exception)
            {
                Console.Error.WriteLine("Unknown/unsupported RNG type: {0}", configPrngType);
                throw;
            }

            Console.WriteLine("Using {0} PRNG ({1}, {2}).", configPrngType, _generatorSeed, _seedIndex);
        }
Beispiel #3
0
        // ReSharper restore InconsistentNaming

        protected SolverBase(ModelInfo modelInfo, float duration, int repeats, int samples, IModelBuilder modelBuilder = null)
        {
            if (modelBuilder == null)
            {
                modelBuilder = new ModelBuilder();
            }

            this.modelInfo = modelInfo;
            this.duration  = duration;
            SamplingParams = new SamplingParameters {
                RealizationCount = repeats, SampleCount = samples
            };

            rng = RNGFactory.GetRNG();

            _currentTime = 0.0f;

            model             = modelBuilder.BuildModel(modelInfo);
            _time             = model.Parameters.First(p => p.Name == "time");
            untriggeredEvents = null;
            triggeredEvents   = new Queue <TriggeredEvent>();
            scheduledEvents   = model.ScheduledEvents.Count > 0 ? new PriorityQueue <ScheduledEvent>(model.ScheduledEvents.Count) : null;
            trajectories      = AllocateRecordingArrays(model.Observables, SamplingParams);

            InitializePerformanceMeasurements();

            stopWatch = new Stopwatch();
        }
Beispiel #4
0
        public static DistributionSampler CreateRandLibSampler(RandomVariateGenerator generator)
        {
            var sampler = new RandLibSampler {
                VariateGenerator = generator
            };

            return(sampler);
        }
        public void UniformOpenOpen()
        {
            RandomVariateGenerator generator = CreateVariateGenerator();
            bool inBounds;
            var  sample = TestUniformOpenOpen(generator, out inBounds);

            Assert.IsTrue(inBounds, string.Format("PseudoDesVariateGenerator.GenerateUniformOO() failed with value {0}.", sample));
        }
        public void UniformOpenClosed()
        {
            RandomVariateGenerator generator = CreateVariateGenerator();
            bool inBounds;
            bool one;
            var  sample = TestUniformOpenClosed(generator, out inBounds, out one);

            Assert.IsTrue(inBounds, string.Format("PseudoDesVariateGenerator.GenerateUniformOC() failed with value {0}.", sample));
            Assert.IsTrue(one, "PseudoDesVariateGenerator.GenerateUniformOC() failed to generate 1.0");
        }
        public void UniformClosedOpen()
        {
            RandomVariateGenerator generator = CreateVariateGenerator();
            bool inBounds;
            bool zero;
            var  sample = TestUniformClosedOpen(generator, out inBounds, out zero);

            Assert.IsTrue(inBounds, string.Format("PseudoDesVariateGenerator.GenerateUniformCO() failed with value {0}.", sample));
            Assert.IsTrue(zero, "PseudoDesVariateGenerator.GenerateUniformCO() failed to generate 0.0");
        }
Beispiel #8
0
        private Empirical()
        {
            Dimensionality = 0;
            _binCount      = 0;
            _binEdges      = null;
            _probabilities = null;
            _sum           = 0;

            _rng = RNGFactory.GetRNG();
        }
Beispiel #9
0
        public Uniform(double minimum, double maximum)
        {
            if (minimum > maximum)
            {
                throw new ArgumentException("Minimum must be <= maxmimum.", "minimum");
            }

            _min = minimum;
            _max = maximum;
            _rng = RNGFactory.GetRNG();
        }
Beispiel #10
0
        public void UniformClosedClosed()
        {
            RandomVariateGenerator generator = CreateVariateGenerator();
            bool inBounds;
            bool zero;
            bool one;
            var  sample = TestUniformClosedClosed(generator, out inBounds, out zero, out one);

            Assert.IsTrue(inBounds, string.Format("AesCounterVariateGenerator.GenerateUniformCC() failed with value {0}.", sample));
            Assert.IsTrue(zero, "AesCounterVariateGenerator.GenerateUniformCC() failed to generate 0.0");
            Assert.IsTrue(one, "AesCounterVariateGenerator.GenerateUniformCC() failed to generate 1.0");
        }
Beispiel #11
0
        public void RngFactoryDefaultTest()
        {
            Configuration.CurrentConfiguration = Configuration.ConfigurationFromString("{}");
            _resetMethodinfo.Invoke(null, null);

            RandomVariateGenerator rng = RNGFactory.GetRNG();

            Console.WriteLine("Testing RNGFactory default value...");
            if (AesCounterVariateGenerator.IsSupported)
            {
                Expect(rng is AesCounterVariateGenerator);
            }
            else
            {
                Expect(rng is PseudoDesVariateGenerator);
            }
            Console.WriteLine("{0}() PASSED", MethodBase.GetCurrentMethod().Name);
        }
Beispiel #12
0
        private const int UniformCount = 64 * 1048576;  // 4 * 2^24

        protected static float TestUniformOpenOpen(RandomVariateGenerator generator, out bool inBounds)
        {
            float sample = Single.NaN;

            inBounds = true;

            for (int i = 0; i < UniformCount; i++)
            {
                sample = generator.GenerateUniformOO();
                if ((sample <= 0.0f) || (sample >= 1.0f))
                {
                    inBounds = false;
                    break;
                }
            }

            return(sample);
        }
Beispiel #13
0
        private RandomVariateGenerator CreateVariateGenerator()
        {
            RandomVariateGenerator generator = DotNetVariateGenerator.CreateDotNetVariateGenerator(new uint[] { 19860201 });

            return(generator);
        }
        private RandomVariateGenerator CreateVariateGenerator()
        {
            RandomVariateGenerator generator = PseudoDesVariateGenerator.CreatePseudoDesVariateGenerator(new uint[] { 1234567890, 123456789 });

            return(generator);
        }
        public void ToStringTest()
        {
            RandomVariateGenerator generator = CreateVariateGenerator();

            Assert.AreEqual("PseudoDes Random Variate Generator (PseudoDes PRNG)", generator.ToString());
        }
        private RandomVariateGenerator CreateVariateGenerator()
        {
            RandomVariateGenerator generator = AesCounterVariateGenerator.CreateAesCounterVariateGenerator(new uint[] { 1234567890, 123456789 });

            return(generator);
        }
        public void ToStringTest()
        {
            RandomVariateGenerator generator = CreateVariateGenerator();

            Assert.AreEqual("AesCounter Random Variate Generator (AesCounter PRNG)", generator.ToString());
        }
Beispiel #18
0
        public void ToStringTest()
        {
            RandomVariateGenerator generator = CreateVariateGenerator();

            Assert.AreEqual(".Net Random Variate Generator (System.Random)", generator.ToString());
        }