• Aucun résultat trouvé

CHAPITRE 3. MÉTHODOLOGIE DE SIMULATION

3.3 Configuration de MATLAB

La configuration d’OSMOSE repose principalement sur trois fichiers MATLAB. Le fichier « front-end » spécifie les paramètres généraux de l’optimisation. Les calculs pour chaque itération sont ensuite faits dans le fichier « pré » ou « post » selon qu’ils doivent être faits au début ou à la fin de l’itération. Un quatrième fichier permet aussi de faire des calculs entre l’exécution d’ASPEN et celle d’EASY, si nécessaire.

Les variables sont stockées dans une petite base de données nommée « tags ». Chaque fichier « pré », intermédiaire ou « post » débute donc par la lecture des « tags » et se termine par l’écriture des « tags ». Les sous-sections suivantes décrivent ces fichiers un à un. Le fichier « post » est particulièrement important pour ce projet vu qu’il contient le calcul des émissions et l’évaluation des objectifs.

3.3.1 Fichier « front-end »

Ce fichier est l’exécutable de l’optimisation. Il spécifie un modèle qui décrit la simulation.

Le fichier spécifie d’abord le mode d’exécution d’OSMOSE. Les deux principaux modes sont « Moo », qui exécute l’optimisation avec l’algorithme génétique QMOO mais ne conserve aucun « tag » pour limiter les écritures sur le disque, et « Recompute », qui ré-exécute uniquement les solutions Pareto-optimales, pour en récupérer les « tags ». Les autres modes servent au débogage ou à faire des analyses particulières et sont documentés sur le LeniWiki.

La fonction « DefineMooOptim » définit les paramètres les plus importants de l’optimisation. « nobjectives » est le nombre d’objectifs; « max_evaluations » est le nombre d’itérations. Deux paramètres sont utiles spécifiquement à l’algorithme génétique, soit « nclusters » qui détermine le nombre de sous-populations dans la structure interne de l’algorithme, et « InitialPopulationSize » qui détermine le nombre initial d’itérations avant que l’algorithme ne commence à éliminer des configurations sous-optimales. Ces deux paramètres représentent un compromis entre la rapidité de convergence de l’optimisation dans son ensemble, et la probabilité d’avoir suffisamment balayé l’espace de décision pour trouver la zone d’attraction de l’optimum global.

60

Il y a aussi quelques paramètres d’affichage. Il faut ensuite définir les « tags » correspondant aux fonctions-objectif et aux variables de décision, comme dans :

ObjectiveFunction(2).DisplayName = {'Global warming potential'}; ObjectiveFunction(2).TagName = {'GWP_OBJ'};

ObjectiveFunction(2).Unit = {'MT CO2eq'}; ObjectiveFunction(2).MinOrMax = {'min'}; o.Variables(2).TagName = {'lean_load'};

o.Variables(2).DisplayName = {'Lean solvent CO2 loading'}; o.Variables(2).Unit = {' '};

o.Variables(2).Limits = [0.20 0.35];

% o.Variables(2).Start_limits = [0.30 0.35]; o.Variables(2).Is_integer = 0;

On remarque que chaque fonction-objectif doit être spécifiée comme un maximum ou un minimum, et que chaque variable de décision doit être spécifiée comme continue ou entière, avec deux bornes définissant l’espace de décision. Il est aussi possible de spécifier des bornes plus étroites pour les itérations initiales.

La fonction « DefineAspenTags » contient la liste des appels à « define_aspentag » pour définir la communication entre MATLAB et ASPEN Plus tel que décrit dans la section 3.1.6. La fonction « DefineConstants » permet de définir d’autres variables. Les « tags » correspondant à des variables de type « calculée » dans la Table 3-1 doivent être déclarés dans cette fonction vu que c’est la seule façon de les distinguer des variables de type « résultat ».

3.3.2 Fichier « pré »

Lors de l’exécution de ce fichier, au début de chaque itération, seules les variables de décision ont une valeur définie, déterminée par l’algorithme d’optimisation. Le fichier sert alors à calculer la valeur des variables requises par ASPEN et EASY qui ne sont pas des variables de décision. Par exemple, le calcul des débits massiques de chaque composante de chaque absorbant (pauvre ou mi-pauvre, avant dissociation) se fait à partir des valeurs décidées pour les teneurs molaires en CO2 et pour la fraction divisée.

Après résolution du système d’équations du bilan de masse10, cela donne : denominateur=(-split_frac*split_load+rich_load- lean_load+lean_load*split_frac); lean_co2=(144000.0*(1-split_frac)*lean_load)/denominateur; lean_mea=(2196000.0/11.0*(1-split_frac))/denominateur; split_co2=(144000.0*split_frac*split_load)/denominateur; split_mea=(2196000.0/11.0*split_frac)/denominateur; lean_h2o = lean_mea*0.7/0.3; split_h2o = split_mea*0.7/0.3;

Ici « rich_load » est une valeur hypothétique correspondant à un taux de capture de 100 %, donc 144000 kg/h, alors que 0,3 et 0,7 représentent les fractions massiques de MEA et d’eau dans l’absorbant.

D’autres calculs plus simples peuvent entrer dans le fichier, comme la correspondance entre la pression d’une colonne et celle d’un compresseur. Enfin, pour faire correspondre la pression de production de vapeur avec la température de préchauffage de l’absorbant et avec son « DTmin », il peut être utile de s’inspirer de l’équation d’Antoine :

EASY_PLO = 10^(5.0916 - 1668.21 / (T_RICHHEAT + 224 - Rich_DTmin/10.0));

3.3.3 Fichier « post »

Ce fichier sert obligatoirement à l’évaluation des objectifs. Il doit donc, au minimum, donner une valeur aux « tags » associés aux objectifs dans le fichier « front-end ». Avant de calculer les objectifs, il y a plusieurs calculs préliminaires à faire, à partir des résultats d’ASPEN et d’EASY, comme le calcul de la puissance nette ou de la masse totale d’acier. Les calculs d’ACV sont aussi faits dans ce fichier et précèdent le calcul de l’objectif environnemental. Finalement, on peut utiliser ce fichier pour calculer toute autre variable qu’on veut facilement pouvoir analyser ou exporter vers un tableau ou une figure. Par exemple, on peut calculer le coût d’évitement d’une tonne de CO2.

10 En se rappelant que les masses molaires du CO

2 et du MEA sont 44 et 61 respectivement, ces équations sont :

split_mea=(lean_mea+split_mea)*split_frac lean_co2/44.0=lean_mea/61.0*lean_load split_co2/44.0=split_mea/61.0*split_load

62

Comme le choix des objectifs et des modèles utilisés pour les évaluer diffèrent d’un chapitre à l’autre, cette discussion est laissée aux sections suivantes. On remarque cependant que dans plusieurs cas il est question de comparer des résultats d’optimisation selon deux définitions différentes de la fonction-objectif environnementale, par exemple avec et sans les émissions en arrière-plan. Il est alors possible de procéder de deux façons, ce qui affecte le fichier « post ». La première méthode évalue la fonction-objectif selon les deux définitions à chaque itération, mais n’en révèle qu’une seule à l’algorithme génétique d’optimisation. Dans ce cas, rien ne garantit que la population obtenue soit Pareto-optimale par rapport à la deuxième fonction, encore moins qu’elle soit convergente. L’autre méthode effectue deux optimisations séparées, sans partage d’informations sur les solutions intermédiaires. Elle mène donc à deux populations indépendantes. Dans ce cas, rien ne garantit que les différences entre les populations découlent des différences entre les définitions de la fonction-objectif, plutôt que du simple hasard.

Dans le cas où l’algorithme converge avec une tolérance beaucoup plus étroite que l’écart pouvant être causé par le changement de fonction-objectif, il existe alors deux populations Pareto-optimales distinctes et il faut évidemment deux optimisations séparées (deuxième méthode) pour les découvrir. Par contre, dans le cas d’une convergence moins précise, il devient impossible de déterminer si l’émergence de deux populations distinctes correspond à un effet réel du changement de la fonction-objectif, ou plutôt à l’existence de plusieurs trajets de convergence vers une population unique.

Pour les besoins scientifiques de ce projet, il devient alors plus prudent de travailler avec une seule population (première méthode) et ensuite observer comment le changement de fonction- objectif amplifie les différences déjà présentes à l’intérieur de cette population unique. Par exemple, pour vérifier comment la considération des émissions de méthane en arrière-plan affecte la pression optimale du désorbeur, on prend deux configurations de la même population dont la pression diffère, et on observe laquelle des deux est avantagée après l’ajout du calcul des émissions de méthane. Si les pressions élevées sont avantagées, on sait alors que la pression optimale sera plus élevée, sans toutefois savoir de combien.