|
|
@@ -288,6 +288,26 @@ def validar_combinacion(comb, patrones, compatibilidad_df, restricciones_df):
|
|
|
if per != 0:
|
|
|
if not(per=='x' and comb[iter]):
|
|
|
return False
|
|
|
+ #comprueba que no hay dos acciones accidentales en la misma combinacion
|
|
|
+ accidentales = restricciones_df.loc[:,"Tipo"]
|
|
|
+ num_acc = 0
|
|
|
+ for iter, acc in enumerate(accidentales):
|
|
|
+ if acc == "Accidental":
|
|
|
+ if comb[iter]:
|
|
|
+ num_acc += 1
|
|
|
+ if num_acc > 1:
|
|
|
+ return False
|
|
|
+ #comprueba que con sismo solo hay una carga variable
|
|
|
+ sismo = restricciones_df.loc[:,"Accion IAPF"]
|
|
|
+ num_var = 0
|
|
|
+ for iter, sis in enumerate(sismo):
|
|
|
+ if sis == "Sismo":
|
|
|
+ if comb[iter]:
|
|
|
+ for jter in comb:
|
|
|
+ if restricciones_df.loc[jter,"Tipo"] == "Variable":
|
|
|
+ num_var += 1
|
|
|
+ if num_var > 1:
|
|
|
+ return False
|
|
|
#si no cumple ninguna de las restricciones se considera válida la combinacion
|
|
|
return True
|
|
|
|
|
|
@@ -340,6 +360,8 @@ minorados_ELUP = []
|
|
|
minorados_ELSC = []
|
|
|
minorados_ELSF = []
|
|
|
minorados_ELSCP = []
|
|
|
+minorados_ELUA = []
|
|
|
+minorados_ELUS = []
|
|
|
|
|
|
|
|
|
for combo in combinaciones_validas:
|
|
|
@@ -441,60 +463,62 @@ for combo in combinaciones_validas:
|
|
|
pass
|
|
|
|
|
|
|
|
|
+ minorados_ELUP.clear()
|
|
|
+ minorados_ELUA.clear()
|
|
|
+ minorados_ELUS.clear()
|
|
|
+ minorados_ELSC.clear()
|
|
|
+ minorados_ELSF.clear()
|
|
|
+ minorados_ELSCP.clear()
|
|
|
+
|
|
|
+ if n_var == 1:
|
|
|
+ coef_var_ELSF = np.ones(len(patrones))
|
|
|
+ coef_var_ELSCP = np.ones(len(patrones))
|
|
|
+ for i in range(len(combo)):
|
|
|
+ if restricciones_df.loc[i,"Tipo"] == "Variable":
|
|
|
+ if restricciones_df.loc[i,"Accion IAPF"] == "Trafico":
|
|
|
+ coef_var_ELSF[i] = normas["IAPF"]["CoefVar"]["Trafico"]["psi1"][vias_cargadas if int(vias_cargadas) < 4 else "3"]
|
|
|
+ coef_var_ELSCP[i] = normas["IAPF"]["CoefVar"]["Trafico"]["psi2"]
|
|
|
+ else:
|
|
|
+ coef_var_ELSF[i] = normas["IAPF"]["CoefVar"]["Resto"]["psi1"]
|
|
|
+ coef_var_ELSCP[i] = normas["IAPF"]["CoefVar"]["Resto"]["psi2"]
|
|
|
+
|
|
|
+
|
|
|
+ while n_var > 1:
|
|
|
minorados_ELUP.clear()
|
|
|
minorados_ELSC.clear()
|
|
|
minorados_ELSF.clear()
|
|
|
minorados_ELSCP.clear()
|
|
|
-
|
|
|
- if n_var == 1:
|
|
|
+ n_var -= 1
|
|
|
+ #se busca la primera variable en el combo y se asigna el coeficiente
|
|
|
+ for i in range(len(combo)):
|
|
|
+ coef_var_ELUP = np.ones(len(patrones))
|
|
|
+ coef_var_ELSC = np.ones(len(patrones))
|
|
|
coef_var_ELSF = np.ones(len(patrones))
|
|
|
coef_var_ELSCP = np.ones(len(patrones))
|
|
|
- for i in range(len(combo)):
|
|
|
- if restricciones_df.loc[i,"Tipo"] == "Variable":
|
|
|
- if restricciones_df.loc[i,"Accion IAPF"] == "Trafico":
|
|
|
- coef_var_ELSF[i] = normas["IAPF"]["CoefVar"]["Trafico"]["psi1"][vias_cargadas if int(vias_cargadas) < 4 else "3"]
|
|
|
- coef_var_ELSCP[i] = normas["IAPF"]["CoefVar"]["Trafico"]["psi2"]
|
|
|
- else:
|
|
|
- coef_var_ELSF[i] = normas["IAPF"]["CoefVar"]["Resto"]["psi1"]
|
|
|
- coef_var_ELSCP[i] = normas["IAPF"]["CoefVar"]["Resto"]["psi2"]
|
|
|
-
|
|
|
-
|
|
|
- while n_var > 1:
|
|
|
- minorados_ELUP.clear()
|
|
|
- minorados_ELSC.clear()
|
|
|
- minorados_ELSF.clear()
|
|
|
- minorados_ELSCP.clear()
|
|
|
- n_var -= 1
|
|
|
- #se busca la primera variable en el combo y se asigna el coeficiente
|
|
|
- for i in range(len(combo)):
|
|
|
- coef_var_ELUP = np.ones(len(patrones))
|
|
|
- coef_var_ELSC = np.ones(len(patrones))
|
|
|
- coef_var_ELSF = np.ones(len(patrones))
|
|
|
- coef_var_ELSCP = np.ones(len(patrones))
|
|
|
- if restricciones_df.loc[i,"Tipo"] == "Variable":
|
|
|
- if restricciones_df.loc[i,"Accion IAPF"] == "Trafico":
|
|
|
- coef_var_ELSF[i] = normas["IAPF"]["CoefVar"]["Trafico"]["psi1"][vias_cargadas if int(vias_cargadas) < 4 else "3"]
|
|
|
- coef_var_ELSCP[i] = normas["IAPF"]["CoefVar"]["Trafico"]["psi2"]
|
|
|
- else:
|
|
|
- coef_var_ELSF[i] = normas["IAPF"]["CoefVar"]["Resto"]["psi1"]
|
|
|
- coef_var_ELSCP[i] = normas["IAPF"]["CoefVar"]["Resto"]["psi2"]
|
|
|
- for j in range(len(combo)):
|
|
|
- if (restricciones_df.loc[j,"Tipo"] == "Variable") and (j != i):
|
|
|
- #se asigna el coeficiente de la variable al resto de variables
|
|
|
- if restricciones_df.loc[j,"Accion IAPF"] == "Trafico":
|
|
|
- coef_var_ELUP[j] = normas["IAPF"]["CoefVar"]["Trafico"]["psi0"]
|
|
|
- coef_var_ELSC[j] = normas["IAPF"]["CoefVar"]["Trafico"]["psi0"]
|
|
|
- coef_var_ELSF[j] = normas["IAPF"]["CoefVar"]["Trafico"]["psi2"]
|
|
|
- coef_var_ELSCP[j] = normas["IAPF"]["CoefVar"]["Trafico"]["psi2"]
|
|
|
- else:
|
|
|
- coef_var_ELUP[j] = normas["IAPF"]["CoefVar"]["Resto"]["psi0"]
|
|
|
- coef_var_ELSC[j] = normas["IAPF"]["CoefVar"]["Resto"]["psi0"]
|
|
|
- coef_var_ELSF[j] = normas["IAPF"]["CoefVar"]["Resto"]["psi2"]
|
|
|
- coef_var_ELSCP[j] = normas["IAPF"]["CoefVar"]["Resto"]["psi2"]
|
|
|
- minorados_ELUP.append(coef_var_ELUP)
|
|
|
- minorados_ELSC.append(coef_var_ELSC)
|
|
|
- minorados_ELSF.append(coef_var_ELSF)
|
|
|
- minorados_ELSCP.append(coef_var_ELSCP)
|
|
|
+ if restricciones_df.loc[i,"Tipo"] == "Variable":
|
|
|
+ if restricciones_df.loc[i,"Accion IAPF"] == "Trafico":
|
|
|
+ coef_var_ELSF[i] = normas["IAPF"]["CoefVar"]["Trafico"]["psi1"][vias_cargadas if int(vias_cargadas) < 4 else "3"]
|
|
|
+ coef_var_ELSCP[i] = normas["IAPF"]["CoefVar"]["Trafico"]["psi2"]
|
|
|
+ else:
|
|
|
+ coef_var_ELSF[i] = normas["IAPF"]["CoefVar"]["Resto"]["psi1"]
|
|
|
+ coef_var_ELSCP[i] = normas["IAPF"]["CoefVar"]["Resto"]["psi2"]
|
|
|
+ for j in range(len(combo)):
|
|
|
+ if (restricciones_df.loc[j,"Tipo"] == "Variable") and (j != i):
|
|
|
+ #se asigna el coeficiente de la variable al resto de variables
|
|
|
+ if restricciones_df.loc[j,"Accion IAPF"] == "Trafico":
|
|
|
+ coef_var_ELUP[j] = normas["IAPF"]["CoefVar"]["Trafico"]["psi0"]
|
|
|
+ coef_var_ELSC[j] = normas["IAPF"]["CoefVar"]["Trafico"]["psi0"]
|
|
|
+ coef_var_ELSF[j] = normas["IAPF"]["CoefVar"]["Trafico"]["psi2"]
|
|
|
+ coef_var_ELSCP[j] = normas["IAPF"]["CoefVar"]["Trafico"]["psi2"]
|
|
|
+ else:
|
|
|
+ coef_var_ELUP[j] = normas["IAPF"]["CoefVar"]["Resto"]["psi0"]
|
|
|
+ coef_var_ELSC[j] = normas["IAPF"]["CoefVar"]["Resto"]["psi0"]
|
|
|
+ coef_var_ELSF[j] = normas["IAPF"]["CoefVar"]["Resto"]["psi2"]
|
|
|
+ coef_var_ELSCP[j] = normas["IAPF"]["CoefVar"]["Resto"]["psi2"]
|
|
|
+ minorados_ELUP.append(coef_var_ELUP)
|
|
|
+ minorados_ELSC.append(coef_var_ELSC)
|
|
|
+ minorados_ELSF.append(coef_var_ELSF)
|
|
|
+ minorados_ELSCP.append(coef_var_ELSCP)
|
|
|
|
|
|
|
|
|
if minorados_ELUP:
|