|
|
|
@ -84,7 +84,7 @@ def get_corrective_cost_time_chart(material_cost: float, service_cost: float, da
|
|
|
|
daily_failure_rate = np.clip(daily_failure_rate, 0, None) # Ensure failure rate is non-negative
|
|
|
|
daily_failure_rate = np.clip(daily_failure_rate, 0, None) # Ensure failure rate is non-negative
|
|
|
|
|
|
|
|
|
|
|
|
# Calculate cumulative failures
|
|
|
|
# Calculate cumulative failures
|
|
|
|
failure_counts = np.cumsum(daily_failure_rate, axis=1)
|
|
|
|
failure_counts = np.cumsum(daily_failure_rate)
|
|
|
|
|
|
|
|
|
|
|
|
# Calculate corrective costs based on cumulative failures and combined costs
|
|
|
|
# Calculate corrective costs based on cumulative failures and combined costs
|
|
|
|
cost_per_failure = material_cost + service_cost
|
|
|
|
cost_per_failure = material_cost + service_cost
|
|
|
|
@ -244,11 +244,7 @@ async def create_calculation_result_service(
|
|
|
|
|
|
|
|
|
|
|
|
calculation_data = await get_calculation_data_by_id(db_session=db_session, calculation_id=calculation.id)
|
|
|
|
calculation_data = await get_calculation_data_by_id(db_session=db_session, calculation_id=calculation.id)
|
|
|
|
|
|
|
|
|
|
|
|
overhaul_cost_points = get_overhaul_cost_by_time_chart(
|
|
|
|
|
|
|
|
calculation_data.parameter.overhaul_cost,
|
|
|
|
|
|
|
|
days=days,
|
|
|
|
|
|
|
|
numEquipments=len(equipments)
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Store results for each equipment
|
|
|
|
# Store results for each equipment
|
|
|
|
@ -265,6 +261,12 @@ async def create_calculation_result_service(
|
|
|
|
numEquipments=len(equipments)
|
|
|
|
numEquipments=len(equipments)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
overhaul_cost_points = get_overhaul_cost_by_time_chart(
|
|
|
|
|
|
|
|
calculation_data.parameter.overhaul_cost,
|
|
|
|
|
|
|
|
days=days,
|
|
|
|
|
|
|
|
numEquipments=len(equipments)
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
# Calculate individual equipment optimum points
|
|
|
|
# Calculate individual equipment optimum points
|
|
|
|
equipment_total_cost = corrective_costs + overhaul_cost_points
|
|
|
|
equipment_total_cost = corrective_costs + overhaul_cost_points
|
|
|
|
equipment_optimum_index = np.argmin(equipment_total_cost)
|
|
|
|
equipment_optimum_index = np.argmin(equipment_total_cost)
|
|
|
|
|