AgeReplacementPolicy#
- class relife.policy.AgeReplacementPolicy(lifetime_model, cf, cp, discounting_rate=0.0, a0=None, ar=None, ar1=None)[source]#
Age replacement policy.
Behind the scene, a renewal reward stochastic process is used where assets are replaced at a fixed age \(a_r\) with costs \(c_p\) or upon failure with costs \(c_f\) if earlier [1].
- Parameters:
- lifetime_modelany lifetime distribution or frozen lifetime model
A lifetime model representing the durations between events.
- cffloat or 1darray
Costs of failures
- cpfloat or 1darray
Costs of preventive replacements
- discounting_ratefloat, default is 0.
The discounting rate value used in the exponential discounting function
- a0float or 1darray, optional
Current ages of the assets. If it is given, left truncations of
a0
will be take into account for the first cycle.- arfloat or 1darray, optional
Ages of preventive replacements, by default None. If not given, one must call
optimize
to setar
values and access to the rest of the object interface.- ar1float, 2D array, optional
Ages of the first preventive replacements, by default None. If not given, one must call
optimize
to setar
values and access to the rest of the object interface.
- Attributes:
- a0float or 1darray, optional
Current ages of the assets. If it is given, left truncations of
a0
will be take into account for the first cycle.ar
Ages of the preventive replacements
first_cycle_tr
Time before the first replacement
cf
Cost of failures
cp
Cost of preventive replacements
References
[1]Mazzuchi, T. A., Van Noortwijk, J. M., & Kallen, M. J. (2007). Maintenance optimization. Encyclopedia of Statistics in Quality and Reliability, 1000-1008.
Methods
The expected number of annual replacements.
Calculate the asymptotic expected equivalent annual cost.
Calculate the asymptotic expected total cost.
Calculate the expected equivalent annual cost over a given timeline.
The expected number of replacements.
Calculate the expected total cost over a given timeline.
Generate lifetime data
Computes the optimal age(s) of replacement and updates the internal
ar
value(s) and,t optionallyar1
.Renewal data sampling.
- annual_number_of_replacements(nb_years, upon_failure=False, total=True)[source]#
The expected number of annual replacements.
- Parameters:
- nb_yearsint
The number of years on which the annual number of replacements are projected
- upon_failurebool, default is False
If True, it also returns the annual number of replacements due to unexpected failures
- totalbool, default is True
If True, the given numbers of replacements are the sum of all replacements without distinction between assets
- property ar#
Ages of the preventive replacements
- Returns:
- ndarray
- asymptotic_expected_equivalent_annual_cost()[source]#
Calculate the asymptotic expected equivalent annual cost.
It takes into account
discounting_rate
attribute value.The asymptotic expected total cost is:
\[\lim_{t\to\infty} \text{EEAC}(t)\]where \(\text{EEAC}(t)\) is the expected equivalent annual cost at \(t\). See
expected_equivalent_annual_cost()
for more details.- Returns:
- np.ndarray
The asymptotic expected equivalent annual cost.
- asymptotic_expected_total_cost()[source]#
Calculate the asymptotic expected total cost.
It takes into account
discounting_rate
attribute value.The asymptotic expected total cost is:
\[\lim_{t\to\infty} z(t)\]where \(z(t)\) is the expected total cost at \(t\). See
expected_total_cost()
for more details.- Returns:
- np.ndarray
The asymptotic expected total cost.
- property cf#
Cost of failures
- Returns:
- ndarray
- property cp#
Cost of preventive replacements
- Returns:
- ndarray
- expected_equivalent_annual_cost(tf, nb_steps)[source]#
Calculate the expected equivalent annual cost over a given timeline.
It takes into account
discounting_rate
attribute value.The expected equivalent annual cost \(\text{EEAC}(t)\) is given by:
\[\text{EEAC}(t) = \dfrac{\delta z(t)}{1 - e^{-\delta t}}\]where :
\(t\) is the time
\(z(t)\) is the expected_total_cost at \(t\). See
expected_total_cost()
for more details.`.\(\delta\) is the discounting rate.
- Parameters:
- timeline: np.ndarray
Values of the timeline over which the expected equivalent annual cost is to be calculated.
- Returns:
- np.ndarray
The expected equivalent annual cost.
- expected_nb_replacements(tf, nb_steps)#
The expected number of replacements.
It is computed by solving the renewal equation:
\[m(t) = F_1(t) + \int_0^t m(t-x) \mathrm{d}F(x)\]where:
\(m\) is the renewal function,
\(F\) is the cumulative distribution function of the underlying lifetime model,
\(F_1\) is the cumulative distribution function of the underlying lifetime model for the fist renewal in the case of a delayed renewal process.
- Parameters:
- tffloat
Time horizon. The expected number of replacements will be computed up until this calendar time.
- nb_stepsint
The number of steps used to compute the expected number of replacements
- Returns:
- tuple of two ndarrays
A tuple containing the timeline used to compute the expected number of replacements and its corresponding values at each step of the timeline.
- expected_total_cost(tf, nb_steps)[source]#
Calculate the expected total cost over a given timeline.
It takes into account
discounting_rate
attribute value.The expected total cost \(z(t)\) is computed by solving the renewal equation and is given by:
\[z(t) = \mathbb{E}(Z_t) = \int_{0}^{\infty}\mathbb{E}(Z_t~|~X_1 = x)dF(x)\]where :
\(t\) is the time
\(X_i \sim F\) are \(n\) random variable lifetimes, i.i.d., of cumulative distribution \(F\).
\(Z_t\) is the random variable reward at each time \(t\).
\(\delta\) is the discounting rate.
- Parameters:
- timeline: np.ndarray
Values of the timeline over which the expected total cost is to be calculated.
- Returns:
- np.ndarray
The expected total cost.
- property first_cycle_tr#
Time before the first replacement
- Returns:
- ndarray
- generate_lifetime_data(size, tf, t0=0.0, seed=None)#
Generate lifetime data
This function will generate lifetime data that can be used to fit a lifetime model.
- Parameters:
- sizeint
The size of the desired sample.
- tffloat
Time at the end of the observation.
- t0float, default 0
Time at the beginning of the observation.
- seedint, optional
Random seed, by default None.
- Returns:
- A dict of time, event, entry and args (covariates)
- optimize()[source]#
Computes the optimal age(s) of replacement and updates the internal
ar
value(s) and,t optionallyar1
.- Returns:
- Self
Same instance with optimized
ar
(optionnalyar1
).
- sample(size, tf, t0=0.0, seed=None)#
Renewal data sampling.
This function will sample data and encapsulate them in an object.
- Parameters:
- sizeint
The size of the desired sample.
- tffloat
Time at the end of the observation.
- t0float, default 0
Time at the beginning of the observation.
- sizeint or tuple of 2 int
Size of the sample
- seedint, optional
Random seed, by default None.