feat: add Exponential-2P distribution support and sanitize default parameters for Normal distribution and reliability intervals

main
Cizz22 3 months ago
parent f2c51636aa
commit d4933bb43a

@ -337,6 +337,10 @@ def get_distribution_from_db(parameters: dict, is_repairable: bool = True, best_
if method == "NHPP":
beta = parameters.get("beta", 1.0)
eta = parameters.get("eta", 100000)
if eta < 100:
eta = 15000
return "NHPPTTFF", beta, eta
elif method == "Weibull-2P":
beta = parameters.get("beta", 1.0)
@ -362,7 +366,7 @@ def get_distribution_from_db(parameters: dict, is_repairable: bool = True, best_
sigma = parameters.get("sigma", 1)
return "Lognormal", mu, sigma
elif distribution == "Normal":
mu = parameters.get("mu", 0)
mu = parameters.get("mu", 100000)
sigma = parameters.get("sigma", 1)
if sigma > 1000 or sigma < 0:
sigma = 999
@ -372,12 +376,18 @@ def get_distribution_from_db(parameters: dict, is_repairable: bool = True, best_
beta = parameters.get("beta", 1.0)
eta = parameters.get("eta", 100000)
return "Weibull2", beta, eta
elif distribution == "Exponential-2P":
lambda_val = parameters.get("Lambda", 0.00001)
gamma = parameters.get("gamma", 0)
return "Exponential2", lambda_val, gamma
else:
# Default to Normal
mu = parameters.get("mu", 0)
mu = parameters.get("mu", 100000)
sigma = parameters.get("sigma", 1)
if sigma > 1000 or sigma < 0:
sigma = 999
if mu <=0 :
mu = 19000
return "Normal", mu, sigma
async def update_oh_interval_offset(*, aeros_db_session, overhaul_offset, overhaul_interval, project_name):
@ -598,7 +608,10 @@ async def update_equipment_for_simulation(
eq.setdefault("cmDisP3", 0)
eq.setdefault("relDisP1", 0)
eq.setdefault("relDisP2", 0)
eq.setdefault("relDisP3", 0)
if eq.get("relDisType") == "Normal":
sigma = eq.get("relDisP2", 0)
if sigma > 1000 or sigma < 0:
eq["relDisP2"] = 999
eq["ohDisType"] = "Fixed"
eq["ohDisP1"] = overhaul_duration

Loading…
Cancel
Save