# Optimisation de forme

L'optimisation de forme (ou optimal design ou shape optimization) est un ensemble de méthodes permettant de trouver la « meilleure forme » à donner à une pièce pour qu'elle remplisse ses fonctions. C'est une étape de la conception de produit.
Ces méthodes sont utilisées dans de nombreux domaines comme l'aérodynamique, l'hydrodynamique, l'acoustique, l'électromagnétisme, l'électronique, l'optique ou bien le génie mécanique ; dans ce dernier domaine, on parle souvent d'optimisation de structure.

## Objectifs de l'optimisation

L'optimisation est une étape du projet de conception. La pièce considérée a une ou plusieurs fonctions à remplir, qui sont établies par l'analyse fonctionnelle. La capacité de la pièce à remplir une fonction peut en général s'exprimer sous forme numérique par exemple :
* fonction « transmettre un effort », « supporter une charge » : effort maximal transmissible/supportable (force en newtons (N), couple en newtons mètres (N m)), contrainte (en mégapascals (MPa)), coefficient de sécurité par rapport à l'effort à transmettre/supporter (nombre sans dimension) ;
* fonction « transporter du courant » : résistance électrique (en ohms (Ω)) ;
* fonction « filtrer un signal » : valeurs de la fonction de transfert pour certaines fréquences données (sans dimension) ;
* fonction « dissiper la chaleur » : valeur du coefficient d'échange thermique (en watts par mètre carré-kelvin (W m$^{−2}$ K$^{−1}$)) ;
* fonction « offrir peu de résistance au vent » : coefficient de traînée C$_x$ (sans dimension) ;
Par ailleurs, la pièce est en interaction avec son environnement : autres pièces (liaisons), atmosphère, produit contenu ou transporté, sources d'énergie… cela définit les contraintes (par exemple l'encombrement et le poids maximal) et les charges. On là aussi peut quantifier les contraintes de fabrication et d'interface entre la pièce et son environnement : volume, poids, coût de fabrication, coût d'utilisation…
À partir de ces éléments chiffrés (A, B…), on peut définir une fonction-objectif. Typiquement, cette fonction-objectif est une combinaison linéaire des éléments chiffrés, le coefficient donnant un poids plus ou moins important à chaque élément
    ƒ = αA + βB + … ;
ou bien un produit d'éléments chiffrés affectés d'un exposant de pondération
    ƒ = A$^α$ ⋅ B$^β$ ⋅ …
On considère que la pièce est plus performante si cette fonction-objectif augmente (respectivement diminue), l'optimisation consiste donc à trouver le maximum (resp. minimum) de cette fonction.
Par exemple, si la fonction d'une pièce est de supporter une force F, et que sa masse est m, on peut choisir d'optimiser le rapport force/masse de la pièce ; la fonction-objectif est alors ƒ = F/m = F ⋅ m$^{-1}$, fonction qu'il faut maximiser.
Il existe par ailleurs des contraintes technologiques, liées à la fabrication de la pièce. Par exemple, une pièce de fonderie doit pouvoir être démoulée. Ces contraintes sont parfois difficilement quantifiables, et imposent en général une retouche de la forme obtenue.

## Formalisme mathématique

Mathématiquement, l'optimisation de forme consiste à trouver la partie bornée Ω de l'espace minimisant la fonction de coût
    ${\mathcal {F}}(\Omega )$
tout en respectant une contrainte de la forme
    ${\mathcal {G}}(\Omega )=0$
Le domaine Ω est un volume dont la frontière (surface) est notée ∂Ω.
Les parties auxquelles on s'intéresse sont habituellement continues, et même de classe C$^1$ ou bien lipschitziennes ; qualitativement, ce sont des formes « douces », sans aspérité. Il peut être nécessaire d'imposer des conditions supplémentaires pour s'assurer que le problème est bien posé et que la solution est unique.
L'optimisation de forme est un problème d'optimisation en dimension infinie, du domaine de la commande optimale. Par ailleurs, l'espace des formes parmi lesquelles on cherche n'a pas la structure d'un espace vectoriel, ce qui rend l'application des méthodes d'optimisation habituelles compliqué.

## Exemples
### Trouver la forme qui, pour un volume V$_0$, a une surface minimale

   * La fonction de coût est ${\mathcal {F}}(\Omega )=\mathrm {Aire} (\Omega )$ ;
   * la fonction de contrainte est ${\mathcal {G}}(\Omega )=\mathrm {Volume} (\Omega )-\mathrm {V} _{0}$.
    La réponse est une sphère.

### Trouver la forme d'un avion qui minimise la traînée

    La fonction de coût est la traînée. Les contraintes sont la résistance, l'encombrement, le poids, le coût et la maintenabilité de l'aile.

### Connaissant un objet volumique contenant une source de radiations. Déterminer la forme et la taille de la source à partir de mesure effectuées à la surface de l'objet.

    La formulation de ce problème inverse à partir d'une régression utilisant la méthode des moindres carrés revient à une optimisation de forme. La fonction de coût est la somme des carrés des écarts entre les mesures effectuées et l'intensité prédite.

## Optimisation manuelle

Traditionnellement, le concepteur se sert de son expérience pour faire évoluer la forme d'une pièce. Le concepteur part d'une forme initiale et évalue ses performances, par des calculs et/ou des essais ; de nos jours, on utilise fréquemment la méthode des éléments finis. Cette évaluation fait ressortir une performance globale de la pièce, ainsi que des endroits critiques : endroits de la pièce participant beaucoup ou peu aux performances, ou bien subissant une charge importante ou bien faible.
Le concepteur modifie la forme de la pièce en fonction de ces résultats, d'heuristiques, et de son expérience, puis effectue une nouvelle évaluation.
Cette approche de l'amélioration par essais-erreurs est lente et ne garantit pas de trouver un optimum.

## Optimisation automatisée

L'automatisation de la procédure d'optimisation permet d'accélérer le processus, et, dans les limites de l'algorithme utilisé, de s'assurer que l'on a bien un extremum de la fonction-objectif.
La procédure consiste à faire varier des variables d'optimisation et de regarder l'impact de ces variations sur la fonction-objectif.
Une des difficultés des méthodes automatisées est le remaillage. En effet, pour que le calcul par éléments finis soit fiable, le maillage doit respecter certains critères : nombre minimum d'éléments en épaisseur ou dans un rayon, éléments de forme régulière… Si la forme varie beaucoup, cela impose de remailler la pièce. Or, les logiciels utilisent en général le numéro des éléments pour définir les conditions aux limites ou bien l'extraction des résultats, et un remaillage implique nécessairement une renumérotation.

### Représentation informatique de la forme

L'évaluation de la fonction de coût se fait en général par éléments finis, la représentation « opérationnelle » est donc un ensemble de nœuds et d'éléments. Il s'agit d'une représentation du volume, et non pas de la forme ; cette représentation est la traduction d'une enveloppe qui peut avoir sa propre représentation en mémoire. En effet, la représentation de l'enveloppe doit permettre la modification par l'algorithme. On peut utiliser pour cela plusieurs approches.
La première approche consiste à suivre la frontière ∂Ω. On peut par exemple échantillonner cette surface de manière uniforme et suffisamment dense, et considérer que ces points discrets décrivent la surface de manière suffisamment précise. On peut alors faire évoluer la forme en appliquant des petits déplacements à ces points. On parle d'approche lagrangienne.
On peut également définir une fonction qui est positive à l'intérieur de la pièce, valant 0 à la frontière, et négative à l'extérieur. On fait un quadrillage de l'espace (un maillage à mailles cubiques), et l'on définit les valeurs de cette fonction aux nœuds du maillage. Pour faire évoluer la forme, on fait varier les valeurs de la fonction aux nœuds, le quadrillage étant immuable. Cette approche, appelée approche eulérienne, est à la base de la méthode level-set.
On peut également voir l'évolution de la forme comme un écoulement. En quelque sorte, la pièce est faite d'un matériau plastique qui se déforme, chaque point de la pièce finale étant une point de la pièce d'origine qui s'est déplacé. D'un point de vue mathématique, si Ω$_0$ est la pièce initiale et Ω$_t$ la pièce à l'instant de simulaiton t, on peut définir un difféomorphisme :
    ƒ$_t$ : Ω$_0$ → Ω$_t$.
Là encore, plutôt que de manipuler la forme Ω$_t$, on manipule la fonction ƒ$_t$.

### Classes d'optimisation
#### Optimisation dimensionnelle

La forme générale de la pièce est fixée, on fait varier des cotes : diamètres de trous, longueur d'une arête… C'est la méthode la moins créative — on ne modifie pas la conception générale de la pièce — mais la plus simple à mettre en œuvre. Il faut faire appel à un modèle numérique paramétré : la pièce est dessinée avec un logiciel de conception assistée par ordinateur (CAO), et certaines cotes sont déclarées comme paramètres.
On peut avoir un lien entre le logiciel de CAO et le logiciel de calcul par éléments finit (ÉF) avec rétroaction : le calcul ÉF envoie les nouvelles cotes au logiciel CAO. On peut aussi avoir un logiciel tiers pilotant le tout. De nombreux logiciels proposent des algorithmes de type plan d'expérience.
Pour les modèles de grande taille (comportant de nombreux nœuds), il peut être intéressant de paramétrer directement le maillage : plutôt que de modifier le modèle CAO puis de mailler, on déforme directement le maillage (mesh morphing). On peut utiliser différentes méthodes : volumes déformants, pseudosolides, fonctions radiales.

#### Variation de frontière

Certaines zones de la pièce sont fixées, mais certaines zones sont non définies. La surface de ces zones est définie par des points de contrôle (voir l'article Courbe de Bézier pour cette notion). Les variables d'optimisation sont les coordonnées de ces points.
Cette méthode est à « topologie constante », c'est-à-dire que le nombre de surfaces indépendantes — le nombre de trous — ne varie pas.

#### Optimisation topologique

L'optimisation topologique consiste à autoriser la création de nouvelles surfaces libres, c'est-à-dire de trous.
En effet, certaines zones d'une pièces contribuent peu à sa performance et donc peuvent être amincies voir être vides, ce qui allège la pièce sans nuire à ses performances ; cela peut également réduire le coût de la matière, mais augmente en général le coût de fabrication, puisqu'une forme complexe coûte plus cher à fabriquer. À l'inverse, certaines zones critiques doivent être renforcées. C'est ce principe qui conduit à utiliser des profilés métalliques pour faire des poutres : profilés en I ou en U, profilés creux (tubes), on enlève la matière à l'âme de la poutre et l'on renforce les zones extérieures, les plus sollicitées en flexion. C'est aussi ce qui justifie l'utilisation de treillis et de structures alvéolées, légères mais très rigides.
La méthode d'optimisation par homogénéisation consiste à considérer une pièce pleine, mais dont la densité varie de manière continue. La variable d'optimisation est donc la fonction de densité ρ pour chaque élément du maillage ; on impose que ρ varie de manière « continue », c'est-à-dire que la variation d'un élément à l'autre doit être limitée. Les propriétés du matériau fictif sont définies en fonction de cette densité.
Le post-traitement consiste à afficher des surfaces d'iso-densité, et d'en déduire des zones de vide et des zones de plein.

### Algorithmes d'optimisation
#### Méthode des gradients de forme

Considérons la forme initiale, Ω$_0$, la forme à l'étape t, Ω$_t$. Par ailleurs, si l'on considère que Ω$_t$ est une version déformée de Ω$_0$, on peut faire correspondre un point x$_0$ de Ω$_0$ à un point x$_t$ de Ω$_t$. On peut alors définir un champ de vitesse V :
    $\mathrm {V} (x_{0})=\lim _{t\to 0}{\frac {x_{t}-x_{0}}{t}}$.
On peut définir la dérivée de Gateaux de la fonction de coût ${\mathcal {F}}(\Omega _{t})$
    $\mathrm {d} {\mathcal {F}}(\Omega _{0})=\lim _{t\to 0}{\frac {{\mathcal {F}}(\Omega _{t})-{\mathcal {F}}(\Omega _{0})}{t}}$
si elle existe. Cette dérivée peut être exprimée en fonction du champ V ; si cette relation est linéaire, alors il existe une unique fonction de carré intégrable $\nabla {\mathcal {F}}\in \mathrm {L} ^{2}(\partial \Omega _{0})$ telle que
    $\mathrm {d} {\mathcal {F}}(\Omega _{0})=\langle \nabla {\mathcal {F}},\mathrm {V} \rangle _{\partial \Omega _{0}}$.
La fonction $\nabla {\mathcal {F}}$ est appelé gradient de forme. On peut ainsi appliquer un algorithme du gradient, la frontière ∂Ω évoluant dans le sens du gradient négatif, afin de faire diminuer la fonction de coût.
On peut définir des dérivées d'ordre supérieur, pour avoir un algorithme de type Newton, mais si cela réduit le nombre d'itérations, en revanche le calcul des dérivées d'ordre supérieur est complexe.
Il faut par ailleurs introduire la fonction de contrainte ${\mathcal {G}}$. Dans certains cas, on peut utiliser des multiplicateurs de Lagrange.