Udtryksbegrænsninger og tabelbegrænsninger i produktkonfigurationsmodeller

Denne artikel beskriver brugen af udtryksbegrænsninger og tabelbegrænsninger. Begrænsninger styrer de attributværdier, som du kan vælge, når du konfigurerer produkter til en salgsordre, et salgstilbud, en indkøbsordre eller en produktionsordre. Du kan bruge udtryksbegrænsninger eller tabelbegrænsninger, afhængigt af hvordan du foretrækker at udforme begrænsninger.

Begrænsninger bruges til at styre de attributværdier, som du kan vælge, når du konfigurerer produkter til en salgsordre, et salgstilbud, en indkøbsordre eller en produktionsordre. Du kan bruge udtryksbegrænsninger eller tabelbegrænsninger, afhængigt af hvordan du foretrækker at udforme begrænsninger.

Hvad er udtryksbegrænsninger?

Udtryksbegrænsninger er kendetegnet ved et udtryk, der bruger de aritmetiske og booleske operatorer og funktioner. En udtryksbegrænsning skrives til en bestemt komponent i en produktkonfigurationsmodel. Den kan ikke genbruges af eller deles med en anden komponent. Udtryksbegrænsninger for en komponent kan dog henvise til attributter for komponentens underkomponenter.

Hvad er tabelbegrænsninger?

Tabelbegrænsninger viser kombinationerne af de værdi, der er tilladt for attributter, når du konfigurerer et produkt. Definitioner på tabelbegrænsninger kan anvendes generisk. Når du opretter en tabelbegrænsning for en komponent i en produktkonfigurationsmodel, skal du vælge en definition på en tabelbegrænsning. Hvis du vil oprette kombinationer, der er tilladt, skal du føje attributter af bestemte typer til komponenterne. Hver attributtype har en bestemt værdi.

Eksempel på tabelbegrænsning

Dette eksempel viser, hvordan du kan begrænse konfigurationen af en højttaler til bestemte kabinetfinishes og fronter. I den første tabel vises de kabinetfinishes og fronter, der normalt er tilgængelige til konfiguration. Værdierne er defineret for attributtyperne Kabinetfinish og Frontgitter.

Attributtype Værdier
Kabinetfinish Sort, egetræ, rosentræ, hvid
Frontgitter Sort, metal, hvid

I næste tabel vises de kombinationer, der er defineret af tabel begrænsningen Farve og finish. Ved hjælp af denne tabelbegrænsning kan du konfigurere en højttaler, der har en finish i egetræ og et sort gitter, en finish i rosentræ og et hvidt gitter og så videre.

Afslut Gitter
Egetræ Sort
Rosentræ Hvid
Hvid Sort
Hvid Hvid
Sort Sort
Sort Metal

Du kan oprette systemdefinerede og brugerdefinerede tabelbegrænsninger. Du kan finde flere oplysninger under Systemdefinerede og brugerdefinerede tabelbegrænsninger.

Hvilken syntaks skal der bruges til at skrive begrænsninger?

Du skal bruge OML-syntaksen, når du skriver begrænsninger. Systemet bruger Microsoft Solver Foundation-begrænsningsløseren til at løse begrænsningerne.

Skal jeg bruge tabelbegrænsninger eller udtryksbegrænsninger?

Du kan enten bruge udtryksbegrænsninger eller tabelbegrænsninger, afhængigt af hvordan du foretrækker at konfigurere begrænsninger. Du udformer en tabelbegrænsning som en matrix, hvorimod en udtryksbegrænsning er en enkelt sætning. Når du konfigurerer et produkt, betyder det ikke noget, hvilken slags begrænsning der bruges. I følgende eksempel kan du se, hvordan de to metoder adskiller sig fra hinanden.

Når du konfigurerer et produkt ved hjælp af følgende begrænsnings, er disse kombinationer tilladt:

  • Et produkt i farven sort og i størrelsen 30 eller 50
  • Et produkt i farven rød og i størrelsen 20

Konfiguration af tabelbegrænsning

Farve Størrelse
Sort 30
Sort 50
Rød 20

Konfiguration af udtryksbegrænsning

(Color == "Sort" & (size == "30" | size == "50")) | (color == "Rød" & size = "20")

Skal jeg bruge operatorer eller infix-anmærkning, når jeg skriver udtryksbegrænsninger?

Du kan skrive en udtryksbegrænsning enten ved hjælp af de tilgængelige præfiksoperatorer eller ved hjælp af infix-anmærkningen. Du kan ikke bruge infix-anmærkningen for operatorerne Min, Max og Abs. Disse operatorer er inkluderet som standardoperatorer i de fleste programmeringssprog.

Hvilke operatorer og hvilken infix-anmærkning kan jeg bruge, når jeg skriver udtryksbegrænsninger?

I følgende tabeller vises de operatorer og den infix-anmærkning, som du kan bruge, når du skriver en udtryksbegrænsning for en komponent i en produktkonfigurationsmodel. I eksemplerne i den første tabel kan du se, hvordan du skriver et udtryk ved hjælp af infix-anmærkningen eller operatorer.

Operator Beskrivende tekst Syntaks Eksempler
Indebærer Hvis betingelsen er sand, skal du anvende begrænsning b. Implies[a, b], infix: a -: b
  • Operator: Implies[x != 0, y >= 0]
  • Infix-notation: x != 0 -: y >= 0
Og Dette gælder kun, hvis alle betingelser er opfyldt. Hvis antallet af betingelser er 0 (nul), returneres True. And[args], infix: a & b & ... & z
  • Operator: And[x == 2, y <= 2]
  • Infix-notation: x == 2 & y <= 2
Eller Dette er tilfældet, hvis en betingelse er sand. Hvis antallet af betingelser er 0 (nul), returneres False. Or[args], infix: a | b | ... | z
  • Operator: Or[x == 2, y <= 2]
  • Infix-notation: x == 2 | y <= 2
Plus Dette opsummerer dens betingelser. Hvis antallet af betingelser er 0 (nul), returneres 0. Plus[args], infix: a + b + ... + z
  • Operator: Plus[x, y, 2] == z
  • Infix-notation: x + y + 2 == z
Minus Derved negeres argumentet. Det skal have præcis én betingelse. Minus[expr], infix: -expr
  • Operator: Minus[x] == y
  • Infix-notation: -x == y
Abs Dette tager den absolutte værdi af dets tilstand. Det skal have præcis én betingelse. Abs[expr] Operator: Abs[x]
Tider Herefter tages produktet af dens betingelser. Hvis antallet af betingelser er 0 (nul), returneres 1. Times[args], infix: a * b * ... * z
  • Operator: Times[x, y, 2] == z
  • Infix-notation: x * y * 2 == z
Strøm Det tager en eksponentiel. Det gælder eksponentiering fra højre mod venstre. (Det er med andre ord en højre-association). Derfor svarer Power[a, b, c] til Power[a, Power[b, c]]. Power kan kun bruges, hvis eksponenten er en positiv konstant. Power[args], infix: a ^ b ^ ... ^ z
  • Operator: Power[x, 2] == y
  • Infix-notation: x ^ 2 == y
Maks. Dette giver den største tilstand. Hvis antallet af betingelser er 0 (nul), returneres Infinity. Max[args] Operator: Max[x, y, 2] == z
Min. Dette giver den mindste tilstand. Hvis antallet af betingelser er 0 (nul), returneres Infinity. Min[args] Operator: Min[x, y, 2] == z
Negeret Dette giver den logiske inverse af tilstanden. Det skal have præcis én betingelse. Not[expr], infix: !expr
  • Operator: Not[x] & Not[y == 3]
  • Infix-notation: !x!(y == 3)

Eksemplerne i næste tabel viser, hvordan du skriver en infix-anmærkning.

Notationen infix Beskrivende tekst
x + y + z Addition
x * y * z Multiplikation
x - y Binær subtraktion oversættes på samme måde som binær addition, hvor der er et negativt sekund.
x ^ y ^ z Eksponentiering, der har en højre-association
!x Boolesk ikke
x -: y Boolesk virkning
x y
x & y & z Boolesk og
x == y == z Lig med
x != y != z Bestemt
x < y < z Mindre end
x > y > z Større end
x <= y <= z Mindre end eller lig med
x >= y >= z Større end eller lig med
(x) Parentes tilsidesætter standardprioritering.

Hvorfor valideres mine udtryksbegrænsninger ikke korrekt?

Du kan ikke bruge et reserveret nøgleord som problemløsernavn til attributter, komponenter og underkomponenter i en produktkonfigurationsmodel. Her er en liste over de reserverede nøgleord, som du kan bruge:

  • Loft
  • Element
  • Lig med
  • Etage
  • Hvis
  • Mindre end
  • Større end
  • Indebærer
  • Log
  • Maks
  • Min.
  • Minus
  • Plus
  • Power
  • Times
  • Slot
  • Model
  • Beslutning
  • Mål

Yderligere ressourcer

Oprette en udtryksbegrænsning

Tilføje en beregning til en produktkonfigurationsmodel