Spaces:
Sleeping
Sleeping
| 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] | |
| } |