MC_IS_system: Monte-Carlo Importance Sampling for a system of limit-state...

View source: R/mc_is_system.R

MC_IS_systemR Documentation

Monte-Carlo Importance Sampling for a system of limit-state functions

Description

Monte-Carlo Importance Sampling for a system of limit-state functions

Usage

MC_IS_system(
  lsf,
  lDistr,
  cov_user = 0.05,
  n_batch,
  n_max,
  use_threads,
  sys_type,
  dataRecord = TRUE,
  beta_l,
  densityType,
  dps = NULL,
  debug.level = 0,
  streams = NULL,
  libPaths_local = .libPaths(),
  seed = NULL,
  backend = "future",
  adaptive_alpha = FALSE,
  alpha_update_rate = 0.1,
  adaptive_batch = FALSE,
  batch_control = list(),
  min_adapt_samples = 10000,
  alpha_min = 0.02,
  stability_mode = c("robust", "fast")
)

Arguments

lsf

Objective (limit state) function in form function(x) { ... }.

lDistr

List of input variable distributions created from TesiproV base variable objects.

cov_user

Target coefficient of variation for convergence criterion.

n_batch

Number of samples per batch (recommended > 1000).

n_max

Maximum total number of samples before forced stop.

use_threads

Number of threads/workers to use for parallel computation.

sys_type

Either "parallel" (default) or "serial"

dataRecord

Logical; if 'TRUE', all intermediate results are recorded and returned as data frame.

beta_l

Optional threshold for reliability index screening. Limit-state functions with \beta > beta_l may be excluded from mixture construction in system analysis.

densityType

Character; type of sampling density ("origin" keeps original input distributions).

dps

Optional vector of design points supplied by user instead of FORM result.

debug.level

Integer verbosity level: 0 = silent, 1 = info, 2 = detailed output during calculation.

streams

RNG stream object created by ['init_rng_master()'].

libPaths_local

Local library paths passed to cluster workers for package availability.

seed

Optional integer seed for reproducibility across parallel runs. If 'NULL', a random seed is used.

backend

Character; either '"parallel"' or '"future"' backend for parallelization on multiple cores.

adaptive_alpha

Logical; if TRUE, adaptive mixture weights are used (system case only).

alpha_update_rate

Damping factor \lambda \in [0,1] controlling adaptation speed of mixture weights.

adaptive_batch

Logical; if TRUE, the batch size is adapted dynamically based on the current effective sample size (ESS) and target RSE.

batch_control

List controlling adaptive batch behaviour:

n_min

Minimum batch size

n_max

Maximum batch size

K_future

Desired number of remaining iterations

min_adapt_samples

Integer. Minimum total number of MC samples required before adaptive mixtures are updated. The adaption mechanism is activated only after this threshold has been exceeded to ensure statistically stable estimates.

alpha_min

Numeric scalar in (0,1). Lower bound for mixture weights \alpha_i during adaptive updating. This prevents individual components of the importance sampling density from collapsing to zero and ensures numerical stability in multimodal system analyses.

stability_mode

Character string specifying the numerical stabilization strategy used for importance sampling weight accumulation.

"robust"

Default. Uses full log-domain accumulation of weights across Monte Carlo iterations. This improves numerical stability for high-dimensional systems and very small failure probabilities.

"fast"

Uses shifted exponentiation with batch-level scaling. Computationally equivalent under normal engineering conditions but may be slightly less stable in extreme rare-event scenarios.

Both modes are mathematically equivalent for typical reliability problems. The "robust" mode is recommended for research applications and extreme reliability levels.

Details

The failure probability is estimated with the standard importance sampling estimator \hat{p}_f = n^{-1} \sum_i I_i w_i with w = \varphi(u) / h(u), where h is a mixture of unit-variance normal densities centred at the proposal points. I_i = 1 if g_k(x_i) < 0 for at least one component (serial) or for all components (parallel), otherwise I_i = 0. The coefficient of variation is derived from the sample variance of I w.

  • Serial systems: the component design points (FORM) are the centres. If they are close and nearly parallel, a single shift at their mean is used.

  • Parallel systems: the design point of the joint failure domain \max_i g_i < 0 is used as the main centre (weight 0.7). The component design points are kept as a defensive part of the mixture.

The returned ESS is the effective number of failure samples (\sum I w)^2 / \sum (I w)^2. The argument stability_mode no longer influences the result because all sums are accumulated in the log domain.


TesiproV documentation built on Oct. 28, 2026, 5:13 p.m.