Contraintes d’expression et contraintes de table dans les modèles de configuration de produit
Cet article décrit l’utilisation des contraintes d’expression et de table. Les contraintes permettent de contrôler les valeurs d’attribut que vous pouvez sélectionner lorsque vous configurez des produits pour une commande client, un devis de vente, une commande fournisseur ou un ordre de fabrication. Vous pouvez utiliser des contraintes d’expression ou des contraintes de table selon la façon dont vous préférez créer les contraintes.
Les contraintes permettent de contrôler les valeurs d’attribut que vous pouvez sélectionner lorsque vous configurez des produits pour une commande client, un devis de vente, une commande fournisseur ou un ordre de fabrication. Vous pouvez utiliser des contraintes d’expression ou des contraintes de table selon la façon dont vous préférez créer les contraintes.
Que sont les contraintes d’expression ?
Les contraintes d’expression sont caractérisées par une expression utilisant l’arithmétique, les opérateurs booléens et les fonctions. Une contrainte d’expression est entrée pour un composant spécifique dans un modèle de configuration de produit. Elle ne peuvent pas être réutilisées ni partagées avec un autre composant. Toutefois, les contraintes d’expression pour un composant peuvent référencer des attributs des sous-composants du composant.
Que sont les contraintes de table ?
Les contraintes de table répertorient les combinaisons de valeurs autorisées pour les attributs lorsque vous configurez un produit. Les définitions de contrainte de table peuvent être utilisées génériquement. Lorsque vous créez une contrainte de table pour un composant dans un modèle de configuration de produit, vous sélectionnez une définition de contrainte de table. Pour créer les combinaisons autorisées, vous ajoutez des attributs de types spécifiques aux composants. Chaque type d’attribut a une valeur spécifique.
Exemple de contrainte de table
Cet exemple décrit la manière dont vous pouvez limiter la configuration d’un haut-parleur à des finitions et des grilles avant spécifiques. Le premier tableau indique les finitions du meuble et les grilles avant qui sont généralement disponibles pour la configuration. Les valeurs sont définies pour les types d’attribut Finitions du meuble et Grille avant.
Type d’attribut | Valeurs |
---|---|
Finitions du meuble | Noir, chêne, bois de rose, blanc |
Grille avant | Noir, métal, blanc |
Le tableau suivant indique les combinaisons définies par la contrainte de table Couleur et finition. Avec cette contrainte de table, vous pouvez configurer un haut-parleur avec une finition chêne et une grille noire, une finition bois de rose et une grille blanche, etc.
Terminer | Grille |
---|---|
Chêne | Noir |
Bois de rose | Blanc |
Blanc | Noir |
Blanc | Blanc |
Noir | Noir |
Noir | Métal |
Vous pouvez créer des contraintes de table définies par le système et par l’utilisateur. Pour plus d’informations, voir Contraintes de table définies par l’utilisateur et par le système.
Quelle syntaxe doit être utilisée pour écrire des contraintes ?
Vous devez utiliser la syntaxe du langage de modélisation d’optimisation (OML, Optimization Modeling Language) lorsque vous entrez des contraintes. Le système utilise le solveur de contrainte Microsoft Solver Foundation pour résoudre les contraintes.
Dois-je utiliser des contraintes de table ou des contraintes d’expression ?
Vous pouvez utiliser des contraintes d’expression ou des contraintes de table selon la façon dont vous préférez créer les contraintes. Vous créez une contrainte de table comme une matrice, alors qu’une contrainte d’expression est un relevé individuel. Lorsque vous configurez un produit, la contrainte utilisée n’a pas d’importance. L’exemple suivant montre comment les deux méthodes diffèrent.
Lorsque vous configurez un produit à l’aide des paramétrages de contrainte suivants, les combinaisons ci-dessous sont autorisées :
- Un produit de couleur noire et en taille 30 ou 50
- Un produit de couleur rouge et en taille 20
Paramétrage de contraintes de table
Couleur | Taille |
---|---|
Noir | 30 |
Noir | 50 |
Rouge | 20 |
Paramétrage de contraintes d’expression
(Color == "Noir" & (size == "30" | size == "50")) | (color == "Rouge" & size = "20")
Dois-je utiliser des opérateurs ou la notation d’infixe lorsque j’écris des contraintes d’expression ?
Vous pouvez entrer une contrainte d’expression à l’aide des opérateurs de préfixe disponibles ou de la notation d’infixe. Pour les opérateurs Min, Max et ABS, vous ne pouvez pas utiliser de notation d’infixe. Ces opérateurs sont inclus comme opérateurs standard dans la plupart des langages de programmation.
Quels opérateurs ou quelle notation d’infixe dois-je utiliser lorsque j’écris des contraintes d’expression ?
Les tableaux suivants répertorient les opérateurs et la notation d’infixe que vous pouvez utiliser lorsque vous entrez une contrainte d’expression pour un composant dans un modèle de configuration de produit. Les exemples du premier tableau montrent comment écrire une expression à l’aide de la notation d’infixe ou d’opérateurs.
Opérateur | Description | Syntaxe | Exemples |
---|---|---|---|
Implique | Si la condition a est vraie, alors appliquez la contrainte b. | Implies[a, b], infix: a -: b |
|
Et | Est vrai uniquement si toutes les conditions sont remplies. Si le nombre de conditions est 0 (zéro), le résultat est True. | And[args], infix: a & b & ... & z |
|
Ou | Est vrai si n’importe quelle condition est remplie. Si le nombre de conditions est 0 (zéro), le résultat est False. | Or[args], infix: a | b | ... | z |
|
Plus | Additionne ses conditions. Si le nombre de conditions est 0 (zéro), le résultat est 0. | Plus[args], infix: a + b + ... + z |
|
Moins | Rend son argument négatif. Il doit avoir précisément une condition. | Minus[expr], infix: -expr |
|
Abs | Prend la valeur absolue de sa condition. Il doit avoir précisément une condition. | Abs[expr] | Opérateur : Abs[x] |
Heures | Prend le produit de ses conditions. Si le nombre de conditions est 0 (zéro), le résultat est 1. | Times[args], infix: a * b * ... * z |
|
Puissance | Prend un exponentiel. L’exponentiation est appliquée de droite à gauche. Autrement dit, elle est associative à droite. Par conséquent, Power[a, b, c] est équivalent à Power[a, Power[b, c]]. Power peut être utilisé uniquement si l’exposant est une constante positive. | Power[args], infix: a ^ b ^ ... ^ z |
|
Max. | Produit la plus grande condition. Si le nombre de conditions est 0 (zéro), le résultat est Infinity. | Max[args] | Opérateur : Max[x, y, 2] == z |
Min. | Produit la plus petite condition. Si le nombre de conditions est 0 (zéro), le résultat est Infinity. | Min[args] | Opérateur : Min[x, y, 2] == z |
Non | Produit l’inverse logique de sa condition. Il doit avoir précisément une condition. | Not[expr], infix: !expr |
|
Les exemples du tableau suivant indiquent comment entrer une notation d’infixe.
Notation d’infixe | Description |
---|---|
x + y + z | Ajout |
x * y * z | Multiplication |
x - y | La soustraction binaire est traduite de la même façon que l’addition binaire avec un second négatif. |
x ^ y ^ z | Exponentiation avec associativité à droite |
!x | Non booléen |
x -: y | Implication booléenne |
x | y |
x & y & z | Et booléen |
x == y == z | Égalité |
x != y != z | Distinct |
x < y < z | Inférieur à |
x > y > z | Supérieur |
x <= y <= z | Inférieur ou égal à |
x >= y >= z | Supérieur ou égal à |
(x) | Les parenthèses remplacent la priorité par défaut. |
Pourquoi mes contraintes d’expression ne sont-elle pas validées correctement ?
Vous ne pouvez pas utiliser de mots clés réservés comme nom de solveur pour les attributs, les composants ou les sous-composants dans un modèle de configuration de produit. Voici la liste des mots clés réservés que vous n’avez pas le droit d’utiliser :
- Plafond
- Elément
- Égal à
- Sol
- Si
- Inférieur
- Supérieur
- Implique
- Journal
- Max.
- Min
- Moins
- Plus
- Puissance
- Temps
- Emplacement
- Modèle
- Décision
- Objectif