Class: PredictabilityEngine::Simulators::MonteCarlo
- Inherits:
-
Object
- Object
- PredictabilityEngine::Simulators::MonteCarlo
- Defined in:
- lib/predictability_engine/simulators/monte_carlo.rb
Constant Summary collapse
- DEFAULT_TRIALS =
10_000
Class Method Summary collapse
- .how_many_will_be_done(days_to_forecast, historical_throughput, trials: DEFAULT_TRIALS) ⇒ Object
- .percentile(results, percentile_value) ⇒ Object
- .when_will_it_be_done(backlog_count, historical_throughput, trials: DEFAULT_TRIALS) ⇒ Object
Class Method Details
.how_many_will_be_done(days_to_forecast, historical_throughput, trials: DEFAULT_TRIALS) ⇒ Object
22 23 24 25 26 27 28 29 30 |
# File 'lib/predictability_engine/simulators/monte_carlo.rb', line 22 def self.how_many_will_be_done(days_to_forecast, historical_throughput, trials: DEFAULT_TRIALS) validate_and_run(historical_throughput, trials) do total_done = 0 days_to_forecast.times do total_done += historical_throughput.sample end total_done end end |
.percentile(results, percentile_value) ⇒ Object
38 39 40 41 42 43 |
# File 'lib/predictability_engine/simulators/monte_carlo.rb', line 38 def self.percentile(results, percentile_value) return nil if results.empty? index = (results.size * percentile_value / 100.0).ceil - 1 results[index] end |
.when_will_it_be_done(backlog_count, historical_throughput, trials: DEFAULT_TRIALS) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/predictability_engine/simulators/monte_carlo.rb', line 8 def self.when_will_it_be_done(backlog_count, historical_throughput, trials: DEFAULT_TRIALS) validate_and_run(historical_throughput, trials) do remaining = backlog_count days = 0 while remaining.positive? remaining -= historical_throughput.sample days += 1 end days end end |