feature/reliability_stat
Cizz22 3 months ago
parent e83e891f8f
commit 8089dcb9b5

@ -208,7 +208,7 @@ class OptimumCostModel:
data = failures_prediction[month_key]
# Risk cost = flow_rate × birnbaum_importance × downtime_hours × energy_price
monthly_risk = data['avg_flow_rate'] * birnbaum_importance * data['total_oos_hours'] * 1000
monthly_risk = data['avg_flow_rate'] * birnbaum_importance * data['total_oos_hours'] * 1000000
risk_costs.append(monthly_risk)
cumulative_risk += monthly_risk
@ -216,6 +216,8 @@ class OptimumCostModel:
failure_counts.append(data['cumulative_failures'])
raise Exception(cumulative_risk_costs)
# Calculate costs for each month
results = []
@ -621,7 +623,7 @@ class OptimumCostModelWithSpareparts:
for month_key in months:
data = failures_prediction[month_key]
monthly_risk = data['avg_flow_rate'] * birnbaum_importance * data['total_oos_hours'] * 1000
monthly_risk = data['avg_flow_rate'] * birnbaum_importance * data['total_oos_hours'] * 1000000
risk_costs.append(monthly_risk)
cumulative_risk += monthly_risk

@ -500,10 +500,10 @@ class SparepartManager:
recommendations.append({
'type': 'BUDGET_SUMMARY',
'priority': 'INFO',
'message': f'Total sparepart investment: ${total_investment:,.2f}',
'message': f'Total sparepart investment: Rp. {total_investment:,.2f}',
'details': [
f"Existing orders: ${pr_po_summary['total_existing_value']:,.2f}",
f"Additional orders needed: ${pr_po_summary['total_new_orders_value']:,.2f}"
f"Existing orders: Rp. {pr_po_summary['total_existing_value']:,.2f}",
f"Additional orders needed: Rp. {pr_po_summary['total_new_orders_value']:,.2f}"
],
'action': 'Ensure budget allocation for sparepart procurement'
})
@ -559,23 +559,23 @@ class SparepartManager:
if not missing_parts:
if pr_po_summary['existing_orders']:
message = f"All spareparts available through {len(pr_po_summary['existing_orders'])} existing orders"
detailed_message = f"Total existing order value: ${pr_po_summary['total_existing_value']:,.2f}"
detailed_message = f"Total existing order value: Rp. {pr_po_summary['total_existing_value']:,.2f}"
else:
message = "All spareparts available from current stock"
detailed_message = "No additional procurement required"
else:
if critical_missing:
message = f"CRITICAL: {len(critical_missing)} critical spareparts missing. Overhaul cannot proceed."
detailed_message = f"Additional procurement required: ${pr_po_summary['total_new_orders_value']:,.2f}"
detailed_message = f"Additional procurement required: Rp. {pr_po_summary['total_new_orders_value']:,.2f}"
else:
message = f"WARNING: {len(missing_parts)} spareparts missing, but no critical parts."
if pr_po_summary['total_new_orders_value'] > 0:
detailed_message = f"Additional procurement required: ${pr_po_summary['total_new_orders_value']:,.2f}. "
detailed_message = f"Additional procurement required: Rp. {pr_po_summary['total_new_orders_value']:,.2f}. "
else:
detailed_message = ""
if pr_po_summary['existing_orders']:
detailed_message += f"Existing orders cover some requirements (${pr_po_summary['total_existing_value']:,.2f})."
detailed_message += f"Existing orders cover some requirements (Rp. {pr_po_summary['total_existing_value']:,.2f})."
return {
'message': message,

Loading…
Cancel
Save