OneCycleAgeReplacementPolicy#

class relife.policies.OneCycleAgeReplacementPolicy(lifetime_model, cf, cp, discounting_rate=0.0, period_before_discounting=1.0)[source]#

One-cyle age replacement policy.

Asset is replaced at a fixed age \(a_r\) with cost \(c_p\) or it is replaced upon failure with cost \(c_f\).

Note

OneCycleAgeReplacementPolicy differs from AgeReplacementPolicy because only one cycle of replacement is considered.

The object’s methods require the ar attribute to be set either at the instanciation or by calling the optimize method. Otherwise, an error will be raised.

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

References

[1]

Coolen-Schrijner, P., & Coolen, F. P. A. (2006). On optimality criteria for age replacement. Proceedings of the Institution of Mechanical Engineers, Part O: Journal of Risk and Reliability, 220(1), 21-29

Methods

asymptotic_expected_equivalent_annual_cost

The asymtotic expected equivalent annual cost.

asymptotic_expected_net_present_value

The asymtotic expected net present value.

compute_optimal_ar

Compute the optimal ages of replacement.

expected_equivalent_annual_cost

The expected equivalent annual cost.

expected_net_present_value

The expected net present value.

get_cf

Cost of failure.

get_cp

Costs of preventive replacements.

set_cf

set_cp

asymptotic_expected_equivalent_annual_cost(ar, a0=None)[source]#

The asymtotic expected equivalent annual cost.

\[\lim_{t\to\infty} q(t)\]
Parameters:
arfloat or np.ndarray

Preventive ages of replacements.

a0float or np.ndarray, optional

Initial ages of the assets.

Returns:
ndarray

The asymptotic expected values.

asymptotic_expected_net_present_value(ar, a0=None)[source]#

The asymtotic expected net present value.

\[\lim_{t\to\infty} z(t)\]
Parameters:
arfloat or np.ndarray

Preventive ages of replacements.

a0float or np.ndarray, optional

Initial ages of the assets.

Returns:
ndarray

The asymptotic expected values.

compute_optimal_ar()[source]#

Compute the optimal ages of replacement.

The optimal ages of replacement depends one the costs, the discounting rate and the underlying lifetime model.

Returns:
outfloat or np.ndarray

Optimal ages of replacements.

discounting_rate#

Base class of age replacement policies.

expected_equivalent_annual_cost(tf, nb_steps, ar, a0=None)[source]#

The expected equivalent annual cost.

\[q(t) = \dfrac{\delta z(t)}{1 - e^{-\delta t}}\]

where :

  • \(t\) is the time.

  • \(z(t)\) is the expected net present value at time \(t\).

  • \(\delta\) is the discounting rate.

Parameters:
tffloat

The final time.

nb_stepsint

The number of steps used to discretized the time.

arfloat or np.ndarray

Preventive ages of replacements.

a0float or np.ndarray, optional

Initial ages of the assets.

Returns:
tuple of two ndarrays

A tuple containing the timeline and the computed values.

expected_net_present_value(tf, nb_steps, ar, a0=None, total_sum=False)[source]#

The expected net present value.

\[z(t) = \mathbb{E}(Z_t) = \int_{0}^{\infty}\mathbb{E}(Z_t~|~X_1 = x)dF(x)\]

where :

  • \(t\) is the time

  • \(X_1 \sim F\) is the random lifetime of the first asset

  • \(Z_t\) are the random costs at each time \(t\)

  • \(\delta\) is the discounting rate

It is computed by solving the renewal equation.

Parameters:
tffloat

The final time.

nb_stepsint

The number of steps used to discretized the time.

arfloat or np.ndarray

Preventive ages of replacements.

a0float or np.ndarray, optional

Initial ages of the assets.

Returns:
tuple of two ndarrays

A tuple containing the timeline and the computed values.

get_cf()#

Cost of failure.

Returns:
np.ndarray
get_cp()#

Costs of preventive replacements.

Returns:
np.ndarray