Spaces:
Sleeping
Sleeping
File size: 4,155 Bytes
4df6bad 96e4e46 4df6bad 96e4e46 4df6bad 96e4e46 4df6bad 96e4e46 4df6bad 96e4e46 4df6bad 96e4e46 4df6bad 96e4e46 4df6bad 96e4e46 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | import numpy as np
import pandas as pd
# Chargement des facteurs d'émission depuis output2.txt
file_path = "output2.txt"
factors_df = pd.read_csv(file_path, delimiter=";", names=["Producer", "Emission Factor"], dtype=str, encoding="latin1")
# Nettoyage des données - suppression des espaces et normalisation
factors_df["Producer"] = factors_df["Producer"].str.strip()
factors_df["Emission Factor"] = factors_df["Emission Factor"].str.replace(",", ".").str.strip().astype(float)
# Définition des valeurs de Qh en fonction de Delta Uf établi à partir de lesosai
q_h_values = np.array([0.000, 0.250, 0.500, 0.750, 1.000, 1.250, 1.472, 1.722, 1.972, 2.222, 2.472, 2.722, 2.944])
delta_uf_values = np.array([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2])
# Fonction pour calculer les coefficients GES
def calculate_ges_coefficients(producer_name):
"""
Calcule le coefficient GES (a) en imposant b = 0.
"""
# Nettoyage du nom recherché
producer_name_clean = producer_name.strip()
# Recherche avec correspondance exacte
factor = factors_df.loc[factors_df["Producer"] == producer_name_clean, "Emission Factor"].values
# Si pas de correspondance exacte, essayer une recherche plus flexible
if len(factor) == 0:
# Recherche insensible à la casse
factor = factors_df.loc[
factors_df["Producer"].str.lower() == producer_name_clean.lower(), "Emission Factor"].values
# Si toujours pas trouvé, utiliser une valeur par défaut basée sur le type
if len(factor) == 0:
# Dictionnaire de valeurs par défaut
default_factors = {
"Chauffage à distance": 0.066,
"Pac COPA 2,7": 0.058,
"Pac COPA 5,3": 0.035,
"Pac COPA 4,4": 0.040,
"Pac COPA 3,2": 0.048,
"Chaudiere gaz naturel": 0.230,
"Chaudiere biogaz": 0.127,
"Chaudiere mazout": 0.324,
"Chaudiere buche": 0.033,
"Chaudiere pellet": 0.038
}
if producer_name_clean in default_factors:
factor = [default_factors[producer_name_clean]]
else:
# Dernière tentative avec une recherche partielle
for key, value in default_factors.items():
if key.lower() in producer_name_clean.lower() or producer_name_clean.lower() in key.lower():
factor = [value]
break
# Si toujours rien trouvé, lever une erreur avec plus d'informations
if len(factor) == 0:
available_producers = factors_df["Producer"].tolist()
raise ValueError(
f"Facteur d'émission introuvable pour '{producer_name_clean}'. Producteurs disponibles : {available_producers}")
factor = factor[0]
ges_values = q_h_values * factor
# Régression linéaire sans intercept (forcée à 0)
a, _, _, _ = np.linalg.lstsq(delta_uf_values.reshape(-1, 1), ges_values, rcond=None)
return a[0], 0 # b est forcé à 0
# Calcul des coefficients pour les systèmes de chauffage
coefficients = {
"Pac COPA 2,7": calculate_ges_coefficients("Pac COPA 2,7"),
"Pac COPA 5,3": calculate_ges_coefficients("Pac COPA 5,3"),
"Chaudiere gaz naturel": calculate_ges_coefficients("Chaudiere gaz naturel"),
"Chaudiere biogaz": calculate_ges_coefficients("Chaudiere biogaz"),
"Pac COPA 4,4": calculate_ges_coefficients("Pac COPA 4,4"),
"Pac COPA 3,2": calculate_ges_coefficients("Pac COPA 3,2"),
"Chaudiere pellet": calculate_ges_coefficients("Chaudiere pellet"),
"Chaudiere buche": calculate_ges_coefficients("Chaudiere buche"),
"Chauffage à distance": calculate_ges_coefficients("Chauffage à distance"),
"Cadre bois": (0.000, 0.041),
"Cadre bois métal": (0.000, 0.074),
"Cadre PVC": (0.000, 0.072),
"Cadre alu": (0.000, 0.149),
}
# Données pour la régression Uf selon le type de cadre
data = {
"Bois": [1.8, 0.9],
"Bois-métal": [2, 1],
"PVC": [1.8, 1.3],
"Alu": [3.6, 0.8]
} |