Optimisation de l'exploitation des systèmes CCHP à l'aide d'un algorithme multi-objectifs dans MATLAB

L'optimisation de l'exploitation des systèmes combinés de production de chaleur, de froid et d'électricité (CCHP) est cruciale dans le domaine de l'énergie. Ces systèmes améliorent l'efficacité de l'utilisation de l'énergie, réduisent les coûts et minimisent l'impact environnemental. Cet article détaille une approche d'optimisation multi-objectifs pour les systèmes CCHP, résolue à l'aide de l'algorithme des colonies de particules (PSO) en MATLAB.

Approche Générale

Les algorithmes multi-objectifs visent à optimiser simultanément plusieurs objectifs potentiellement contradictoires, tels que le coût d'exploitation du système et les émissions de carbone. L'algorithme des colonies de particules (PSO) est une méthode d'optimisation inspirée du comportement de recherche de nourriture des oiseaux. Chaque particule représente une solution candidate, et l'ensemble des particules explore l'espace des solutions pour trouver l'optimum.

Implémentation en MATLAB

1. Initialisation des Paramètres

% Paramètres de l'algorithme des colonies de particules
nombre_particules = 50;         % Nombre de particules dans la colonie
max_generations = 100;          % Nombre maximal d'itérations
facteur_apprentissage1 = 1.5;   % Facteur d'apprentissage cognitif
facteur_apprentissage2 = 1.5;   % Facteur d'apprentissage social
poids_inertie = 0.9;            % Poids de l'inertie

% Paramètres du système CCHP
puissance_nominale_generateur = 100; % Puissance nominale du générateur (kW)
puissance_nominale_refroidisseur = 150; % Puissance nominale du refroidisseur (kW)

Cette section initialise les paramètres nécessaires à l'algorithme PSO. Le nombre de particules (nombre\_particules) affecte l'étendue de l'exploration de l'espace des solutions. max\_generations définit la durée de l'exécution de l'algorithme. Les facteurs d'apprentissage (facteur\_apprentissage1, facteur\_apprentissage2) influencent la manière dont les particules ajustent leur trajectoire vers leurs meilleures positions personnelles et globales, tandis que le poids de l'inertie (poids\_inertie) équilibre la recherche globale et locale. Des paramètres clés du système CCHP, tels que la puissance nominale des équipements, sont également définis pour servir de base aux calculs ultérieurs.

2. Initialisation des Particules

% Initialisation de la position et de la vitesse des particules
positions = zeros(nombre_particules, nombre_variables);
vitesses = zeros(nombre_particules, nombre_variables);

for k = 1:nombre_particules
    % Génération aléatoire des positions initiales dans les limites spécifiées
    positions(k, :) = rand(1, nombre_variables) .* (limite_superieure - limite_inferieure) + limite_inferieure;
    % Génération aléatoire des vitesses initiales
    vitesses(k, :) = rand(1, nombre_variables) .* (vitesse_max - vitesse_min) + vitesse_min;
end

Ce code crée les positions et vitesses initiales des particules. Les positions sont générées aléatoirement dans des limites prédéfinies, et les vitesses sont également initialisées aléatoirement dans une plage spécifiée. Cette randomisation garantit que l'algorithme commence sa recherche à partir de points diversifiés, réduisant ainsi le risque de convergence prématurée vers un optimum local.

3. Calcul de la Fonction d'Adaptation (Fitness)

function adaptation = calculer_adaptation(position_particule)
    % Extraction des variables de décision depuis la position de la particule
    puissance_generateur = position_particule(1);
    puissance_refroidisseur = position_particule(2);

    % Calcul du coût d'exploitation
    cout_exploitation = puissance_generateur * cout_unitaire_generateur + puissance_refroidisseur * cout_unitaire_refroidisseur;

    % Calcul des émissions de carbone
    emission_carbone = puissance_generateur * emission_unitaire_generateur;

    % Combinaison des objectifs pour l'optimisation multi-objectifs (méthode pondérée)
    adaptation = poids_objectif1 * cout_exploitation + poids_objectif2 * emission_carbone;
end

La fonction calculer\_adaptation évalue la qualité de chaque solution candidate (représentée par une particule). Elle extrait les puissances de fonctionnement des équipements à partir de la position de la particule, calcule ensuite le coût d'exploitation et les émissions de carbone. Ici, une méthode pondérée est utilisée pour combiner ces multiples objectifs en une seule valeur d'adaptation. Les coefficients poids\_objectif1 et poids\_objectif2 permettent d'ajuster l'importance relative de chaque objectif.

4. Mise à Jour des Particules

for generation = 1:max_generations
    for i = 1:nombre_particules
        % Calcul de l'adaptation de la particule actuelle
        adaptation_actuelle = calculer_adaptation(positions(i, :));

        % Mise à jour de la meilleure position personnelle (pbest)
        if adaptation_actuelle < adaptation_pbest(i)
            adaptation_pbest(i) = adaptation_actuelle;
            positions_pbest(i, :) = positions(i, :);
        end

        % Mise à jour de la meilleure position globale (gbest)
        if adaptation_actuelle < adaptation_gbest
            adaptation_gbest = adaptation_actuelle;
            positions_gbest = positions(i, :);
        end
    end

    % Ajustement dynamique du poids de l'inertie
    poids_inertie = poids_inertie - (poids_inertie - poids_inertie_min) * generation / max_generations;

    % Mise à jour de la vitesse et de la position de chaque particule
    for i = 1:nombre_particules
        % Calcul de la nouvelle vitesse
        vitesses(i, :) = poids_inertie * vitesses(i, :) ...
                       + facteur_apprentissage1 * rand(1, nombre_variables) .* (positions_pbest(i, :) - positions(i, :)) ...
                       + facteur_apprentissage2 * rand(1, nombre_variables) .* (positions_gbest - positions(i, :));

        % Limitation de la vitesse aux bornes
        vitesses(i, vitesses(i, :) > vitesse_max) = vitesse_max;
        vitesses(i, vitesses(i, :) < vitesse_min) = vitesse_min;

        % Mise à jour de la position
        positions(i, :) = positions(i, :) + vitesses(i, :);

        % Assurer que les positions restent dans les limites admissibles
        positions(i, positions(i, :) > limite_superieure) = limite_superieure;
        positions(i, positions(i, :) < limite_inferieure) = limite_inferieure;
    end
end

À chaque itération, les adaptations de toutes les particulees sont calculées, et les meilleures positions personnelles (pbest) et globales (gbest) sont mises à jour. Le poids de l'inertie (poids\_inertie) est ensuite ajusté de manière adaptative, diminuant au fil des générations pour favoriser une exploration globale plus large au début et une optimisation locale plus fine à la fin. La vitesse et la position de chaque particule sont ensuite mises à jour en fonction de leurs meilleures positions enregistrées et des paramètres de l'algorithme, tout en respectant des limites prédéfinies pour la vitesse et la position afin de maintenir la pertinence des solutions explorées.

Cette implémentation MATLAB utilise l'algorithme des colonies de particules pour optimiser l'exploitation des systèmes CCHP. Cette approche permet de trouver un équilibre efficace entre les objectifs multiples, contribuant ainsi à une exploitation plus performante et durable des systèmes énergétiques.

Étiquettes: optimisation multi-objectifs systèmes CCHP algorithme des colonies de particules MATLAB optimisation énergétique

Publié le 20 juillet à 16h41