|
|
|
|
@ -191,10 +191,10 @@ class OptimumCostModelWithSpareparts:
|
|
|
|
|
|
|
|
|
|
if ecs:
|
|
|
|
|
is_trip = 1 if ecs.get("Diskripsi Operasional Akibat Equip. Failure") == "Trip" else 0
|
|
|
|
|
is_series = 0 if not birnbaum_importance else math.floor(birnbaum_importance)
|
|
|
|
|
if is_trip:
|
|
|
|
|
downtime = ecs.get("Estimasi Waktu Maint. / Downtime / Gangguan (Jam)")
|
|
|
|
|
monthly_risk_cost_per_failure = 660 * 1000000 * is_trip * downtime
|
|
|
|
|
print("ECS Trip", location_tag, monthly_risk_cost_per_failure)
|
|
|
|
|
monthly_risk_cost_per_failure = 660 * 1000000 * is_trip * downtime * is_series
|
|
|
|
|
|
|
|
|
|
for month_key in months:
|
|
|
|
|
data = failures_prediction[month_key]
|
|
|
|
|
@ -206,6 +206,7 @@ class OptimumCostModelWithSpareparts:
|
|
|
|
|
for i in range(num_months):
|
|
|
|
|
month_index = i + 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Basic failure and preventive costs
|
|
|
|
|
failure_cost = (failure_counts[i] * (failure_replacement_cost + monthly_risk_cost_per_failure))
|
|
|
|
|
preventive_cost_month = preventive_cost / month_index
|
|
|
|
|
@ -345,7 +346,7 @@ class OptimumCostModelWithSpareparts:
|
|
|
|
|
try:
|
|
|
|
|
importance_results = await self.get_simulation_results(simulation_id)
|
|
|
|
|
equipment_birnbaum = {
|
|
|
|
|
imp['aeros_node']['node_name']: imp['contribution']
|
|
|
|
|
imp['aeros_node']['node_name']: imp['contribution_factor']
|
|
|
|
|
for imp in importance_results["calc_result"]
|
|
|
|
|
}
|
|
|
|
|
except Exception as e:
|
|
|
|
|
@ -373,12 +374,12 @@ class OptimumCostModelWithSpareparts:
|
|
|
|
|
|
|
|
|
|
for equipment in equipments:
|
|
|
|
|
location_tag = equipment.location_tag
|
|
|
|
|
birnbaum = equipment_birnbaum.get(location_tag, 0.0)
|
|
|
|
|
contribution_factor = equipment_birnbaum.get(location_tag, 0.0)
|
|
|
|
|
ecs = ecs_tags.get(location_tag, None)
|
|
|
|
|
|
|
|
|
|
# try:
|
|
|
|
|
# # Get failure predictions
|
|
|
|
|
monthly_data = await self.get_failures_prediction(simulation_id, location_tag, birnbaum)
|
|
|
|
|
monthly_data = await self.get_failures_prediction(simulation_id, location_tag, contribution_factor)
|
|
|
|
|
|
|
|
|
|
if not monthly_data:
|
|
|
|
|
continue
|
|
|
|
|
@ -389,7 +390,7 @@ class OptimumCostModelWithSpareparts:
|
|
|
|
|
|
|
|
|
|
cost_results = self._calculate_equipment_costs_with_spareparts(
|
|
|
|
|
failures_prediction=monthly_data,
|
|
|
|
|
birnbaum_importance=birnbaum,
|
|
|
|
|
birnbaum_importance=contribution_factor,
|
|
|
|
|
preventive_cost=equipment_preventive_cost,
|
|
|
|
|
failure_replacement_cost=failure_replacement_cost,
|
|
|
|
|
location_tag=location_tag,
|
|
|
|
|
|