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