58 lines
2.1 KiB
Python
58 lines
2.1 KiB
Python
import numpy as np
|
|
|
|
def get_dynamic_values():
|
|
# Simule la récupération des valeurs dynamiques.
|
|
return np.random.normal(loc=50, scale=10) # Valeur aléatoire avec une moyenne de 50 et un écart-type de 10
|
|
|
|
def update_values(values, new_value, rejected_values, threshold=10):
|
|
if len(values) == 0:
|
|
return [new_value], rejected_values
|
|
|
|
old_mean = np.mean(values) # Calcul de la moyenne actuelle
|
|
print(f"Ancienne moyenne: {old_mean}")
|
|
|
|
if new_value in rejected_values:
|
|
# Si la nouvelle valeur a été rejetée précédemment, l'accepter maintenant
|
|
values.append(new_value)
|
|
rejected_values.remove(new_value)
|
|
print(f"Valeur {new_value} acceptée après rejet initial")
|
|
else:
|
|
# Ajouter la nouvelle valeur et retirer la première valeur (si nécessaire)
|
|
if len(values) >= 10: # par exemple, une fenêtre de 10 valeurs
|
|
values.pop(0)
|
|
|
|
values.append(new_value)
|
|
|
|
new_mean = np.mean(values) # Calcul de la nouvelle moyenne
|
|
print(f"Nouvelle moyenne avec la nouvelle valeur: {new_mean}")
|
|
|
|
# Vérifier si la nouvelle valeur change significativement la moyenne
|
|
difference = abs(new_mean - old_mean)
|
|
print(f"Différence entre les moyennes: {difference}")
|
|
|
|
if difference > threshold:
|
|
# Rejeter temporairement la nouvelle valeur
|
|
rejected_values.add(new_value)
|
|
values.pop() # Retirer la nouvelle valeur
|
|
print(f"Valeur {new_value} rejetée temporairement")
|
|
else:
|
|
print(f"Valeur {new_value} acceptée")
|
|
|
|
return values, rejected_values
|
|
|
|
# Tableau pour stocker les dernières valeurs
|
|
last_values = [10, 10, 10]
|
|
rejected_values = set()
|
|
|
|
# Nouvelles valeurs à recevoir
|
|
new_values = [30, 30]
|
|
|
|
for new_value in new_values:
|
|
print(f"Nouvelle valeur récupérée: {new_value}")
|
|
last_values, rejected_values = update_values(last_values, new_value, rejected_values)
|
|
print(f"Valeurs mises à jour: {last_values}\n")
|
|
|
|
# Afficher le tableau final
|
|
print(f"Tableau final des valeurs: {last_values}")
|
|
|