Source code for gemseo_umdo.statistics.multilevel.mlmc.level

# Copyright 2021 IRT Saint Exupéry, https://www.irt-saintexupery.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License version 3 as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
r"""A level $\ell$ for the MLMC algorithm."""
from __future__ import annotations

from dataclasses import dataclass

from gemseo.core.mdofunctions.mdo_function import MDOFunction


[docs]@dataclass class Level: r"""A level $\ell$ for the MLMC algorithm.""" model: MDOFunction r"""The model $f_\ell$ to sample. This model can be set from any callable taking a NumPy array of float numbers as input and outputting either a float number or a NumPy array of float numbers. """ cost: float | None = None r"""The cost $\mathcal{C}_\ell$ to evaluate $f_\ell$, if known.""" n_cost_estimation_samples: int = 1 r"""The number of $f_\ell$ calls to estimate $\mathcal{C}_\ell$. It will be used only if ``cost`` is ``None``. """ n_initial_samples: int = 10 r"""The number of samples $n_\ell$ at the first iteration of the algorithm.""" sampling_ratio: float = 2.0 r"""The number $r_\ell$ by which $n_\ell$ is increased.""" def __post_init__(self) -> None: self.model = MDOFunction(self.model, "f")