Reliability Engineering & Maintenance Optimization
Preventive Age vs Block Replacement Renewal Cost Formula
Compare Barlow-Proschan Age Replacement C(T)/mu(T) against Block Replacement (c_p + c_f*M(T))/T and Run-to-Failure cost rates for increasing-hazard Erlang-2 lifetimes.
Why preventive maintenance requires an increasing hazard rate — and Age beats Block!
Preventive replacement (cost c_p < emergency failure cost c_f) NEVER pays for constant-hazard exponential components, because a brand-new unit is no safer than a used one! Under an increasing-failure-rate (IFR) Erlang-2 lifetime with stage rate lambda > 0 (survival R(T) = (1 + lambda*T) * EXP(-lambda*T), mean life 2 / lambda, exact renewal function M(T) = 0.5*lambda*T - 0.25*(1 - EXP(-2*lambda*T))), Barlow and Proschan’s (1965) Renewal Reward Theorem gives exact long-run cost per hour for Age Replacement g_age(T) = (c_f - (c_f - c_p)*R(T)) / ((2 - (2 + lambda*T)*EXP(-lambda*T)) / lambda) and Block Replacement g_block(T) = (c_p + c_f * M(T)) / T!
Verify on bearing stage rate lambda = 0.10 / kh (B2 -> mean life = 20 kh), preventive swap c_p = 200 (B3), emergency breakdown c_f = 1,000 (B4), and interval T = 10 kh (B5 -> lambda*T = 1.0): Run-to-Failure costs 1,000 / 20 = 50.0000 / kh; Block Replacement every 10 kh (with M(10) = 0.2838 expected mid-cycle failures) drops cost to 48.3834 / kh; and Age Replacement at age 10 kh (resetting the clock upon any early failure so young bearings are never wasted!) achieves g_age(10) = 45.8959 / kh!
| Maintenance Policy (lam=0.10, c_p=200, c_f=1,000, T=10) | Renewal Cost Formula | Long-Run Cost / kh |
|---|---|---|
| Run-to-Failure (No PM) | (lambda / 2) * c_f | 50.0000 / kh |
| Scheduled Block Replacement | (c_p + c_f * M(T)) / T | 48.3834 / kh |
| Component Age Replacement | C_age(T) / mu_age(T) | 45.8959 / kh (Lowest!) |
Barlow-Proschan Erlang-2 Age-Replacement Cost Rate g_age(T) Formula
Validate lambda > 0, 0 < c_p < c_f, and preventive replacement age T > 0.
=LET(lam_r, B2, cp_m, B3, cf_m, B4, t_pm, B5, IF(OR(lam_r <= 0, cp_m <= 0, cf_m <= cp_m, t_pm <= 0), "Require 0 < c_p < c_f and T > 0", LET(lt_v, lam_r * t_pm, ex_1, EXP(-lt_v), r_surv, (1 + lt_v) * ex_1, c_cyc, cf_m - (cf_m - cp_m) * r_surv, mu_cyc, (2 - (2 + lt_v) * ex_1) / lam_r, ROUND(c_cyc / mu_cyc, 4))))Erlang-2 Block-Replacement Cost Rate (c_p + c_f * M(T)) / T Formula
Use the exact closed-form Erlang-2 renewal function M(T) = 0.5 * lambda * T - 0.25 * (1 - EXP(-2 * lambda * T)) to capture multiple failures within [0, T].
=LET(lam_r, B2, cp_m, B3, cf_m, B4, t_pm, B5, IF(OR(lam_r <= 0, cp_m <= 0, cf_m <= cp_m, t_pm <= 0), "Require 0 < c_p < c_f and T > 0", LET(lt_v, lam_r * t_pm, m_ren, 0.5 * lt_v - 0.25 * (1 - EXP(-2 * lt_v)), ROUND((cp_m + cf_m * m_ren) / t_pm, 4))))Try the example
Use the original values or change them to test your understanding.