SubsetInverseSampling¶
- class otrobopt.SubsetInverseSampling(*args)¶
Subset inverse simulation.
The goal is to estimate the threshold of the following target probability :
The idea of the subset simulation method is to replace simulating a rare failure event in the original probability space by a sequence of simulations of more frequent conditional events
:
The original probability estimate rewrites :
And each conditional subset failure region is chosen by setting the threshold
so that
leads to a conditional failure probability of order
:
The conditional samples are generated by the means of Markov Chains, using the Metropolis Hastings algorithm.
being the number of simulations per subset, and
the conditional probability of each subset event, and
the autocorrelation between Markov chain samples.
The first event
not being conditional,
expresses as the classic Monte Carlo c.o.v.
- Parameters:
- event
RandomVector Event we are computing the probability of. The threshold of the event is not used.
- targetProbabilityfloat
The wanted final probability.
- proposalRangefloat, optional
Proposal range length
- conditionalProbabilityfloat, optional
Value of
between successive steps
- event
Methods
drawProbabilityConvergence(*args)Draw the probability convergence at a given level.
Accessor to the block size.
Accessor to the object's name.
Coefficient of variation per step accessor.
Conditional probability accessor.
Accessor to the convergence strategy.
getEvent()Accessor to the event.
Input sample accessor.
Output sample accessor.
Autocorrelation accessor.
All input sample accessor.
Accessor to the maximum coefficient of variation.
Accessor to the maximum iterations number.
Accessor to the maximum standard deviation.
Accessor to the maximum duration.
getName()Accessor to the object's name.
Subset steps number accesor.
All output sample accessor.
Probability estimate accessor.
Proposal range length accessor.
Accessor to the results.
Final target probability accessor.
Threshold coefficient of variation per step accessor.
getThresholdConfidenceLength(*args)Accessor to the confidence length of the threshold.
Threshold accessor.
hasName()Test if the object is named.
run()Run the algorithm.
setBetaMin(betaMin)Exclusion hypersphere radius accessor.
setBlockSize(blockSize)Accessor to the block size.
setConditionalProbability(conditionalProbability)Conditional probability accessor.
setConvergenceStrategy(convergenceStrategy)Accessor to the convergence strategy.
setISubset(iSubset)Conditional simulation activation accessor.
setKeepEventSample(keepEventSample)Sample storage accessor.
Accessor to the maximum coefficient of variation.
setMaximumOuterSampling(maximumOuterSampling)Accessor to the maximum iterations number.
Accessor to the maximum standard deviation.
setMaximumTimeDuration(maximumTimeDuration)Accessor to the maximum duration.
setName(name)Accessor to the object's name.
setProgressCallback(*args)Set up a progress callback.
setProposalRange(proposalRange)Proposal range length accessor.
setStopCallback(*args)Set up a stop callback.
setTargetProbability(targetProbability)Final target probability accessor.
See also
Examples
>>> import openturns as ot >>> import otrobopt
>>> ot.RandomGenerator.SetSeed(0)
Create a performance function with an associated distribution.
>>> limitState = ot.SymbolicFunction(['u1', 'u2'], ['u1-u2']) >>> dim = limitState.getInputDimension() >>> mean = ot.Point([7., 2.]) >>> sigma = ot.Point(dim, 1.0) >>> R = ot.IdentityMatrix(dim) >>> distribution = ot.Normal(mean, sigma, R) >>> vect = ot.RandomVector(distribution) >>> output = ot.CompositeRandomVector(limitState, vect)
Create an event with a fictional threshold value which will not be used.
>>> event = ot.ThresholdEvent(output, ot.Less(), 0.)
Define the target probability for which the threshold will be computed.
>>> targetProbability = 0.0002 >>> algo = otrobopt.SubsetInverseSampling(event, targetProbability) >>> algo.setMaximumOuterSampling(10000) >>> algo.run()
Get some results.
>>> result = algo.getResult() >>> pf = result.getProbabilityEstimate() >>> threshold = algo.getThresholdPerStep()[-1] >>> threshold_cl = algo.getThresholdConfidenceLength(0.90)
- __init__(*args)¶
- drawProbabilityConvergence(*args)¶
Draw the probability convergence at a given level.
- Parameters:
- levelfloat, optional
The probability convergence is drawn at this given confidence length level. By default level is 0.95.
- Returns:
- grapha
Graph probability convergence graph
- grapha
- getBlockSize()¶
Accessor to the block size.
- Returns:
- blockSizeint
Number of simultaneous evaluations of the limit-state function. It is set by default to 1.
- getClassName()¶
Accessor to the object’s name.
- Returns:
- class_namestr
The object class name (object.__class__.__name__).
- getCoefficientOfVariationPerStep()¶
Coefficient of variation per step accessor.
- Returns:
- coef
openturns.Point Coefficient of variation at each subset step.
- coef
- getConditionalProbability()¶
Conditional probability accessor.
Value of
between successive steps.
- Returns:
- probfloat
Conditional probability value.
- getConvergenceStrategy()¶
Accessor to the convergence strategy.
- Returns:
- storage_strategy
HistoryStrategy Storage strategy used to store the values of the probability estimator and its variance during the simulation algorithm.
- storage_strategy
- getEvent()¶
Accessor to the event.
- Returns:
- event
RandomVector Event we want to evaluate the probability.
- event
- getEventInputSample()¶
Input sample accessor.
- Returns:
- inputSample
openturns.Sample Input sample.
- inputSample
- getEventOutputSample()¶
Output sample accessor.
- Returns:
- outputSample
openturns.Sample Ouput sample.
- outputSample
- getGammaPerStep()¶
Autocorrelation accessor.
- Returns:
- gamma
openturns.Point Autocorrelation values at each subset step.
- gamma
- getInputSample()¶
All input sample accessor.
- Returns:
- inputSample
openturns.Sample Input sample.
- inputSample
- getMaximumCoefficientOfVariation()¶
Accessor to the maximum coefficient of variation.
- Returns:
- coefficientfloat
Maximum coefficient of variation of the simulated sample.
- getMaximumOuterSampling()¶
Accessor to the maximum iterations number.
- Returns:
- outerSamplingint
Maximum number of iterations, each iteration performing a block of evaluations.
- getMaximumStandardDeviation()¶
Accessor to the maximum standard deviation.
- Returns:
- sigmafloat,
Maximum standard deviation of the estimator.
- sigmafloat,
- getMaximumTimeDuration()¶
Accessor to the maximum duration.
- Returns:
- maximumTimeDurationfloat
Maximum optimization duration in seconds.
- getName()¶
Accessor to the object’s name.
- Returns:
- namestr
The name of the object.
- getNumberOfSteps()¶
Subset steps number accesor.
- Returns:
- nint
Number of subset steps.
- getOutputSample()¶
All output sample accessor.
- Returns:
- outputSample
openturns.Sample Output sample.
- outputSample
- getProbabilityEstimatePerStep()¶
Probability estimate accessor.
- Returns:
- prob
openturns.Point Probability estimate values.
- prob
- getProposalRange()¶
Proposal range length accessor.
- Returns:
- rangefloat
Range length.
- getResult()¶
Accessor to the results.
- Returns:
- results
SimulationResult Structure containing all the results obtained after simulation and created by the method
run().
- results
- getTargetProbability()¶
Final target probability accessor.
Value of
.
- Returns:
- probfloat
Final target probability value.
- getThresholdCoefficientOfVariationPerStep()¶
Threshold coefficient of variation per step accessor.
- Returns:
- coef
openturns.Point Coefficient of variation at each subset step.
- coef
- getThresholdConfidenceLength(*args)¶
Accessor to the confidence length of the threshold.
- Parameters:
- levelfloat,
Confidence level. By default, it is
.
- levelfloat,
- Returns:
- confidenceLengthfloat
Length of the confidence interval at the confidence level level.
- getThresholdPerStep()¶
Threshold accessor.
- Returns:
- threshold
openturns.Point Threshold values.
- threshold
- hasName()¶
Test if the object is named.
- Returns:
- hasNamebool
True if the name is not empty.
- run()¶
Run the algorithm.
Launches the subset inverse simulation. The result can be retrieved with
getResult().
- setBetaMin(betaMin)¶
Exclusion hypersphere radius accessor.
- Parameters:
- betafloat
Radius of the exclusion hypersphere when the conditional simulation is activated.
- setBlockSize(blockSize)¶
Accessor to the block size.
- Parameters:
- blockSizeint,
Number of simultaneous evaluations of the limit-state function. It is set by default to 1.
- blockSizeint,
Notes
If the function supports batch evaluations this parameter can be set to the number of available CPUs to benefit from parallel execution (multithreading, multiprocessing, …); except for the Directional Sampling, where we recommend to set it to 1. It also decides the frequency of the stopping criteria and progress callbacks update as they are called once the whole block of function evaluations is completed.
- setConditionalProbability(conditionalProbability)¶
Conditional probability accessor.
Value of
between successive steps.
- Parameters:
- probfloat
Conditional probability value.
- setConvergenceStrategy(convergenceStrategy)¶
Accessor to the convergence strategy.
- Parameters:
- storage_strategy
HistoryStrategy Storage strategy used to store the values of the probability estimator and its variance during the simulation algorithm.
- storage_strategy
- setISubset(iSubset)¶
Conditional simulation activation accessor.
- Parameters:
- isubsetbool
Whether to activate the conditional simulation for the first step.
- setKeepEventSample(keepEventSample)¶
Sample storage accessor.
- Parameters:
- probbool
Whether to keep the event samples.
- setMaximumCoefficientOfVariation(maximumCoefficientOfVariation)¶
Accessor to the maximum coefficient of variation.
- Parameters:
- coefficientfloat
Maximum coefficient of variation of the simulated sample.
- setMaximumOuterSampling(maximumOuterSampling)¶
Accessor to the maximum iterations number.
- Parameters:
- outerSamplingint
Maximum number of iterations, each iteration performing a block of evaluations.
- setMaximumStandardDeviation(maximumStandardDeviation)¶
Accessor to the maximum standard deviation.
- Parameters:
- sigmafloat,
Maximum standard deviation of the estimator.
- sigmafloat,
- setMaximumTimeDuration(maximumTimeDuration)¶
Accessor to the maximum duration.
- Parameters:
- maximumTimeDurationfloat
Maximum optimization duration in seconds.
- setName(name)¶
Accessor to the object’s name.
- Parameters:
- namestr
The name of the object.
- setProgressCallback(*args)¶
Set up a progress callback.
Can be used to programmatically report the progress of a simulation.
- Parameters:
- callbackcallable
Takes a float as argument as percentage of progress.
Examples
>>> import sys >>> import openturns as ot >>> experiment = ot.MonteCarloExperiment() >>> X = ot.RandomVector(ot.Normal()) >>> Y = ot.CompositeRandomVector(ot.SymbolicFunction(['X'], ['1.1*X']), X) >>> event = ot.ThresholdEvent(Y, ot.Less(), -2.0) >>> algo = ot.ProbabilitySimulationAlgorithm(event, experiment) >>> algo.setMaximumOuterSampling(100) >>> algo.setMaximumCoefficientOfVariation(-1.0) >>> def report_progress(progress): ... sys.stderr.write('-- progress=' + str(progress) + '%\n') >>> algo.setProgressCallback(report_progress) >>> algo.run()
- setProposalRange(proposalRange)¶
Proposal range length accessor.
- Parameters:
- rangefloat
Range length.
- setStopCallback(*args)¶
Set up a stop callback.
Can be used to programmatically stop a simulation.
- Parameters:
- callbackcallable
Returns an int deciding whether to stop or continue.
- setTargetProbability(targetProbability)¶
Final target probability accessor.
Value of
.
- Parameters:
- probfloat
Final target probability value.
otrobopt