1#! /usr/bin/env python 2 3from __future__ import print_function 4import openturns as ot 5ot.TESTPREAMBLE() 6 7levelFunction = ot.SymbolicFunction( 8 ["x1", "x2", "x3", "x4"], ["x1+2*x2-3*x3+4*x4"]) 9# Add a finite difference gradient to the function, as Abdo Rackwitz algorithm 10# needs it 11myGradient = ot.NonCenteredFiniteDifferenceGradient( 12 1e-7, levelFunction.getEvaluation()) 13print("myGradient = ", repr(myGradient)) 14# Substitute the gradient 15levelFunction.setGradient( 16 ot.NonCenteredFiniteDifferenceGradient(myGradient)) 17startingPoint = [0.0] * 4 18algo = ot.AbdoRackwitz(ot.NearestPointProblem(levelFunction, 3.0)) 19algo.setStartingPoint(startingPoint) 20algo.run() 21print("result = ", algo.getResult()) 22 23levelFunction = ot.SymbolicFunction( 24 ["x1", "x2", "x3", "x4"], ["x1*cos(x1)+2*x2*x3-3*x3+4*x3*x4"]) 25# Add a finite difference gradient to the function, as Abdo Rackwitz algorithm 26# needs it 27myGradient = ot.NonCenteredFiniteDifferenceGradient( 28 1e-7, levelFunction.getEvaluation()) 29print("myGradient = ", repr(myGradient)) 30# Substitute the gradient 31levelFunction.setGradient( 32 ot.NonCenteredFiniteDifferenceGradient(myGradient)) 33startingPoint = [0.0] * 4 34algo = ot.AbdoRackwitz(ot.NearestPointProblem(levelFunction, -0.5)) 35algo.setStartingPoint(startingPoint) 36print("myalgorithm=", repr(algo)) 37algo.run() 38print("result = ", algo.getResult()) 39print("evaluation calls number=", levelFunction.getEvaluationCallsNumber()) 40print("gradient calls number=", levelFunction.getGradientCallsNumber()) 41print("hessian calls number=", levelFunction.getHessianCallsNumber()) 42