Exemplo n.º 1
0
 def test_DrawSampleMultidimensional(self):
     problem = otbenchmark.ReliabilityProblem33()
     event = problem.getEvent()
     sampleSize = 500
     drawEvent = otbenchmark.DrawEvent(event)
     # Avoid failing on CircleCi
     # _tkinter.TclError: no display name and no $DISPLAY environment variable
     try:
         _ = drawEvent.drawSample(sampleSize)
     except Exception as e:
         print(e)
    def test_ReliabilityBenchmarkProblem33(self):
        problem = otb.ReliabilityProblem33()
        print(problem)

        # Check probability
        pf = problem.getProbability()
        pf_exacte = 0.00257
        np.testing.assert_allclose(pf, pf_exacte, rtol=1.0e-15)

        # Check function
        event = problem.getEvent()
        function = event.getFunction()
        X = [0.0, 0.0, 0.0]
        Y = function(X)
        assert type(Y) is ot.Point
        np.testing.assert_allclose(Y[0], 3)
Exemplo n.º 3
0
 def test_DrawLimitStateMultidimensional(self):
     problem = otbenchmark.ReliabilityProblem33()
     event = problem.getEvent()
     inputVector = event.getAntecedent()
     distribution = inputVector.getDistribution()
     alpha = 1.0 - 1.0e-2
     (
         bounds,
         marginalProb,
     ) = distribution.computeMinimumVolumeIntervalWithMarginalProbability(alpha)
     # bounds
     drawEvent = otbenchmark.DrawEvent(event)
     # Avoid failing on CircleCi
     # _tkinter.TclError: no display name and no $DISPLAY environment variable
     try:
         _ = drawEvent.drawLimitState(bounds)
     except Exception as e:
         print(e)
    def test_CrossCutFunction(self):
        problem = otbenchmark.ReliabilityProblem33()
        event = problem.getEvent()
        g = event.getFunction()
        inputVector = event.getAntecedent()
        distribution = inputVector.getDistribution()

        alpha = 1 - 0.00001
        (
            bounds,
            marginalProb,
        ) = distribution.computeMinimumVolumeIntervalWithMarginalProbability(
            alpha)

        referencePoint = distribution.getMean()
        crossCut = otbenchmark.CrossCutFunction(g, referencePoint)
        try:
            _ = crossCut.draw(bounds)
        except Exception as e:
            print(e)
    def test_UseCase(self):
        problem = otb.ReliabilityProblem33()
        event = problem.getEvent()

        # Create a Monte Carlo algorithm
        experiment = ot.MonteCarloExperiment()
        algo = ot.ProbabilitySimulationAlgorithm(event, experiment)
        algo.setMaximumCoefficientOfVariation(0.05)
        algo.setMaximumOuterSampling(int(1e3))
        algo.run()

        # Retrieve results
        result = algo.getResult()
        computed_pf = result.getProbabilityEstimate()
        exact_pf = problem.getProbability()
        print("exact_pf=", exact_pf)
        print("computed_pf=", computed_pf)
        samplesize = result.getOuterSampling() * result.getBlockSize()
        print("Sample size : ", samplesize)
        atol = 1.0 / np.sqrt(samplesize)
        np.testing.assert_allclose(computed_pf, exact_pf, atol=atol)
Exemplo n.º 6
0
def ReliabilityBenchmarkProblemList():
    """
    Returns the list of reliability benchmark problems.

    Returns
    -------
    problems : list
        A list of ReliabilityProblem.
    """
    p8 = otb.ReliabilityProblem8()
    p14 = otb.ReliabilityProblem14()
    p22 = otb.ReliabilityProblem22()
    p24 = otb.ReliabilityProblem24()
    p25 = otb.ReliabilityProblem25()
    p28 = otb.ReliabilityProblem28()
    p31 = otb.ReliabilityProblem31()
    p33 = otb.ReliabilityProblem33()
    p35 = otb.ReliabilityProblem35()
    p38 = otb.ReliabilityProblem38()
    p53 = otb.ReliabilityProblem53()
    p55 = otb.ReliabilityProblem55()
    p54 = otb.ReliabilityProblem54()
    p57 = otb.ReliabilityProblem57()
    p75 = otb.ReliabilityProblem75()
    p89 = otb.ReliabilityProblem89()
    p107 = otb.ReliabilityProblem107()
    p110 = otb.ReliabilityProblem110()
    p111 = otb.ReliabilityProblem111()
    p63 = otb.ReliabilityProblem63()
    p91 = otb.ReliabilityProblem91()
    p60 = otb.ReliabilityProblem60()
    p77 = otb.ReliabilityProblem77()
    pFBS = otb.FourBranchSerialSystemReliability()
    pRS = otb.RminusSReliability()
    pBeam = otb.AxialStressedBeamReliability()
    problemslist = [
        p8,
        p14,
        p22,
        p24,
        p25,
        p28,
        p31,
        p33,
        p35,
        p38,
        p53,
        p55,
        p54,
        p57,
        p75,
        p89,
        p107,
        p110,
        p111,
        p63,
        p91,
        p60,
        p77,
        pFBS,
        pRS,
        pBeam,
    ]
    return problemslist