• Aucun résultat trouvé

CHAPITRE IV Concepts et apports en programmation par contraintes

IV. 2.2.1 – Variables de conception

Dans le chapitre III, nous avons montré l'importance des variables de conception pour le concepteur, lorsqu'il définit un modèle en conception architecturale. En effet, ces variables sont transverses au cycle de vie du produit. En conception architecturale, le concepteur construit son modèle autour de ces variables pour les relier à des critères de performance.

De plus, les incertitudes et les imprécisions liées à des décisions non encore prises ou à l'expression du comportement du produit induisent parfois le fait que certaines parties des modèles soient sous-contraintes (moins de contraintes que de variables) ou que certaines précisions sur les variables sont moins bien connues. Lorsqu'un problème est sous-contraint, beaucoup de solutions sont trouvées, la consistance des domaines étant souvent vérifiée. Ce n'est pas le cas des variables de conception qui sont directement définies en accord avec la connaissance issue du cahier des charges et de la phase de recherche de concepts.

Il nous semble alors important, dans le processus d'exploration de l'espace de recherche, de traduire cette importance des variables de conception. L'exploration précoce des variables de conception permet ainsi de définir au plus tôt une solution de conception, c'est-à- dire, une architecture produit représentée par les valeurs des variables de conception. La phase

Chapitre IV – Concepts et apports en programmation par contraintes

de propagation de contraintes permet de vérifier la cohérence des valeurs de ces variables entre elles et avec le reste du modèle. Certaines des variables de conception sont des variables discrètes (choix de caractéristiques : composants, matériaux, topologie), qui permettent de réduire rapidement le contexte d'exploitation des variables auxiliaires en réduisant les incertitudes liées au produit. Les domaines des variables auxiliaires sont alors réduits de manière à satisfaire les contraintes du modèle. Une fois une solution de conception définie, il ne reste plus qu'à vérifier sa faisabilité en explorant l'espace de recherche représenté par les domaines des variables auxiliaires. Nous ne discernons pas ici les variables de décision des variables auxiliaires, car elles ne définissent pas l'architecture du produit, leurs valeurs n'étant que des indicateurs de performance pour le concepteur.

Nous avons alors défini une nouvelle heuristique de recherche permettant de calculer une solution de conception avant d'explorer les domaines des variables auxiliaires (voir algorithme 3).

Algorithme 3 : Algorithme de choix des variables de conception d'abord.

VCoFirst ( : ensemble de variables, : boîte) Début

:= { est une VCo et peut être découpé}

:= { peut être découpé} –

Si est vide alors

:= SelectRoundRobin( ) Sinon := SelectRoundRobin( ) Fin si Retourner Fin

Cet algorithme prend en entrée un ensemble de variables et une boîte intervalle associée à ces variables. L'ensemble de variables est décomposé en deux sous-ensembles de variables découpables : les variables de conception et les autres. Tant que l'ensemble des variables de conception n'est pas vide, on choisit une variable dans cet ensemble en utilisant une stratégie de tourniquet. Ensuite, on applique la même stratégie sur l'ensemble des variables auxiliaires.

Cette première heuristique fait l'hypothèse que toutes les variables auxiliaires sont

78 x Xd x Xa x Xd Xd x2 X : Bx Xa Bx x2 X : x Xd B X

nd+ 1

Résolution par satisfaction de contraintes pour l'aide à la décision en conception architecturale

secondaires et peu importantes pour le processus d'exploration. Cependant, certaines d'entre elles peuvent être associées à des phénomènes physiques ou des caractéristiques se révélant contraignantes pour le dimensionnement du produit. Ainsi, l'exploration de ces variables permet de détecter plus tôt des inconsistances avec l'architecture produit en cours de définition. Il n'est pas facile pour le concepteur d'identifier ces variables, c'est pourquoi nous avons défini une nouvelle heuristique utilisant un ratio pour diversifier la recherche sur l'ensemble des variables auxiliaires. Ce ratio correspond au pourcentage du nombre de découpages à effectuer sur les variables de conception par rapport au nombre de découpages total (voir algorithme 4).

Algorithme 4 : Algorithme de choix des variables favorisant les variables de conception.

VCoFirst ( : ensemble de variables, : boîte, : ratio entier) Début

:= { est une VCo, peut être découpé}

:= { peut être découpé} –

Soit le nombre de découpages effectués

Soit le nombre de découpages effectués sur les VCo

Si est vide ou ou alors

:= + 1 := SelectRoundRobin( ) Sinon := SelectRoundRobin( ) Fin si := Retourner Fin

L'algorithme 4 prend en entrée un ensemble de variables, une boîte intervalle associée et un ratio entier. Comme précédemment, l'ensemble de variables est décomposé en deux sous-ensembles de variables découpables : les variables de conception et les autres. On comptabilise alors le nombre total de découpages et le nombre de ceux effectués sur les variables de conception . Tant qu'il reste des variables de conception à découper et que est inférieur au pourcentage de défini par le ratio R, une variable de conception est choisi, sinon on choisit une variable auxiliaire. A chaque fois, c'est la stratégie Round-Robin qui est

79 n nd nd n x n + 1 n Xa x Xd x nd nd 100:nd< n:R n = 0 Xa nd n Xd x2 X : Bx Xa Bx x2 X : x Xd R B X

Chapitre IV – Concepts et apports en programmation par contraintes

appliquée pour choisir une variable dans un des deux ensembles de variables.

Avec cette nouvelle stratégie, nous pouvons définir une intensification sur les variables de conception ou une diversification sur les variables auxiliaires. Cette stratégie s'apparente alors à une méta-heuristiques [Blu03], où la diversification (ou exploration) désigne un processus visant à récolter de l’information sur le problème et où l'intensification (ou exploitation) vise à utiliser l’information déjà récoltée pour définir et parcourir les zones intéressantes de l'espace de recherche. Les notions d’intensification et de diversification sont prépondérantes dans la conception des méta-heuristiques, qui doivent atteindre un équilibre délicat entre ces deux phases de recherches. Les deux notions ne sont pas contradictoires, mais complémentaires. Dans notre cas et pour un problème donné, le ratio optimal est aussi difficile à définir. Il ne résulte pas forcément du rapport entre le nombre de variables de conception et le nombre de variables auxiliaires. Le concepteur doit percevoir l'importance des variables auxiliaires dans le modèle pour le définir de manière pertinente.