Aller au contenu

Vue d'ensemble de l'Optimisation Multi-objectif

Introduction

Le framework ORENI propose plusieurs approches d'optimisation multi-objectif pour la rénovation énergétique de bâtiments. Ces optimiseurs permettent de trouver des solutions optimales qui équilibrent différents objectifs conflictuels comme le coût, les émissions de CO₂ et le confort thermique.

Problème d'optimisation

Objectifs typiques

Dans le contexte de la rénovation énergétique, nous cherchons à optimiser simultanément :

  1. Coût du cycle de vie : Minimiser les coûts totaux (investissement + exploitation)
  2. Impact environnemental : Minimiser les émissions de CO₂ équivalent
  3. Confort thermique : Maximiser le confort des occupants

Variables de décision

Les variables d'optimisation incluent : - Matériaux : Type d'isolant, épaisseur, position - Systèmes : Type de chauffage, ventilation, énergies renouvelables - Surfaces : Murs, toits, fenêtres à rénover - Stratégies : Ordre et combinaison des rénovations

Contraintes

  • Budgétaires : Coût total limité
  • Techniques : Compatibilité des matériaux
  • Réglementaires : Normes de construction
  • Pratiques : Faisabilité des interventions

Approches d'optimisation disponibles

1. Optimiseur Aléatoire

Principe : Échantillonnage aléatoire de l'espace de recherche

Avantages : - Simple à utiliser - Pas de paramètres à ajuster - Rapide pour l'exploration initiale

Inconvénients : - Pas d'intelligence de recherche - Convergence lente - Résultats non optimaux

Utilisation recommandée : Tests rapides, exploration initiale

2. Optimiseur BoTorch (Optimisation Bayésienne)

Principe : Utilisation de processus gaussiens pour modéliser les fonctions objectif

Avantages : - Convergence rapide - Efficace avec peu d'évaluations - Gestion intelligente des compromis

Inconvénients : - Complexe à paramétrer - Sensible aux hyperparamètres - Moins de diversité dans les solutions

Utilisation recommandée : Problèmes coûteux, budget d'évaluations limité

Comparaison des approches

Critère Aléatoire BoTorch
Convergence Lente Rapide
Diversité Aléatoire Moyenne
Facilité d'utilisation Excellente Complexe
Robustesse Bonne Moyenne
Variables discrètes Bonne Bonne
Budget d'évaluations Élevé Faible

Workflow d'optimisation typique

1. Définition du problème

# Définition des espaces de décision et d'incertitude
decision_space = DecisionSpace(...)
uncertain_space = UncertainSpace(...)

# Configuration des fonctions de coût
cost_functions = [
    CostLifeCycleCost(...),
    CostLifeCycleAssessment(...),
    CostComfort(...)
]

2. Choix de l'optimiseur

# Selon vos besoins :
if budget_evaluations < 50:
    optimizer = "botorch"
else:
    optimizer = "random"

3. Exécution de l'optimisation

# Exemple avec BoTorch
results = botorch_multi_objective_optimizer(
    function=simulations.compute_cost_functions,
    decision_space=decision_space,
    uncertain_space=uncertain_space,
    function_labels=["Cost", "Emissions", "Comfort"],
    n_initial_points=10,
    n_optimization_iterations=20
)

4. Analyse des résultats

# Calcul de la frontière de Pareto
pareto_objectives, pareto_indices = compute_pareto_frontier(
    objective_values, minimize=[True, True, True]
)

# Visualisation
plot_pareto_frontier(pareto_objectives)

Bonnes pratiques

Choix de l'optimiseur

  1. Commencez par l'aléatoire pour explorer rapidement l'espace
  2. Utilisez BoTorch si vous avez peu d'évaluations disponibles
  3. Comparez les deux approches pour valider vos résultats

Paramétrage

  1. Graines aléatoires : Utilisez des graines fixes pour la reproductibilité
  2. Budget d'évaluations : Adaptez selon la complexité du problème
  3. Paramètres spécifiques : Ajustez selon les caractéristiques du problème

Validation

  1. Répétabilité : Exécutez plusieurs fois avec différentes graines
  2. Robustesse : Testez avec différents paramètres
  3. Comparaison : Comparez avec d'autres méthodes si possible

Exemples pratiques

Exemple 1 : Rénovation d'une maison individuelle

# Configuration pour une maison simple
decision_space = design_space_detached_house
uncertain_space = uncertain_space_detached_house

# Optimisation avec BoTorch (efficacité)
results = botorch_multi_objective_optimizer(
    n_initial_points=10,
    n_optimization_iterations=30,
    batch_size=3
)

Exemple 2 : Optimisation rapide d'un bâtiment

# Configuration pour optimisation rapide
decision_space = design_space_cabin
uncertain_space = uncertain_space_cabin

# Optimisation avec BoTorch (peu d'évaluations)
results = botorch_multi_objective_optimizer(
    n_initial_points=5,
    n_optimization_iterations=10
)

Exemple 3 : Exploration initiale

# Configuration pour exploration
decision_space = design_space_complex
uncertain_space = uncertain_space_complex

# Optimisation aléatoire (exploration)
results = random_optimizer(
    n_designs=100,
    n_uncs=5
)

Ressources supplémentaires

Prochaines étapes

  1. Lisez la documentation spécifique de chaque optimiseur
  2. Essayez les exemples fournis dans le framework
  3. Testez sur vos propres problèmes de rénovation
  4. Comparez les performances des différents approches
  5. Partagez vos expériences avec la communauté