Hi Anita,
As the computations are done in the standard space, the standard limit state 
function is the composition of the physical space function (f(x,y)=x+y) and the 
inverse isoprobabilistic transformation. As your input distribution is Gaussian 
(Gaussian marginals and Gaussian copula), this transformation is linear, hence 
the standard limit state function is linear and the finite difference gradient 
is exact (no approximation).
The isoprobabilistic transformation used in OpenTURNS is based on the Cholesky 
factor of the covariance matrix of the standard representative of the copula, 
which is somewhat arbitrary as explained in 
https://www.sciencedirect.com/science/article/pii/S0266892009000307 or in 
https://tel.archives-ouvertes.fr/tel-00913510 (title in French but content in 
English), Chapter 5, Section 4.
This transformation corresponds to the identity function if the correlation is 
zero (independence in the Gaussian copula case) and to a linear transformation 
in which u_1 depends only on x and u_2 on both x and y, where u_1 and u_2 are 
the standard space coordinates. It corresponds to a choice of conditioning 
order of the corresponding Rosenblatt transformation. As a result, the standard 
space design point is not on the first diagonal, which has no influence on the 
reliability index and the FORM approximation (which is exact here) of the event 
probability. IMO the importance factors in standard space have no immediate 
meaning in the case of dependent inputs.
I join a script to illustrate the case.
Best regards
Régis






    Le jeudi 31 mai 2018 à 10:26:41 UTC+2, Anita Laera <[email protected]> a 
écrit :  
 
 Hi,
I want to correctly use the correlation coefficients in the FORM analysis I am 
performing using Abdo-Rackwitz algorithm.

To study their effect, I have considered an elementary case with two variables 
both normally distributed with mean equal to 0 and standard deviation equal to 
1.
In this way, if not correlated, they are transformed to two variables with mean 
equal to 0 and standard deviation equal to 1 in the standard space.

The limit state function is of the type y = variable_1 + variable_2 and the 
threshold is set to 10.

This is an extremely simple case with the only purpose of understanding how the 
correlation works.

I have set the gradient step size equal to 1 for both variables and I am using 
a centered finite difference gradient.

In the case of independent variables, starting from the mean point (0, 0), 4 
evaluations are performed to compute the gradient:

1 - var_1 = 1, var_2 = 0 (both in physical and standard space), y = 1
2 - var_1 = -1, var_2 = 0 (both in physical and standard space), y = -1
3 - var_1 = 0, var_2 = 1 (both in physical and standard space), y = 1
4 - var_1 = 0, var_2 = -1 (both in physical and standard space), y = -1

The first point of the line search is in (5, 5) (for both physical and standard 
space). I can determine this based on the gradient [1, 1] and on the value of 
lambda equal to -5.

If I correlate the two variables by specifying a CorrelationMatrix with 
coefficient of correlation equal to 0.5 and assigned a NormalCopula to the 
correlation matrix, I obtain (after the calculation in the mean point):

1 - var_1 = 1, var_2 = 0 (physical space), var_1 = 1 var_2 = -0.57735 (standard 
space), y = 1
2 - var_1 = -1, var_2 = 0 (physical space), var_1 = -1 var_2 = 0.57735 
(standard space), y = -1
3 - var_1 = 0, var_2 = 1 (physical space), var_1 = 0 var_2 = 1.1547 (standard 
space), y = 1
4 - var_1 = 0, var_2 = -1 (physical space), var_1 = 0 var_2 = -1.1547 (standard 
space), y = -1

The first point of the line search is in (5, 5) for the physical space, 
corresponding to (5, 2.8867) in the standard space.

I can't determine how the gradient, and then the first point for the line 
search, is calculated.

Could you please help me with this?

-- 

 Anita Laera, Researcher
      Plaxis bv | Competence Centre Geo-Engineering
 P.O. Box 572 |  2600 AN Delft | The Netherlands
 Tel: +31 (0)15 251 7720 | Fax: +31 (0)15 2573 107  



Follow us: _______________________________________________
OpenTURNS users mailing list
[email protected]
http://openturns.org/mailman/listinfo/users
  
import openturns as ot

# Correlated inputs if rho != 0
rho = 0.5
R = ot.CorrelationMatrix(2, [1.0, rho, rho, 1.0])
d = ot.ComposedDistribution([ot.Normal()]*2, ot.NormalCopula(R))
T = d.getIsoProbabilisticTransformation()
Tinv = d.getInverseIsoProbabilisticTransformation()
print("T=", T)
print("Tinv=", Tinv)

f = ot.SymbolicFunction(["x", "y"], ["x + y"])
gradient = ot.CenteredFiniteDifferenceGradient([1.0]*2, f.getEvaluation())
f.setGradient(gradient)
X = ot.UsualRandomVector(d)
starting_point = X.getMean()
print("starting point=", starting_point)

Y = ot.CompositeRandomVector(f, X)
E = ot.Event(Y, ot.Greater(), 10.0)
optim = ot.AbdoRackwitz()
algo = ot.FORM(optim, E, starting_point)
algo.run()
u_star = algo.getResult().getStandardSpaceDesignPoint()
print("u_star=", u_star)
x_star = algo.getResult().getPhysicalSpaceDesignPoint()
print("x_star=", x_star)

# Gradient computation
# Limit state function in standard space
h = ot.ComposedFunction(f, Tinv)
print("h=", h)
print("h(u_star)=", h(u_star))
print("f(x_star)=", f(x_star))
print("grad_h(u_star)=", h.gradient(u_star))
print("grad_f(x_star)=", f.gradient(x_star))
_______________________________________________
OpenTURNS users mailing list
[email protected]
http://openturns.org/mailman/listinfo/users

Reply via email to