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
  • Opérateur : Implies[x != 0, y >= 0]
  • Notation d’infixe : x != 0 -: y >= 0
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
  • Opérateur : And[x == 2, y <= 2]
  • Notation d’infixe : x == 2 & y <= 2
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
  • Opérateur : Or[x == 2, y <= 2]
  • Notation d’infixe : x == 2 | y <= 2
Plus Additionne ses conditions. Si le nombre de conditions est 0 (zéro), le résultat est 0. Plus[args], infix: a + b + ... + z
  • Opérateur : Plus[x, y, 2] == z
  • Notation d’infixe : x + y + 2 == z
Moins Rend son argument négatif. Il doit avoir précisément une condition. Minus[expr], infix: -expr
  • Opérateur : Minus[x] == y
  • Notation d’infixe : x == y
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
  • Opérateur : Times[x, y, 2] == z
  • Notation d’infixe : x * y * 2 == 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
  • Opérateur : Power[x, 2] == y
  • Notation d’infixe :x ^ 2 == y
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
  • Opérateur : Not[x] & Not[y == 3]
  • Notation d’infixe : !x!(y== 3)

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

Ressources supplémentaires

Création d’un contrainte d’expression

Ajouter un calcul à un modèle de configuration de produit