Description
Everyone loves the fact that RocketPy can be quite easily wrapped to run Monte Carlo simulations to carry on dispersion analysis.
However, this experience quickly becomes hard as the analysis complexity increases. Usually, lack of a good stopping criteria combined with long simulation times are the main issues.
Therefore, the following requirements are specified to improve general Monte Carlo simulations with RocketPy.
Requirements
New features
- 1. Support for multithreading in order to speed up calculations.
- 2. Support for confidence interval estimation using bootstrapping.
- 3. Have a convergence criteria based on maximum confidence interval rather then number of simulations.
- 4. Speed up of each simulation to decrease total Monte Carlo analysis time. (PR ENH: Flight simulation speed up #581 )
- 5. Implement the MRS method (issue ENH: Implement MRS method on RocketPy! #162)
- 6. Allow users to input custom distribution functions for sampling [See Ref.1] (ENH: allow users to provide custom samplers #803 )
- 7. implement HybridMotor and LiquidMotor stochastic models (not sure how to do it yet)
- 8. Save the outputs in different file formats and file structure: ENH: Save dispersion outputs in different file formats #242
- 9. Improve the ellipses image generation: automatically downloads satellite images from the internet
Corrections:
- 1. Create evolution plots to analyze simulation convergence
- 2. Don't use built-in functions in new methods (words like "object", "getattr" and "type" are reserved)
- 3. Make lat and lon optional arguments in the
export_ellipses_to_kml
function - 4. Review fixed/variable attributes: prevent
timezone
,number_of_grains
,nose_kind
to be varied - 5. Refactor the
StochasticFlight.create_object
to avoid unnecessary calls. - 6. Stop using assert in production code. Use exceptions instead.
- 7. Refactor and simplify the
StochasticModel.__init__()
method - 8. Move the
_validate_airfoil
method to a child class
Proposed Milestone
v1.X (This means we will avoid breaking changes as much as possible)
Additional comments
Ref.1 -> There are certain quantities, e.g. wind speed, that the user might have a more accurate distribution (maybe built empirically) that does not fit Numpy's provided distributions. The user could provide a "sampler," i.e. a function that takes an integer sample_size as input and outputs that amount of samples according to his distribution.)
Metadata
Metadata
Assignees
Labels
Type
Projects
Status