Esempio n. 1
0
 /// <summary>
 /// Returns simulation results based on Monte Carlo method
 /// </summary>
 /// <param name="distributionInput">Represents user defined variables for
 /// probability distribution and simulation results</param>
 /// <param name="distributionType">Represents selected probability distribution</param>
 public IList <StatisticalResult> Run(DistributionInput distributionInput, DistributionType distributionType)
 {
     SimulationResult = ToggleDistribution(distributionInput, distributionType);
     if (SimulationResult.FittedValues.Count > 0)
     {
         if (_statisticalInput == null)
         {
             _statisticalInput = new StatisticalInput();
         }
         _statisticalInput.Interval    = distributionInput.Interval;
         _statisticalInput.Iteration   = distributionInput.Iteration;
         _statisticalInput.FitMinValue = SimulationResult.FittedValues.Min();
         _statisticalInput.FitMaxValue = SimulationResult.FittedValues.Max();
         _statisticalInput.MaxValue    = SimulationResult.SimulatedValues.Max();
         _statisticalInput.MinValue    = SimulationResult.SimulatedValues.Min();
         return(GetSimResult(_statisticalInput, SimulationResult.FittedValues));
     }
     throw new ArgumentException();
 }
Esempio n. 2
0
        private IList <StatisticalResult> GetSimResult(StatisticalInput statisticalInput, IList <double> distribution)
        {
            SimulationResults = new List <StatisticalResult>();
            var relFrequencies = MathUtils.GetRelFrequency(statisticalInput, distribution);
            var cumFrequencies = MathUtils.GetCumFrequency(statisticalInput, distribution);
            var expectations   = MathUtils.GetExpectation(statisticalInput, distribution);
            var binSizes       = MathUtils.GetBinSizes(statisticalInput.MaxValue, statisticalInput.MinValue, statisticalInput.Interval);
            var fittedbinSizes = MathUtils.GetBinSizes(statisticalInput.FitMaxValue, statisticalInput.FitMinValue, statisticalInput.Interval);

            for (int i = 0; i < _statisticalInput.Interval; i++)
            {
                SimulationResults.Add(new StatisticalResult()
                {
                    Expectation         = expectations[i],
                    RelativeFrequency   = relFrequencies[i],
                    CumulativeFrequency = cumFrequencies[i],
                    FittedBinSize       = fittedbinSizes[i],
                    BinSize             = binSizes[i]
                });
            }
            return(SimulationResults);
        }