# Updated Equipment Acquisition & Simulation Algorithm This document outlines the refactored logic for equipment acquisition cost calculation and simulation forecasting, implemented in February 2026. ## 1. Timeline Definitions The simulation follows a strict temporal alignment to ensure consistency across the fleet: | Parameter | Value | Description | | :--- | :--- | :--- | | **Base Year** | `2015` | The target year for all "Value of Money" (Net Present Value) calculations. | | **Forecasting Start** | `2015` | The year from which future predictions and Economic Life reports begin. | | **Calculation Start** | `2014` | The technical sequence start ($seq = 0$) used to establish an initial state. | --- ## 2. Capital Cost Adjustment (Value of Money) To account for the time value of money, both the **Initial Acquisition Cost** and the **Replacement Cost** are normalized to the **2015 Base Year** using the project's inflation rate. ### 2.1 Adjustment Formula The value of any cost $V$ at a specific $Year$ is adjusted to its equivalent value in $2015$ using the following formula: $$V_{2015} = \frac{V_{Year}}{(1 + r)^{(Year - 2015)}}$$ Where: - $V_{2015}$ = Adjusted value in 2015 terms. - $V_{Year}$ = Raw cost recorded in the database or Maximo. - $r$ = Inflation rate (from `lcc_ms_master`, defaults to $0.05$ if undefined). - $Year$ = The year the cost was recorded ($Y_{acq}$ or $Y_{replace}$). ### 2.2 Total Acquisition Cost The total capital cost $C_{total}$ stored in the master data is the sum of the adjusted initial cost and the adjusted first detected replacement cost: $$C_{total} = \frac{C_{initial}}{(1+r)^{(Y_{acq} - 2015)}} + \frac{C_{replace}}{(1+r)^{(Y_{replace} - 2015)}}$$ --- ## 3. Maintenance Cost Suppression Logic A specific business rule is applied to prevent "double counting" or distorted maintenance records during major equipment replacement years: ### 3.1 Replacement Year Rule In the **first year** where a `replace_cost > 0` is detected in Maximo ($Y_{replace}$): - All **Material Costs** are set to $0.0$. - All **Labor Costs** (and labor hours) are set to $0.0$. ### 3.2 Logic Rationale The replacement cost is treated as a capital expenditure (CAPEX) that restarts the equipment's life cycle. Standard maintenance (OPEX) for that specific year is ignored because the replacement action supersedes regular repair tasks. --- ## 4. Implementation Reference The logic is primarily contained in: - `src/equipment/service.py`: `check_and_update_acquisition_data()` (Cost adjustments). - `src/modules/equipment/insert_actual_data.py`: `query_data()` (Timeline and cost suppression).