Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Il existe une grande variété de méthodes de simulation géostatistique. Pour les regrouper, on peut proposer la subdivision suivante :

Dans la suite, nous examinerons quelques-unes de ces méthodes.

Méthode de simulation matricielle (LU, décomposition de Cholesky)

Cette méthode est simple à programmer et efficace pour simuler de petits champs. Elle permet de réaliser facilement des simulations conditionnelles comme non-conditionnelles.


Simulations non-conditionnelles

Soit nn points à simuler, pour lesquels on souhaite générer une réalisation d’un champ aléatoire dont la covariance est C(h)C(h). On commence par construire la matrice de covariance KK de taille n×nn \times n en évaluant la covariance entre chaque point de simulation. Cette matrice est donc similaire à celle utilisée pour le krigeage simple, mais elle est ici construite à partir des points à simuler plutôt que des points observés.

Une fois la matrice KK obtenue, on procède à sa décomposition de Cholesky :

K=LU,ouˋL=UTK = L U, \quad \text{où} L = U^{T}

LL est une matrice triangulaire inférieure.

On génère ensuite nn valeurs indépendantes yiN(0,1)y_i \sim \mathcal{N}(0,1) pour i=1,,ni=1,\dots,n, qui forment le vecteur gaussien centré réduit y\mathbf{y}.

La réalisation simulée est alors donnée par :

z=Ly\mathbf{z} = L \mathbf{y}

Cette réalisation possède bien la covariance souhaitée, puisque :

Cov[z]=Cov[Ly]=LCov[y]LT=LILT=LLT=K\operatorname{Cov}[\mathbf{z}] = \operatorname{Cov}[L \mathbf{y}] = L \operatorname{Cov}[\mathbf{y}] L^T = L I L^T = L L^T = K

Ainsi, le vecteur simulé z\mathbf{z} est une réalisation non conditionnelle du champ gaussien de covariance C(h)C(h).

Simulations conditionnelles

Le principe de la simulation conditionnelle est similaire à celui de la simulation non conditionnelle, mais l’on distingue cette fois deux ensembles de points :

On commence par construire la matrice de covariance globale KK de taille (N+n)×(N+n)(N + n) \times (N + n), en plaçant d’abord les NN points conditionnants, puis les nn points à simuler. Sur cette matrice, on effectue la décomposition de Cholesky :

K=LLT=[L110L21L22][L11TL21T0L22T].K = L L^{T} = \begin{bmatrix} L_{11} & 0 \\ L_{21} & L_{22} \end{bmatrix} \begin{bmatrix} L_{11}^{T} & L_{21}^{T} \\ 0 & L_{22}^{T} \end{bmatrix}.

Ici, on divise la matrice triangulaire LL issue de la décomposition de Cholesky en trois blocs destinés au conditionnement. Le bloc L11L_{11} correspond aux points conditionnants, le bloc L22L_{22} aux points à simuler, et le bloc L21L_{21} décrit la liaison entre ces deux groupes. Cette structure permet de séparer clairement la contribution des observations de celle de la variabilité aléatoire.

Pour imposer un conditionnement exact, on doit déterminer le vecteur y1\mathbf{y}_1 tel que :

z1=L11y1\mathbf{z}_1 = L_{11} \mathbf{y}_1

z1\mathbf{z}_1 est le vecteur des NN observations. On obtient directement :

y1=L111z1\mathbf{y}_1 = L_{11}^{-1}\mathbf{z}_1

On génère ensuite un vecteur aléatoire y2Rn\mathbf{y}_2 \in \mathbb{R}^n composé de variables indépendantes suivant N(0,1)\mathcal{N}(0,1).

La simulation complète s’écrit alors :

[z1z2]=[L110L21L22][y1y2]=[L11y1L21y1+L22y2]\begin{bmatrix} \mathbf{z}_1 \\ \mathbf{z}_2 \end{bmatrix} = \begin{bmatrix} L_{11} & 0 \\ L_{21} & L_{22} \end{bmatrix} \begin{bmatrix} \mathbf{y}_1 \\ \mathbf{y}_2 \end{bmatrix} = \begin{bmatrix} L_{11}\,\mathbf{y}_1 \\ L_{21}\,\mathbf{y}_1 + L_{22}\,\mathbf{y}_2 \end{bmatrix}

Comme les valeurs observées z1\mathbf{z}_1 sont connues, et que l’on peut déduire y1\mathbf{y}_1, seule la partie simulée varie d’une réalisation à l’autre :

z2=L21y1+L22y2\mathbf{z}_2 = L_{21} \mathbf{y}_1 + L_{22} \mathbf{y}_2

Enfin, remarquez que le terme L21y1L_{21}\mathbf{y}_1 est constant pour toutes les réalisations conditionnelles : il n’a donc à être calculé qu’une seule fois, ce qui accélère considérablement la génération de simulations conditionnelles.

Cette méthode est particulièrement efficace, car elle ne requiert qu’une seule inversion de matrice — celle de L11L_{11} — pour traiter l’ensemble des réalisations. Une fois cette étape effectuée, les simulations additionnelles sont produites très rapidement et à faible coût computationnel. Sa principale limitation est la mémoire : la taille totale (N+n)(N + n) reste limitée à quelques milliers de points, faute de quoi la matrice KK devient trop volumineuse pour être stockée ou factorisée. De plus, KK doit être non singulière pour permettre la décomposition de Cholesky, ce qui signifie notamment que les points à simuler ne doivent pas coïncider exactement avec les points observés.

D’autres décompositions sont possibles pour générer les simulations, notamment celles fondées sur les valeurs propres et les vecteurs propres de KK, mais la décomposition de Cholesky demeure l’approche la plus efficace dans les cas où elle est applicable.


Méthode de simulation séquentielle gaussienne (SGS)

La méthode SGS est une méthode de simulation conditionnelle, le cas non conditionnel n’étant qu’une situation particulière où aucune donnée n’est imposée. Le principe général consiste à simuler les valeurs séquentiellement, point par point, en utilisant à chaque étape une distribution conditionnelle dérivée du krigeage simple (KS). Cette distribution, gaussienne, sert alors à tirer aléatoirement une valeur au point considéré.

Supposons que l’on dispose de NN points conditionnants, décrits par une covariance C(h)C(h), et que l’on souhaite simuler nn points inconnus dans un domaine. L’algorithme commence par :

  1. Générer un ordre aléatoire (souvent appelé chemin de simulation) pour visiter successivement les nn points à simuler. Cet ordre importe, car chaque valeur simulée devient immédiatement une nouvelle donnée conditionnante pour les étapes suivantes.

  2. À partir de cet ordre aléatoire, parcourir les points un par un et, pour chaque point xix_i, considérer comme données conditionnantes l’ensemble des valeurs déjà disponibles soit les NN observations initiales, ainsi que les valeurs simulées aux points x1,,xi1{x_1, \dots, x_{i-1}}.

  3. Effectuer un krigeage simple au point xix_i, à l’aide du modèle de covariance (ou variogramme) spécifié.

    Le krigeage simple fournit :

    • La valeur krigée (espérance conditionnelle) :

      Zi=E[Z(xi)donneˊes connues]Z_i^* = E[Z(x_i) \mid \text{données connues}]
    • La variance de krigeage (variance conditionnelle) :

      σk2=Var[Z(xi)donneˊes connues]\sigma_k^2 = \operatorname{Var}[Z(x_i) \mid \text{données connues}]

      Ces deux quantités définissent la distribution gaussienne locale à partir de laquelle sera tirée la valeur simulée.

  4. **Simuler la valeur au point xix_i ** en tirant un nombre aléatoire selon la loi normale conditionnelle obtenue :

    Z(xi)N(Zi,σk2)Z(x_i) \sim \mathcal{N}(Z_i^*, \sigma_k^2)
  5. Ajouter immédiatement la valeur simulée Z(xi)Z(x_i) à l’ensemble des données conditionnantes. Elle influencera donc le krigeage simple des points suivants, ce qui confère à la méthode son caractère pleinement conditionnel et séquentiel.

  6. Répéter les étapes 2 à 5 jusqu’à ce que tous les points du chemin de simulation aient été visités, ce qui fournit une réalisation complète compatible avec les valeurs observées, le modèle spatial (variogramme) et la distribution gaussienne imposée.

Remarques importantes

Il est important de rappeler que, dans la méthode SGS, la taille des systèmes de krigeage augmente progressivement, car le nombre de points connus — comprenant à la fois les points conditionnants initiaux et les points déjà simulés — s’accroît à chaque étape du processus. Pour éviter que les calculs ne deviennent trop lourds, on restreint généralement le krigeage à une fenêtre locale de voisinage, tirant parti de l’effet d’écran : les points éloignés ont peu d’influence sur l’estimation et peuvent être ignorés sans perte significative de précision.

Lorsque le modèle de covariance inclut un effet de pépite, un traitement particulier s’impose. Dans le cas non conditionnel, il est préférable d’ajouter cet effet après la simulation, sous forme d’un bruit indépendant de variance C0C_0, afin de ne pas perturber la structure spatiale simulée. En revanche, dans le cas conditionnel, une telle correction n’est pas possible, car les observations incluent déjà l’effet de pépite et doivent être reproduites exactement. Certains modèles de covariance, comme les modèles sphériques ou gaussiens, peuvent d’ailleurs être plus difficiles à reproduire fidèlement dans un cadre séquentiel.

L’ordre de visite des points joue également un rôle non négligeable. Un parcours systématique, par exemple selon une direction fixe, peut créer des artefacts ou induire une anisotropie artificielle dans la réalisation. C’est pourquoi il est recommandé d’utiliser un ordre aléatoire, et même, pour améliorer la qualité des simulations, de procéder en plusieurs passes : une première passe aléatoire sur une maille plus grossière permettant de capturer les grandes structures, suivie d’une ou de plusieurs passes aléatoires sur des mailles plus fines pour affiner progressivement la réalisation. Cette stratégie multi-échelle permet souvent d’obtenir des simulations plus réalistes et exemptes d’effets directionnels artificiels.

Démonstration que la méthode SGS fournit les bons variogrammes (ou covariogrammes)

On utilise un argument inductif : supposons que nn points ont été simulés par la méthode SGS et qu’ils possèdent la bonne structure spatiale (covariogramme). Nous montrons que cela implique que, à l’étape n+1n+1, les n+1n+1 points simulés auront aussi la bonne structure.

Soit ZnsZ_{ns} un vecteur n×1n \times 1 contenant les nn variables aléatoires simulées aux nn points déjà simulés. On suppose que leur covariance est la bonne, c’est-à-dire :

Cov[Zns,Zns]=Knn\operatorname{Cov}[Z_{ns}, Z_{ns}'] = K_{nn}

Étape n+1n+1 : krigeage et simulation

La valeur krigée au point n+1n+1 s’écrit :

Zn+1=λTZnsZ_{n+1}^* = \lambda^T Z_{ns}

λ=Knn1Kn1\lambda = K_{nn}^{-1} K_{n1}

avec Kn1K_{n1} la covariance entre les nn points déjà simulés et le point n+1n+1.

La méthode SGS simule la valeur au point n+1n+1 selon :

Zn+1=Zn+1+eZ_{n+1} = Z_{n+1}^* + e

ee est un bruit d’erreur indépendant, de moyenne nulle et de variance σk2\sigma_k^2.

Calcul des covariances

On calcule la covariance entre le point n+1n+1 simulé et les points déjà simulés :

Cov[Zn+1,Zns]=Cov[Zn+1+e,Zns]=Cov[λTZns,Zns]+Cov[e,Zns]=λTCov[Zns,Zns]+0=λTKnn=Kn1\begin{aligned} \operatorname{Cov}[Z_{n+1}, Z_{ns}] &= \operatorname{Cov}[Z_{n+1}^* + e, Z_{ns}] \\ &= \operatorname{Cov}[\lambda^T Z_{ns}, Z_{ns}] + \operatorname{Cov}[e, Z_{ns}] \\ &= \lambda^T \operatorname{Cov}[Z_{ns}, Z_{ns}] + 0 \\ &= \lambda^T K_{nn} \\ &= K_{n1} \end{aligned}

ce qui correspond bien à la covariance souhaitée.

De plus, la variance au point n+1n+1 vaut :

Var[Zn+1]=Var[Zn+1+e]=Var[λTZns]+Var[e]=λTKnnλ+σk2=K11\begin{aligned} \operatorname{Var}[Z_{n+1}] &= \operatorname{Var}[Z_{n+1}^* + e] \\ &= \operatorname{Var}[\lambda^T Z_{ns}] + \operatorname{Var}[e] \\ &= \lambda^T K_{nn} \lambda + \sigma_k^2 \\ &= K_{11} \end{aligned}

ce qui correspond aussi à la variance de la fonction de covariance à simuler.

Notes importantes

L’algorithme SGS repose sur l’utilisation de distributions conditionnelles, ce qui rend l’hypothèse de normalité particulièrement commode : si la variable ZZ est gaussienne, alors le krigeage simple fournit exactement les paramètres (moyenne et variance) de la loi conditionnelle de Z(xi)Z(x_i) donnée l’information disponible. Toutefois, la démonstration par induction présentée précédemment ne dépend pas de la normalité de ZZ. Elle utilise uniquement les propriétés linéaires du krigeage simple, et non le fait que celui-ci corresponde à une loi conditionnelle gaussienne exacte. L’algorithme reste donc valide même si la variable n’est pas strictement gaussienne.

Dans ce cadre, il est tout à fait possible de simuler un bruit ee de moyenne nulle et de variance σk2\sigma_k^2 sans imposer qu’il soit normal. Le variogramme cible sera alors correctement reproduit. En revanche, l’histogramme des valeurs simulées aura tendance à devenir plus « normal » que celui des données initiales. Cela s’explique par le fait que la valeur krigée est une combinaison linéaire de nombreuses observations, ce qui, par un argument proche du théorème central limite, tire naturellement les distributions vers une forme plus gaussienne.

Enfin, il est très simple de combiner l’algorithme SGS avec la méthode matricielle LU présentée dans la section précédente. Cette combinaison permet notamment de simuler simultanément plusieurs variables corrélées en de multiples points, tout en respectant les relations de covariance entre variables. Cela ouvre la voie à des simulations multivariées plus complexes et plus réalistes.


Méthode de recuit simulé

La méthode du recuit simulé (simulated annealing) est une technique d’optimisation extrêmement flexible, largement utilisée en simulation géostatistique lorsqu’il faut reproduire non seulement les moments d’ordre 1 ou 2 (histogramme, variogramme), mais également des caractéristiques plus complexes du phénomène.

Principe général

Le principe consiste à définir une fonction objectif que l’on cherche à minimiser. Cette fonction mesure l’écart entre la réalisation simulée et les propriétés que l’on souhaite lui imposer. Un exemple classique consiste à minimiser la différence entre :

La fonction objectif peut être enrichie pour intégrer d’autres contraintes, par exemple :

Il existe de nombreuses variantes de la méthode, qui diffèrent selon la manière dont la fonction objectif est formulée, les contraintes qu’elle inclut et la stratégie utilisée pour explorer l’espace des solutions. Cette grande flexibilité fait du recuit simulé une approche particulièrement adaptée lorsqu’aucune méthode géostatistique classique (telle que SGS ou les simulations matricielles) ne permet de satisfaire simultanément toutes les contraintes imposées.

Algorithme de recuit simulé

  1. Initialisation :
    On tire aléatoirement une valeur pour chaque point à simuler en respectant l’histogramme désiré.
    On place ensuite les valeurs conditionnantes (points observés) dans le champ.
    On calcule le variogramme expérimental avec toutes ces valeurs.
    On évalue la fonction objectif OO qui combine la distance entre le variogramme expérimental et le modèle théorique, ainsi que la différence entre l’histogramme simulé et l’histogramme attendu.

  2. Itération :
    i) On tire au hasard un point du champ.

    • Si c’est un point conditionnant, on ne change rien.

    • Sinon, on tire une nouvelle valeur zz' selon une distribution globale (par exemple, l’histogramme cible).
      On calcule la nouvelle valeur de la fonction objectif Oi+1O_{i+1}.

    ii) On décide d’accepter ou non cette nouvelle valeur selon la règle :

    p=exp(Oi+1OiT)p = \exp\left(-\frac{O_{i+1} - O_i}{T}\right)


    • TT est la “température” (paramètre contrôlant la probabilité d’acceptation).

    • Si Oi+1<OiO_{i+1} < O_i, on accepte toujours (car p>1p > 1).

    • Sinon, on accepte avec la probabilité pp, sinon on rejette (on remet la valeur précédente).

  3. Refroidissement :
    La température TT diminue lentement au fil des itérations, ce qui réduit progressivement la probabilité d’accepter des solutions moins bonnes.
    Ce mécanisme permet d’échapper aux minima locaux en début d’algorithme et de converger vers un optimum global.

  4. Critère d’arrêt :
    On arrête l’algorithme lorsque la fonction objectif atteint un certain seuil ou après un nombre maximal d’itérations.

Remarques

Il est souvent avantageux d’amorcer le recuit simulé avec une réalisation obtenue par une autre méthode de simulation — par exemple une réalisation SGS ou matricielle — plutôt qu’avec un champ initial entièrement aléatoire. Ce choix permet de réduire le nombre d’itérations nécessaires et d’accélérer la convergence vers une solution satisfaisant les contraintes imposées. La fonction objectif du recuit simulé peut d’ailleurs être enrichie très facilement pour intégrer des contraintes spécifiques au problème étudié, qu’il s’agisse de contraintes géologiques, de relations déterministes, d’exigences sur les proportions, la connectivité ou la variabilité. Cette grande flexibilité constitue l’un des atouts majeurs de la méthode. En contrepartie, le recuit simulé est généralement plus coûteux en temps de calcul que les méthodes matricielles ou séquentielles classiques, car l’algorithme explore un grand nombre de configurations avant d’en accepter une qui minimise suffisamment la fonction objectif.