fix minor bug

main
Cizz22 11 months ago
parent 355d5bc45b
commit 5b57ff58e6

@ -47,27 +47,7 @@ def get_overhaul_cost_by_time_chart(overhaul_cost: float, days: int,numEquipment
# results = np.where(np.isfinite(results), results, 0) # results = np.where(np.isfinite(results), results, 0)
# return results # return results
# def get_corrective_cost_time_chart(material_cost: float, service_cost: float, days: int) -> Tuple[np.ndarray, np.ndarray]: def get_corrective_cost_time_chart(material_cost: float, service_cost: float, days: int) -> Tuple[np.ndarray, np.ndarray]:
# day_points = np.arange(0, days)
# # Parameters for failure rate
# base_rate = 0.2 # Base failure rate per day
# acceleration = 2.4 # How quickly failure rate increases
# grace_period = 170 # Days before failures start increasing significantly
# # Calculate daily failure rate using sigmoid function
# daily_failure_rate = base_rate / (1 + np.exp(-acceleration * (day_points - grace_period)/days))
# # Calculate cumulative failures
# failure_counts = np.cumsum(daily_failure_rate)
# # Calculate corrective costs based on cumulative failures and combined costs
# cost_per_failure = material_cost + service_cost
# corrective_costs = failure_counts * cost_per_failure
# return corrective_costs, daily_failure_rate
def get_corrective_cost_time_chart(material_cost: float, service_cost: float, days: int, numEquipments: int) -> Tuple[np.ndarray, np.ndarray]:
day_points = np.arange(0, days) day_points = np.arange(0, days)
# Parameters for failure rate # Parameters for failure rate
@ -78,11 +58,9 @@ def get_corrective_cost_time_chart(material_cost: float, service_cost: float, da
# Calculate daily failure rate using sigmoid function # Calculate daily failure rate using sigmoid function
daily_failure_rate = base_rate / (1 + np.exp(-acceleration * (day_points - grace_period)/days)) daily_failure_rate = base_rate / (1 + np.exp(-acceleration * (day_points - grace_period)/days))
# Introduce randomness in the failure rate noise = np.random.normal(0.0, 0.05, days) # Mean 0.0, Std Dev 0.05
random_noise = np.random.normal(0.0, 0.05, (numEquipments, days)) # Mean 0.0, Std Dev 0.05 daily_failure_rate += noise
daily_failure_rate = daily_failure_rate + random_noise
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) failure_counts = np.cumsum(daily_failure_rate)
@ -92,6 +70,31 @@ def get_corrective_cost_time_chart(material_cost: float, service_cost: float, da
return corrective_costs, daily_failure_rate return corrective_costs, daily_failure_rate
# def get_corrective_cost_time_chart(material_cost: float, service_cost: float, days: int, numEquipments: int) -> Tuple[np.ndarray, np.ndarray]:
# day_points = np.arange(0, days)
# # Parameters for failure rate
# base_rate = 0.2 # Base failure rate per day
# acceleration = 2.4 # How quickly failure rate increases
# grace_period = 170 # Days before failures start increasing significantly
# # Calculate daily failure rate using sigmoid function
# daily_failure_rate = base_rate / (1 + np.exp(-acceleration * (day_points - grace_period)/days))
# # Introduce randomness in the failure rate
# random_noise = np.random.normal(0.0, 0.05, (numEquipments, days)) # Mean 0.0, Std Dev 0.05
# daily_failure_rate = daily_failure_rate + random_noise
# daily_failure_rate = np.clip(daily_failure_rate, 0, None) # Ensure failure rate is non-negative
# # Calculate cumulative failures
# failure_counts = np.cumsum(daily_failure_rate)
# # Calculate corrective costs based on cumulative failures and combined costs
# cost_per_failure = material_cost + service_cost
# corrective_costs = failure_counts * cost_per_failure
# return corrective_costs, daily_failure_rate
async def create_param_and_data(*, db_session: DbSession, calculation_param_in: CalculationTimeConstrainsParametersCreate, created_by: str, parameter_id: Optional[UUID] = None): async def create_param_and_data(*, db_session: DbSession, calculation_param_in: CalculationTimeConstrainsParametersCreate, created_by: str, parameter_id: Optional[UUID] = None):
"""Creates a new document.""" """Creates a new document."""
@ -257,8 +260,7 @@ async def create_calculation_result_service(
corrective_costs, daily_failures = get_corrective_cost_time_chart( corrective_costs, daily_failures = get_corrective_cost_time_chart(
material_cost=eq.material_cost, material_cost=eq.material_cost,
service_cost=eq.service_cost, service_cost=eq.service_cost,
days=days, days=days
numEquipments=len(equipments)
) )
overhaul_cost_points = get_overhaul_cost_by_time_chart( overhaul_cost_points = get_overhaul_cost_by_time_chart(

Loading…
Cancel
Save