diff --git a/.vscode/settings.json b/.vscode/settings.json index 4b885192a..deed16155 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -209,6 +209,7 @@ "Metrum", "modindex", "mult", + "multiprocess", "Mumma", "NASADEM", "nbformat", diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e8635f16..b2d8908c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ Attention: The newest changes should be on top --> ### Added +- ENH: Parallel mode for monte-carlo simulations 2 [#768](https://github.com/RocketPy-Team/RocketPy/pull/768) - DOC: ASTRA Flight Example [#770](https://github.com/RocketPy-Team/RocketPy/pull/770) ### Changed diff --git a/docs/notebooks/monte_carlo_analysis/monte_carlo_class_usage.ipynb b/docs/notebooks/monte_carlo_analysis/monte_carlo_class_usage.ipynb index b263992fb..dc0f4e8b5 100644 --- a/docs/notebooks/monte_carlo_analysis/monte_carlo_class_usage.ipynb +++ b/docs/notebooks/monte_carlo_analysis/monte_carlo_class_usage.ipynb @@ -77,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -110,13 +110,6 @@ "execution_count": 4, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "oc_open: server error retrieving url: code=0 message=\"/gens_bc/gens20241207/gep_all_12z is not an available dataset\"" - ] - }, { "name": "stdout", "output_type": "stream", @@ -226,20 +219,9 @@ "cell_type": "code", "execution_count": 5, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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FCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECRQkEwRBEARBEIQJFCQTBEEQBEEQhAkUJBMEQRAEQRCECf8PFcIyIziTXlsAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "test_flight.plots.trajectory_3d()" + "# test_flight.plots.trajectory_3d()" ] }, { @@ -350,7 +332,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[-0.9372573333873278, -1.7906598085129741, -0.5642616411893749, -0.25479878132614686, -1.524759801324649]\n" + "[3.717859855893523, 4.439778613233867, 2.2538981612637707, 0.8915877554321416, 2.1553975254175404]\n" ] } ], @@ -486,7 +468,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[6399.914000599371, 6936.8379525146465, 5168.12025090168, 6422.100425696159, 6465.972511921968]\n" + "[5355.9143244739935, 6320.4738883261325, 7394.177114563075, 5358.212881446587, 6619.455732940446]\n" ] } ], @@ -755,21 +737,21 @@ "metadata": {}, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "The following input file was imported: monte_carlo_analysis_outputs/monte_carlo_class_example.inputs.txt\n", - "A total of 10 simulations results were loaded from the following output file: monte_carlo_analysis_outputs/monte_carlo_class_example.outputs.txt\n", - "\n", - "The following error file was imported: monte_carlo_analysis_outputs/monte_carlo_class_example.errors.txt\n" + "C:\\Mateus\\GitHub\\RocketPy\\rocketpy\\simulation\\monte_carlo.py:137: UserWarning: This class is still under testing and some attributes may be changed in next versions\n", + " warnings.warn(\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "/home/phmb/github/RocketPy/rocketpy/simulation/monte_carlo.py:112: UserWarning: This class is still under testing and some attributes may be changed in next versions\n", - " warnings.warn(\n" + "The following input file was imported: monte_carlo_analysis_outputs\\monte_carlo_class_example.inputs.txt\n", + "A total of 20 simulations results were loaded from the following output file: monte_carlo_analysis_outputs\\monte_carlo_class_example.outputs.txt\n", + "\n", + "The following error file was imported: monte_carlo_analysis_outputs\\monte_carlo_class_example.errors.txt \n" ] } ], @@ -802,22 +784,19 @@ "name": "stdout", "output_type": "stream", "text": [ - "Starting Monte Carlo analysis\r" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Completed 1000 iterations. Total CPU time: 1663.5 s. Total wall time: 1663.3 sme left: 0 s \n", - "Saving results.\n", - "Results saved to monte_carlo_analysis_outputs/monte_carlo_class_example.outputs.txt\n" + "Starting Monte Carlo analysis \n", + "Running Monte Carlo simulation with 4 workers.\n", + "Results saved to monte_carlo_analysis_outputs\\monte_carlo_class_example.outputs.txt\n" ] } ], "source": [ "test_dispersion.simulate(\n", - " number_of_simulations=1000, append=False, include_function_data=False\n", + " number_of_simulations=10,\n", + " append=False,\n", + " include_function_data=False,\n", + " parallel=True,\n", + " n_workers=4,\n", ")" ] }, @@ -1228,7 +1207,7 @@ "metadata": { "hide_input": false, "kernelspec": { - "display_name": "venv312", + "display_name": "rpy", "language": "python", "name": "python3" }, @@ -1242,7 +1221,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.3" + "version": "3.12.0" } }, "nbformat": 4, diff --git a/pyproject.toml b/pyproject.toml index 1c4e696f9..e1d8474c8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -61,7 +61,8 @@ env-analysis = [ ] monte-carlo = [ - "imageio", + "imageio", + "multiprocess>=0.70", "statsmodels", "prettytable", ] diff --git a/requirements-optional.txt b/requirements-optional.txt index 31c37c91b..58ed1030b 100644 --- a/requirements-optional.txt +++ b/requirements-optional.txt @@ -4,5 +4,6 @@ ipywidgets>=7.6.3 jsonpickle timezonefinder imageio +multiprocess>=0.70 statsmodels prettytable \ No newline at end of file diff --git a/rocketpy/rocket/components.py b/rocketpy/rocket/components.py index 43d32b074..66448eb69 100644 --- a/rocketpy/rocket/components.py +++ b/rocketpy/rocket/components.py @@ -148,6 +148,8 @@ def remove(self, component): """ for index, comp in enumerate(self._components): if comp.component == component: + self.__component_list.pop(index) + self.__position_list.pop(index) self._components.pop(index) break else: @@ -168,6 +170,8 @@ def pop(self, index=-1): component : Any The component removed from the list of components. """ + self.__component_list.pop(index) + self.__position_list.pop(index) return self._components.pop(index) def clear(self): @@ -177,6 +181,8 @@ def clear(self): ------- None """ + self.__component_list.clear() + self.__position_list.clear() self._components.clear() def sort_by_position(self, reverse=False): diff --git a/rocketpy/simulation/monte_carlo.py b/rocketpy/simulation/monte_carlo.py index 40b13c2e3..3914f1e54 100644 --- a/rocketpy/simulation/monte_carlo.py +++ b/rocketpy/simulation/monte_carlo.py @@ -14,8 +14,11 @@ """ import json +import os +import traceback import warnings -from time import process_time, time +from pathlib import Path +from time import time import numpy as np import simplekml @@ -27,6 +30,7 @@ from rocketpy.tools import ( generate_monte_carlo_ellipses, generate_monte_carlo_ellipses_coordinates, + import_optional_dependency, ) # TODO: Create evolution plots to analyze convergence @@ -136,7 +140,7 @@ def __init__( UserWarning, ) - self.filename = filename + self.filename = Path(filename) self.environment = environment self.rocket = rocket self.flight = flight @@ -149,30 +153,23 @@ def __init__( self.processed_results = {} self.prints = _MonteCarloPrints(self) self.plots = _MonteCarloPlots(self) - self._inputs_dict = {} - self._last_print_len = 0 # used to print on the same line self.export_list = self.__check_export_list(export_list) self._check_data_collector(data_collector) self.data_collector = data_collector - try: - self.import_inputs() - except FileNotFoundError: - self._input_file = f"{filename}.inputs.txt" + self.import_inputs(self.filename.with_suffix(".inputs.txt")) + self.import_outputs(self.filename.with_suffix(".outputs.txt")) + self.import_errors(self.filename.with_suffix(".errors.txt")) - try: - self.import_outputs() - except FileNotFoundError: - self._output_file = f"{filename}.outputs.txt" - - try: - self.import_errors() - except FileNotFoundError: - self._error_file = f"{filename}.errors.txt" - - # pylint: disable=consider-using-with - def simulate(self, number_of_simulations, append=False, **kwargs): # pylint: disable=too-many-statements + def simulate( + self, + number_of_simulations, + append=False, + parallel=False, + n_workers=None, + **kwargs, + ): # pylint: disable=too-many-statements """ Runs the Monte Carlo simulation and saves all data. @@ -183,6 +180,13 @@ def simulate(self, number_of_simulations, append=False, **kwargs): # pylint: di append : bool, optional If True, the results will be appended to the existing files. If False, the files will be overwritten. Default is False. + parallel : bool, optional + If True, the simulations will be run in parallel. Default is False. + n_workers : int, optional + Number of workers to be used if ``parallel=True``. If None, the + number of workers will be equal to the number of CPUs available. + A minimum of 2 workers is required for parallel mode. + Default is None. kwargs : dict Custom arguments for simulation export of the ``inputs`` file. Options are: @@ -214,193 +218,293 @@ def simulate(self, number_of_simulations, append=False, **kwargs): # pylint: di running the simulation again with `append=False`. """ self._export_config = kwargs - # Create data files for inputs, outputs and error logging - open_mode = "a" if append else "w" - input_file = open(self._input_file, open_mode, encoding="utf-8") - output_file = open(self._output_file, open_mode, encoding="utf-8") - error_file = open(self._error_file, open_mode, encoding="utf-8") - - # initialize counters self.number_of_simulations = number_of_simulations - self.__iteration_count = self.num_of_loaded_sims if append else 0 - self.__start_time = time() - self.__start_cpu_time = process_time() + self._initial_sim_idx = self.num_of_loaded_sims if append else 0 - # Begin display - print("Starting Monte Carlo analysis", end="\r") + _SimMonitor.reprint("Starting Monte Carlo analysis") - try: - while self.__iteration_count < self.number_of_simulations: - self.__run_single_simulation(input_file, output_file) - except KeyboardInterrupt: - print("Keyboard Interrupt, files saved.") - error_file.write( - json.dumps( - self._inputs_dict, cls=RocketPyEncoder, **self._export_config - ) - + "\n" - ) - self.__close_files(input_file, output_file, error_file) - except Exception as error: - print(f"Error on iteration {self.__iteration_count}: {error}") - error_file.write( - json.dumps( - self._inputs_dict, cls=RocketPyEncoder, **self._export_config - ) - + "\n" - ) - self.__close_files(input_file, output_file, error_file) - raise error - finally: - self.total_cpu_time = process_time() - self.__start_cpu_time - self.total_wall_time = time() - self.__start_time + self.__setup_files(append) - self.__terminate_simulation(input_file, output_file, error_file) + if parallel: + self.__run_in_parallel(n_workers) + else: + self.__run_in_serial() - # Auxiliary methods + self.__terminate_simulation() - def __run_single_simulation(self, input_file, output_file): + def __setup_files(self, append): """ - Runs a single simulation and saves the inputs and outputs to the - respective files. + Sets up the files for the simulation, creating them if necessary. Parameters ---------- - input_file : str - The file object to write the inputs. - output_file : str - The file object to write the outputs. + append : bool + If ``True``, the results will be appended to the existing files. If + ``False``, the files will be overwritten. Returns ------- None """ - self.__iteration_count += 1 + # Create data files for inputs, outputs and error logging + open_mode = "r+" if append else "w+" - monte_carlo_flight = Flight( - rocket=self.rocket.create_object(), - environment=self.environment.create_object(), - rail_length=self.flight._randomize_rail_length(), - inclination=self.flight._randomize_inclination(), - heading=self.flight._randomize_heading(), - initial_solution=self.flight.initial_solution, - terminate_on_apogee=self.flight.terminate_on_apogee, - ) + try: + with open(self._input_file, open_mode, encoding="utf-8") as input_file: + idx_i = len(input_file.readlines()) + with open(self._output_file, open_mode, encoding="utf-8") as output_file: + idx_o = len(output_file.readlines()) + with open(self._error_file, open_mode, encoding="utf-8"): + pass + + if idx_i != idx_o and not append: + warnings.warn( + "Input and output files are not synchronized", UserWarning + ) - self._inputs_dict = dict( - item - for d in [ - self.environment.last_rnd_dict, - self.rocket.last_rnd_dict, - self.flight.last_rnd_dict, - ] - for item in d.items() - ) + except OSError as error: + raise OSError(f"Error creating files: {error}") from error - self.__export_flight_data( - flight=monte_carlo_flight, - inputs_dict=self._inputs_dict, - input_file=input_file, - output_file=output_file, - ) + def __run_in_serial(self): + """ + Runs the monte carlo simulation in serial mode. - average_time = (process_time() - self.__start_cpu_time) / self.__iteration_count - estimated_time = int( - (self.number_of_simulations - self.__iteration_count) * average_time - ) - self.__reprint( - f"Current iteration: {self.__iteration_count:06d} | " - f"Average Time per Iteration: {average_time:.3f} s | " - f"Estimated time left: {estimated_time} s", - end="\r", - flush=True, + Returns + ------- + None + """ + sim_monitor = _SimMonitor( + initial_count=self._initial_sim_idx, + n_simulations=self.number_of_simulations, + start_time=time(), ) + try: + while sim_monitor.keep_simulating(): + sim_monitor.increment() + + flight = self.__run_single_simulation() + inputs_json = self.__evaluate_flight_inputs(sim_monitor.count) + outputs_json = self.__evaluate_flight_outputs(flight, sim_monitor.count) + + with open(self.input_file, "a", encoding="utf-8") as f: + f.write(inputs_json) + with open(self.output_file, "a", encoding="utf-8") as f: + f.write(outputs_json) + + sim_monitor.print_update_status(sim_monitor.count) + + sim_monitor.print_final_status() - def __close_files(self, input_file, output_file, error_file): + except KeyboardInterrupt: + _SimMonitor.reprint("Keyboard Interrupt, files saved.") + with open(self._error_file, "a", encoding="utf-8") as f: + f.write(inputs_json) + + except Exception as error: + _SimMonitor.reprint(f"Error on iteration {sim_monitor.count}: {error}") + with open(self._error_file, "a", encoding="utf-8") as f: + f.write(inputs_json) + raise error + + def __run_in_parallel(self, n_workers=None): """ - Closes all the files. + Runs the monte carlo simulation in parallel. Parameters ---------- - input_file : str - The file object to write the inputs. - output_file : str - The file object to write the outputs. - error_file : str - The file object to write the errors. + n_workers: int, optional + Number of workers to be used. If None, the number of workers + will be equal to the number of CPUs available. Default is None. Returns ------- None """ - input_file.close() - output_file.close() - error_file.close() + n_workers = self.__validate_number_of_workers(n_workers) - def __terminate_simulation(self, input_file, output_file, error_file): - """ - Terminates the simulation, closes the files and prints the results. + _SimMonitor.reprint(f"Running Monte Carlo simulation with {n_workers} workers.") + + multiprocess, managers = _import_multiprocess() + + with _create_multiprocess_manager(multiprocess, managers) as manager: + mutex = manager.Lock() + simulation_error_event = manager.Event() + sim_monitor = manager._SimMonitor( + initial_count=self._initial_sim_idx, + n_simulations=self.number_of_simulations, + start_time=time(), + ) + + processes = [] + seeds = np.random.SeedSequence().spawn(n_workers) + + for seed in seeds: + sim_producer = multiprocess.Process( + target=self.__sim_producer, + args=( + seed, + sim_monitor, + mutex, + simulation_error_event, + ), + ) + processes.append(sim_producer) + sim_producer.start() + + try: + for sim_producer in processes: + sim_producer.join() + + # Handle error from the child processes + if simulation_error_event.is_set(): + raise RuntimeError( + "An error occurred during the simulation. \n" + f"Check the logs and error file {self.error_file} " + "for more information." + ) + + sim_monitor.print_final_status() + + # Handle error from the main process + # pylint: disable=broad-except + except (Exception, KeyboardInterrupt) as error: + simulation_error_event.set() + + for sim_producer in processes: + sim_producer.join() + + if not isinstance(error, KeyboardInterrupt): + raise error + + def __validate_number_of_workers(self, n_workers): + if n_workers is None or n_workers > os.cpu_count(): + n_workers = os.cpu_count() + + if n_workers < 2: + raise ValueError("Number of workers must be at least 2 for parallel mode.") + return n_workers + + def __sim_producer(self, seed, sim_monitor, mutex, error_event): # pylint: disable=too-many-statements + """Simulation producer to be used in parallel by multiprocessing. Parameters ---------- - input_file : str - The file object to write the inputs. - output_file : str - The file object to write the outputs. - error_file : str - The file object to write the errors. + seed : int + The seed to set the random number generator. + sim_monitor : _SimMonitor + The simulation monitor object to keep track of the simulations. + mutex : multiprocess.Lock + The mutex to lock access to critical regions. + error_event : multiprocess.Event + Event signaling an error occurred during the simulation. + """ + try: + # Ensure Processes generate different random numbers + self.environment._set_stochastic(seed) + self.rocket._set_stochastic(seed) + self.flight._set_stochastic(seed) + + while sim_monitor.keep_simulating(): + sim_idx = sim_monitor.increment() - 1 + + flight = self.__run_single_simulation() + inputs_json = self.__evaluate_flight_inputs(sim_idx) + outputs_json = self.__evaluate_flight_outputs(flight, sim_idx) + + try: + mutex.acquire() + if error_event.is_set(): + sim_monitor.reprint( + "Simulation Interrupt, files from simulation " + f"{sim_idx} saved." + ) + with open(self.error_file, "a", encoding="utf-8") as f: + f.write(inputs_json) + + break + + with open(self.input_file, "a", encoding="utf-8") as f: + f.write(inputs_json) + with open(self.output_file, "a", encoding="utf-8") as f: + f.write(outputs_json) + + sim_monitor.print_update_status(sim_idx) + finally: + mutex.release() + + except Exception: # pylint: disable=broad-except + mutex.acquire() + with open(self.error_file, "a", encoding="utf-8") as f: + f.write(inputs_json) + + sim_monitor.reprint(f"Error on iteration {sim_idx}:") + sim_monitor.reprint(traceback.format_exc()) + error_event.set() + mutex.release() + + def __run_single_simulation(self): + """Runs a single simulation and returns the inputs and outputs. Returns ------- - None + Flight + The flight object of the simulation. """ - final_string = ( - f"Completed {self.__iteration_count} iterations. Total CPU time: " - f"{process_time() - self.__start_cpu_time:.1f} s. Total wall time: " - f"{time() - self.__start_time:.1f} s\n" + return Flight( + rocket=self.rocket.create_object(), + environment=self.environment.create_object(), + rail_length=self.flight._randomize_rail_length(), + inclination=self.flight._randomize_inclination(), + heading=self.flight._randomize_heading(), + initial_solution=self.flight.initial_solution, + terminate_on_apogee=self.flight.terminate_on_apogee, ) - self.__reprint(final_string + "Saving results.", flush=True) - - # close files to guarantee saving - self.__close_files(input_file, output_file, error_file) - - # resave the files on self and calculate post simulation attributes - self.input_file = f"{self.filename}.inputs.txt" - self.output_file = f"{self.filename}.outputs.txt" - self.error_file = f"{self.filename}.errors.txt" + def __evaluate_flight_inputs(self, sim_idx): + """Evaluates the inputs of a single flight simulation. - print(f"Results saved to {self._output_file}") + Parameters + ---------- + sim_idx : int + The index of the simulation. - def __export_flight_data( - self, - flight, - inputs_dict, - input_file, - output_file, - ): + Returns + ------- + str + A JSON compatible dictionary with the inputs of the simulation. """ - Exports the flight data to the respective files. + inputs_dict = dict( + item + for d in [ + self.environment.last_rnd_dict, + self.rocket.last_rnd_dict, + self.flight.last_rnd_dict, + ] + for item in d.items() + ) + inputs_dict["index"] = sim_idx + return json.dumps(inputs_dict, cls=RocketPyEncoder) + "\n" + + def __evaluate_flight_outputs(self, flight, sim_idx): + """Evaluates the outputs of a single flight simulation. Parameters ---------- flight : Flight - The Flight object containing the flight data. - inputs_dict : dict - Dictionary containing the inputs used in the simulation. - input_file : str - The file object to write the inputs. - output_file : str - The file object to write the outputs. + The flight object to be evaluated. + sim_idx : int + The index of the simulation. Returns ------- - None + str + A JSON compatible dictionary with the outputs of the simulation. """ - results = { + outputs_dict = { export_item: getattr(flight, export_item) for export_item in self.export_list } + outputs_dict["index"] = sim_idx if self.data_collector is not None: additional_exports = {} @@ -411,14 +515,24 @@ def __export_flight_data( raise ValueError( f"An error was encountered running 'data_collector' callback {key}. " ) from e - results = results | additional_exports + outputs_dict = outputs_dict | additional_exports - input_file.write( - json.dumps(inputs_dict, cls=RocketPyEncoder, **self._export_config) + "\n" - ) - output_file.write( - json.dumps(results, cls=RocketPyEncoder, **self._export_config) + "\n" - ) + return json.dumps(outputs_dict, cls=RocketPyEncoder) + "\n" + + def __terminate_simulation(self): + """ + Terminates the simulation, closes the files and prints the results. + + Returns + ------- + None + """ + # resave the files on self and calculate post simulation attributes + self.input_file = self._input_file + self.output_file = self._output_file + self.error_file = self._error_file + + _SimMonitor.reprint(f"Results saved to {self._output_file}") def __check_export_list(self, export_list): """ @@ -554,35 +668,6 @@ def _check_data_collector(self, data_collector): "Values must be python callables (callback functions)." ) - def __reprint(self, msg, end="\n", flush=False): - """ - Prints a message on the same line as the previous one and replaces the - previous message with the new one, deleting the extra characters from - the previous message. - - Parameters - ---------- - msg : str - Message to be printed. - end : str, optional - String appended after the message. Default is a new line. - flush : bool, optional - If True, the output is flushed. Default is False. - - Returns - ------- - None - """ - len_msg = len(msg) - if len_msg < self._last_print_len: - msg += " " * (self._last_print_len - len_msg) - else: - self._last_print_len = len_msg - - print(msg, end=end, flush=flush) - - # Properties and setters - @property def input_file(self): """String representing the filepath of the input file""" @@ -779,16 +864,16 @@ def import_outputs(self, filename=None): file without the need to run simulations. You can use previously saved files to process analyze the results or to continue a simulation. """ - filepath = filename if filename else self.filename + filepath = filename if filename else self.filename.with_suffix(".outputs.txt") try: - with open(f"{filepath}.outputs.txt", "r+", encoding="utf-8"): - self.output_file = f"{filepath}.outputs.txt" - except FileNotFoundError: with open(filepath, "r+", encoding="utf-8"): self.output_file = filepath + except FileNotFoundError: + with open(filepath, "w+", encoding="utf-8"): + self.output_file = filepath - print( + _SimMonitor.reprint( f"A total of {self.num_of_loaded_sims} simulations results were " f"loaded from the following output file: {self.output_file}\n" ) @@ -807,16 +892,16 @@ def import_inputs(self, filename=None): ------- None """ - filepath = filename if filename else self.filename + filepath = filename if filename else self.filename.with_suffix(".inputs.txt") try: - with open(f"{filepath}.inputs.txt", "r+", encoding="utf-8"): - self.input_file = f"{filepath}.inputs.txt" - except FileNotFoundError: with open(filepath, "r+", encoding="utf-8"): self.input_file = filepath + except FileNotFoundError: + with open(filepath, "w+", encoding="utf-8"): + self.input_file = filepath - print(f"The following input file was imported: {self.input_file}") + _SimMonitor.reprint(f"The following input file was imported: {self.input_file}") def import_errors(self, filename=None): """ @@ -832,15 +917,16 @@ def import_errors(self, filename=None): ------- None """ - filepath = filename if filename else self.filename + filepath = filename if filename else self.filename.with_suffix(".errors.txt") try: - with open(f"{filepath}.errors.txt", "r+", encoding="utf-8"): - self.error_file = f"{filepath}.errors.txt" - except FileNotFoundError: with open(filepath, "r+", encoding="utf-8"): self.error_file = filepath - print(f"The following error file was imported: {self.error_file}") + except FileNotFoundError: + with open(filepath, "w+", encoding="utf-8"): + self.error_file = filepath + + _SimMonitor.reprint(f"The following error file was imported: {self.error_file}") def import_results(self, filename=None): """ @@ -849,18 +935,16 @@ def import_results(self, filename=None): Parameters ---------- filename : str, optional - Name or directory path to the file to be imported. If none, + Name or directory path to the file to be imported. If ``None``, self.filename will be used. Returns ------- None """ - filepath = filename if filename else self.filename - - self.import_outputs(filename=filepath) - self.import_inputs(filename=filepath) - self.import_errors(filename=filepath) + self.import_outputs(filename=filename) + self.import_inputs(filename=filename) + self.import_errors(filename=filename) # Export methods @@ -1018,3 +1102,128 @@ def all_info(self): self.info() self.plots.ellipses() self.plots.all() + + +def _import_multiprocess(): + """Import the necessary modules and submodules for the + multiprocess library. + + Returns + ------- + tuple + Tuple containing the imported modules. + """ + multiprocess = import_optional_dependency("multiprocess") + managers = import_optional_dependency("multiprocess.managers") + + return multiprocess, managers + + +def _create_multiprocess_manager(multiprocess, managers): + """Creates a manager for the multiprocess control of the + Monte Carlo simulation. + + Parameters + ---------- + multiprocess : module + Multiprocess module. + managers : module + Managing submodules of the multiprocess module. + + Returns + ------- + MonteCarloManager + Subclass of BaseManager with the necessary classes registered. + """ + + class MonteCarloManager(managers.BaseManager): + """Custom manager for shared objects in the Monte Carlo simulation.""" + + def __init__(self): + super().__init__() + self.register("Lock", multiprocess.Lock) + self.register("Queue", multiprocess.Queue) + self.register("Event", multiprocess.Event) + self.register("_SimMonitor", _SimMonitor) + + return MonteCarloManager() + + +class _SimMonitor: + """Class to monitor the simulation progress and display the status.""" + + _last_print_len = 0 + + def __init__(self, initial_count, n_simulations, start_time): + self.initial_count = initial_count + self.count = initial_count + self.n_simulations = n_simulations + self.start_time = start_time + + def keep_simulating(self): + return self.count < self.n_simulations + + def increment(self): + self.count += 1 + return self.count + + def print_update_status(self, sim_idx): + """Prints a message on the same line as the previous one and replaces + the previous message with the new one, deleting the extra characters + from the previous message. + + Parameters + ---------- + sim_idx : int + Index of the current simulation. + + Returns + ------- + None + """ + average_time = (time() - self.start_time) / (self.count - self.initial_count) + estimated_time = int((self.n_simulations - self.count) * average_time) + + msg = f"Current iteration: {sim_idx:06d}" + msg += f" | Average Time per Iteration: {average_time:.3f} s" + msg += f" | Estimated time left: {estimated_time} s" + + _SimMonitor.reprint(msg, end="\r", flush=True) + + def print_final_status(self): + """Prints the final status of the simulation.""" + print() + msg = f"Completed {self.count - self.initial_count} iterations." + msg += f" In total, {self.count} simulations are exported.\n" + msg += f"Total wall time: {time() - self.start_time:.1f} s" + + _SimMonitor.reprint(msg, end="\n", flush=True) + + @staticmethod + def reprint(msg, end="\n", flush=True): + """ + Prints a message on the same line as the previous one and replaces the + previous message with the new one, deleting the extra characters from + the previous message. + + Parameters + ---------- + msg : str + Message to be printed. + end : str, optional + String appended after the message. Default is a new line. + flush : bool, optional + If True, the output is flushed. Default is True. + + Returns + ------- + None + """ + padding = "" + + if len(msg) < _SimMonitor._last_print_len: + padding = " " * (_SimMonitor._last_print_len - len(msg)) + + print(msg + padding, end=end, flush=flush) + + _SimMonitor._last_print_len = len(msg) diff --git a/rocketpy/stochastic/stochastic_model.py b/rocketpy/stochastic/stochastic_model.py index c82232fcb..de478111c 100644 --- a/rocketpy/stochastic/stochastic_model.py +++ b/rocketpy/stochastic/stochastic_model.py @@ -40,7 +40,7 @@ class StochasticModel: "ensemble_member", ] - def __init__(self, obj, **kwargs): + def __init__(self, obj, seed=None, **kwargs): """ Initialize the StochasticModel class with validated input arguments. @@ -48,6 +48,9 @@ def __init__(self, obj, **kwargs): ---------- obj : object The main object of the class. + seed : int, optional + Seed for the random number generator. The default is None so that + a new ``numpy.random.Generator`` object is created. **kwargs : dict Dictionary of input arguments for the class. Valid argument types include tuples, lists, ints, floats, or None. Arguments will be @@ -63,9 +66,24 @@ def __init__(self, obj, **kwargs): self.obj = obj self.last_rnd_dict = {} + self.__stochastic_dict = kwargs + self._set_stochastic(seed) + + def _set_stochastic(self, seed=None): + """Set the stochastic attributes from the input dictionary. + This method is useful to reset or reseed the attributes of the instance. + + Parameters + ---------- + seed : int, optional + Seed for the random number generator. + """ + self.__random_number_generator = np.random.default_rng(seed) + self.last_rnd_dict = {} # TODO: This code block is too complex. Refactor it. - for input_name, input_value in kwargs.items(): + # TODO: Resetting a instance should not require re-validation. + for input_name, input_value in self.__stochastic_dict.items(): if input_name not in self.exception_list: attr_value = None if input_value is not None: @@ -159,14 +177,18 @@ def _validate_tuple_length_two(self, input_name, input_value, getattr=getattr): # is the standard deviation, and the second item is the distribution # function. In this case, the nominal value will be taken from the # object passed. - dist_func = get_distribution(input_value[1]) + dist_func = get_distribution(input_value[1], self.__random_number_generator) return (getattr(self.obj, input_name), input_value[0], dist_func) else: # if second item is an int or float, then it is assumed that the # first item is the nominal value and the second item is the # standard deviation. The distribution function will be set to # "normal". - return (input_value[0], input_value[1], get_distribution("normal")) + return ( + input_value[0], + input_value[1], + get_distribution("normal", self.__random_number_generator), + ) def _validate_tuple_length_three(self, input_name, input_value, getattr=getattr): # pylint: disable=redefined-builtin,unused-argument """ @@ -200,7 +222,7 @@ def _validate_tuple_length_three(self, input_name, input_value, getattr=getattr) f"'{input_name}': Third item of tuple must be a string containing the " "name of a valid numpy.random distribution function." ) - dist_func = get_distribution(input_value[2]) + dist_func = get_distribution(input_value[2], self.__random_number_generator) return (input_value[0], input_value[1], dist_func) def _validate_list(self, input_name, input_value, getattr=getattr): # pylint: disable=redefined-builtin @@ -255,7 +277,7 @@ def _validate_scalar(self, input_name, input_value, getattr=getattr): # pylint: return ( getattr(self.obj, input_name), input_value, - get_distribution("normal"), + get_distribution("normal", self.__random_number_generator), ) def _validate_factors(self, input_name, input_value): @@ -320,13 +342,19 @@ def _validate_tuple_factor(self, input_name, factor_tuple): ) if len(factor_tuple) == 2: - return (factor_tuple[0], factor_tuple[1], get_distribution("normal")) + return ( + factor_tuple[0], + factor_tuple[1], + get_distribution("normal", self.__random_number_generator), + ) elif len(factor_tuple) == 3: assert isinstance(factor_tuple[2], str), ( f"'{input_name}`: Third item of tuple must be a string containing " "the name of a valid numpy.random distribution function" ) - dist_func = get_distribution(factor_tuple[2]) + dist_func = get_distribution( + factor_tuple[2], self.__random_number_generator + ) return (factor_tuple[0], factor_tuple[1], dist_func) def _validate_list_factor(self, input_name, factor_list): diff --git a/rocketpy/stochastic/stochastic_rocket.py b/rocketpy/stochastic/stochastic_rocket.py index 5f29c7f6f..224262ff1 100644 --- a/rocketpy/stochastic/stochastic_rocket.py +++ b/rocketpy/stochastic/stochastic_rocket.py @@ -145,6 +145,11 @@ def __init__( # TODO: mention that these factors are validated differently self._validate_1d_array_like("power_off_drag", power_off_drag) self._validate_1d_array_like("power_on_drag", power_on_drag) + self.motors = Components() + self.aerodynamic_surfaces = Components() + self.rail_buttons = Components() + self.parachutes = [] + self.__components_map = {} super().__init__( obj=rocket, radius=radius, @@ -162,10 +167,53 @@ def __init__( center_of_mass_without_motor=center_of_mass_without_motor, coordinate_system_orientation=None, ) - self.motors = Components() - self.aerodynamic_surfaces = Components() - self.rail_buttons = Components() - self.parachutes = [] + + def _set_stochastic(self, seed=None): + """Set the stochastic attributes for Components, positions and + inputs. + + Parameters + ---------- + seed : int, optional + Seed for the random number generator. + """ + super()._set_stochastic(seed) + self.aerodynamic_surfaces = self.__reset_components( + self.aerodynamic_surfaces, seed + ) + self.motors = self.__reset_components(self.motors, seed) + self.rail_buttons = self.__reset_components(self.rail_buttons, seed) + for parachute in self.parachutes: + parachute._set_stochastic(seed) + + def __reset_components(self, components, seed): + """Creates a new Components whose stochastic structures + and their positions are reset. + + Parameters + ---------- + components : Components + The components which contains the stochastic structure that + will be used to create the new components. + seed : int, optional + Seed for the random number generator. + + Returns + ------- + new_components : Components + A components whose stochastic structure and position match the + input component but are reset. Ideally, it should replace the + input component. + """ + new_components = Components() + for stochastic_obj, _ in components: + stochastic_obj_position_info = self.__components_map[stochastic_obj] + stochastic_obj._set_stochastic(seed) + new_components.add( + stochastic_obj, + self._validate_position(stochastic_obj, stochastic_obj_position_info), + ) + return new_components def add_motor(self, motor, position=None): """Adds a stochastic motor to the stochastic rocket. If a motor is @@ -195,6 +243,7 @@ def add_motor(self, motor, position=None): motor = StochasticSolidMotor(solid_motor=motor) elif isinstance(motor, GenericMotor): motor = StochasticGenericMotor(generic_motor=motor) + self.__components_map[motor] = position self.motors.add(motor, self._validate_position(motor, position)) def _add_surfaces(self, surfaces, positions, type_, stochastic_type, error_message): @@ -221,6 +270,7 @@ def _add_surfaces(self, surfaces, positions, type_, stochastic_type, error_messa raise AssertionError(error_message) if isinstance(surfaces, type_): surfaces = stochastic_type(component=surfaces) + self.__components_map[surfaces] = positions self.aerodynamic_surfaces.add( surfaces, self._validate_position(surfaces, positions) ) @@ -334,6 +384,7 @@ def set_rail_buttons( ) if isinstance(rail_buttons, RailButtons): rail_buttons = StochasticRailButtons(rail_buttons=rail_buttons) + self.__components_map[rail_buttons] = lower_button_position self.rail_buttons.add( rail_buttons, self._validate_position(rail_buttons, lower_button_position) ) @@ -358,7 +409,6 @@ def _validate_position(self, validated_object, position): ValueError If the position argument does not conform to the specified formats. """ - if isinstance(position, tuple): return self._validate_tuple( "position", diff --git a/rocketpy/tools.py b/rocketpy/tools.py index 9962e9442..91428d50b 100644 --- a/rocketpy/tools.py +++ b/rocketpy/tools.py @@ -235,7 +235,7 @@ def bilinear_interpolation(x, y, x1, x2, y1, y2, z11, z12, z21, z22): ) / ((x2 - x1) * (y2 - y1)) -def get_distribution(distribution_function_name): +def get_distribution(distribution_function_name, random_number_generator=None): """Sets the distribution function to be used in the monte carlo analysis. Parameters @@ -243,24 +243,31 @@ def get_distribution(distribution_function_name): distribution_function_name : string The type of distribution to be used in the analysis. It can be 'uniform', 'normal', 'lognormal', etc. + random_number_generator : np.random.Generator, optional + The random number generator to be used. If None, the default generator + ``numpy.random.default_rng`` is used. Returns ------- np.random distribution function The distribution function to be used in the analysis. """ + if random_number_generator is None: + random_number_generator = np.random.default_rng() + + # Dictionary mapping distribution names to RNG methods distributions = { - "normal": np.random.normal, - "binomial": np.random.binomial, - "chisquare": np.random.chisquare, - "exponential": np.random.exponential, - "gamma": np.random.gamma, - "gumbel": np.random.gumbel, - "laplace": np.random.laplace, - "logistic": np.random.logistic, - "poisson": np.random.poisson, - "uniform": np.random.uniform, - "wald": np.random.wald, + "normal": random_number_generator.normal, + "binomial": random_number_generator.binomial, + "chisquare": random_number_generator.chisquare, + "exponential": random_number_generator.exponential, + "gamma": random_number_generator.gamma, + "gumbel": random_number_generator.gumbel, + "laplace": random_number_generator.laplace, + "logistic": random_number_generator.logistic, + "poisson": random_number_generator.poisson, + "uniform": random_number_generator.uniform, + "wald": random_number_generator.wald, } try: return distributions[distribution_function_name] diff --git a/tests/integration/test_monte_carlo.py b/tests/integration/test_monte_carlo.py index 51d8bfae9..48e47a6e2 100644 --- a/tests/integration/test_monte_carlo.py +++ b/tests/integration/test_monte_carlo.py @@ -10,7 +10,8 @@ @pytest.mark.slow -def test_monte_carlo_simulate(monte_carlo_calisto): +@pytest.mark.parametrize("parallel", [False, True]) +def test_monte_carlo_simulate(monte_carlo_calisto, parallel): """Tests the simulate method of the MonteCarlo class. Parameters @@ -19,20 +20,22 @@ def test_monte_carlo_simulate(monte_carlo_calisto): The MonteCarlo object, this is a pytest fixture. """ # NOTE: this is really slow, it runs 10 flight simulations - monte_carlo_calisto.simulate(number_of_simulations=10, append=False) + monte_carlo_calisto.simulate( + number_of_simulations=10, append=False, parallel=parallel + ) assert monte_carlo_calisto.num_of_loaded_sims == 10 assert monte_carlo_calisto.number_of_simulations == 10 - assert monte_carlo_calisto.filename == "monte_carlo_test" - assert monte_carlo_calisto.error_file == "monte_carlo_test.errors.txt" - assert monte_carlo_calisto.output_file == "monte_carlo_test.outputs.txt" + assert str(monte_carlo_calisto.filename.name) == "monte_carlo_test" + assert str(monte_carlo_calisto.error_file.name) == "monte_carlo_test.errors.txt" + assert str(monte_carlo_calisto.output_file.name) == "monte_carlo_test.outputs.txt" assert np.isclose( - monte_carlo_calisto.processed_results["apogee"][0], 4711, rtol=0.15 + monte_carlo_calisto.processed_results["apogee"][0], 4711, rtol=0.2 ) assert np.isclose( monte_carlo_calisto.processed_results["impact_velocity"][0], -5.234, - rtol=0.15, + rtol=0.2, ) os.remove("monte_carlo_test.errors.txt") os.remove("monte_carlo_test.outputs.txt")