.. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_reliability_sensitivity_reliability_plot_probability_simulation_parametrization.py: Parametrization of a simulation algorithm ========================================= In this example we are going to parameterize a simulation algorithm: - parameters linked to the number of points generated - the precision of the probability estimator - the sample storage strategy - using callbacks to monitor progress and stopping criteria. .. code-block:: default from __future__ import print_function import openturns as ot import openturns.viewer as viewer from matplotlib import pylab as plt ot.Log.Show(ot.Log.NONE) Create the joint distribution of the parameters. .. code-block:: default distribution_R = ot.LogNormalMuSigma(300.0, 30.0, 0.0).getDistribution() distribution_F = ot.Normal(75e3, 5e3) marginals = [distribution_R, distribution_F] distribution = ot.ComposedDistribution(marginals) Create the model. .. code-block:: default model = ot.SymbolicFunction(['R', 'F'], ['R-F/(pi_*100.0)']) Create the event whose probability we want to estimate. .. code-block:: default vect = ot.RandomVector(distribution) G = ot.CompositeRandomVector(model, vect) event = ot.ThresholdEvent(G, ot.Less(), 0.0) Create a Monte Carlo algorithm. .. code-block:: default experiment = ot.MonteCarloExperiment() algo = ot.ProbabilitySimulationAlgorithm(event, experiment) Criteria 1: Define the Maximum Coefficient of variation of the probability estimator. .. code-block:: default algo.setMaximumCoefficientOfVariation(0.05) Criteria 2: Define the number of iterations of the simulation. .. code-block:: default algo.setMaximumOuterSampling(int(1e4)) The block size parameter represents the number of samples evaluated per iteration, useful for parallelization. .. code-block:: default algo.setBlockSize(2) HistoryStrategy to store the values of the probability used to draw the convergence graph. Null strategy .. code-block:: default algo.setConvergenceStrategy(ot.Null()) # Full strategy algo.setConvergenceStrategy(ot.Full()) # Compact strategy: N points N = 1000 algo.setConvergenceStrategy(ot.Compact(N)) Use a callback to display the progress every 10%. .. code-block:: default def progress(p): if p >= progress.t: progress.t += 10.0 print('progress=', p, '%') return False progress.t = 10.0 algo.setProgressCallback(progress) Use a callback to stop the simulation. .. code-block:: default def stop(): # here we never stop, but we could return False algo.setStopCallback(stop) .. code-block:: default algo.run() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none progress= 10.0 % progress= 20.0 % progress= 30.0 % progress= 40.0 % progress= 50.0 % progress= 60.0 % progress= 70.0 % progress= 80.0 % Retrieve results. .. code-block:: default result = algo.getResult() probability = result.getProbabilityEstimate() print('Pf=', probability) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none Pf= 0.03252214870472134 .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 0.035 seconds) .. _sphx_glr_download_auto_reliability_sensitivity_reliability_plot_probability_simulation_parametrization.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_probability_simulation_parametrization.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_probability_simulation_parametrization.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_