Uttrykksbegrensninger og tabellbegrensninger i produktkonfigurasjonsmodeller
Denne artikkelen beskriver bruken av uttrykks- og tabellbegrensninger. Begrensninger kontrollerer attributtverdiene du kan velge når du konfigurerer produkter for en salgsordre, et salgstilbud, en bestilling eller en produksjonsordre. Du kan bruke uttrykksbegrensninger eller tabellbegrensninger, avhengig av hvordan du foretrekker å bygge begrensningene.
Begrensninger brukes til å kontrollere attributtverdiene du kan velge når du konfigurerer produkter for en salgsordre, et salgstilbud, en bestilling eller en produksjonsordre. Du kan bruke uttrykksbegrensninger eller tabellbegrensninger, avhengig av hvordan du foretrekker å bygge begrensningene.
Hva er uttrykksbegrensninger?
Uttrykksbegrensninger kjennetegnes ved et uttrykk som bruker aritmetiske og boolske operatorer og funksjoner. En uttrykksrestriksjon skrives for en bestemt komponent i en produktkonfigurasjonsmodell. Det kan ikke brukes på nytt eller deles med en annen komponent. Uttrykksbegrensningene for en komponent kan imidlertid referere til attributter for delkomponenter for komponenten.
Hva er tabellbegrensninger?
Tabellbegrensninger viser kombinasjonene av verdier som er tillatt for attributter når du konfigurerer et produkt. Definisjoner av tabellbegrensninger kan brukes generelt. Når du oppretter en tabellbegrensning for en komponent i en produktkonfigurasjonsmodell, velger du en tabellbegrensningsdefinisjon. Hvis du vil opprette kombinasjonene som er tillatt, legger du til attributter for bestemte typer i komponentene. Hver attributt har en bestemt verdi.
Eksempel på tabellbegrensning
Dette eksemplet viser hvordan du kan begrense konfigurasjonen av en høyttaler til bestemte kabinettyper og fronter. Den første tabellen viser kabinettyper og fronter som vanligvis er tilgjengelige for konfigurasjon. Verdiene er definert for attribyttypene Kabinettyper og Frontgrill.
Attributtype | Verdier |
---|---|
Kabinettyper | Svart, eik, Rosewood, hvit |
Frontgrill | Svart, metall, hvit |
Den neste tabellen viser kombinasjonene som er definert av tabellbegrensningen Farge og finish. Ved å bruke denne tabellbegrensningen, kan du konfigurere en høyttaler som har eik-finish og en svart grill, en Rosewood-finish og en hvit grill og så videre.
Ferdig | Grill |
---|---|
Eik | Svart |
Rosewood | Hvit |
Hvit | Svart |
Hvit | Hvit |
Svart | Svart |
Svart | Metall |
Du kan opprette systemdefinerte og brukerdefinerte tabellbegrensninger. Hvis du vil ha mer informasjon, se Systemdefinerte og brukerdefinerte tabellbegrensninger.
Hvilken syntaks skal brukes for å skrive begrensninger?
Du må bruke OML-syntaks (Optimization Modeling Language) når skriver begrensningene. Systemet bruker Microsoft Solver Foundation-begrensningsløseren til å løse begrensningene.
Bør jeg bruke tabellbegrensninger eller uttrykksbegrensninger?
Du kan enten bruke uttrykksbegrensninger eller tabellbegrensninger, avhengig av hvordan du foretrekker å bygge begrensningene. Du bygger opp en tabellbegrensning som en matrise, mens en uttrykksrestriksjon er et enkeltuttrykk. Når du konfigurerer et produkt, spiller det ingen rolle hvilken type betingelse som brukes. Følgende eksempel viser forskjellen mellom de to metodene.
Når du konfigurerer et produkt ved hjelp av følgende begrensningsoppsett, er disse kombinasjonene tillatt:
- Et produkt i fargen svart og størrelse 30 eller 50
- Et produkt i fargen rødt og størrelse 20
Tabellbegrensningsoppsett
Farge | Størrelse |
---|---|
Svart | 30 |
Svart | 50 |
Rød | 20 |
Uttrykksrestriksjonsoppsett
(Farge == "Svart" & (størrelse == "30" | størrelse == "50")) | (farge == "Rød" & størrelse = "20")
Bør jeg bruke operatorer eller infiksnotasjoner når jeg skriver uttrykksbegrensninger?
Du kan skrive en uttrykksbegrensning ved å bruke de tilgjengelige prefiksoperatorene eller ved hjelp av en infix-notasjon. For operatorene Min, Maks og Abs kan du ikke bruke en infix-notasjon. Disse operatorene er inkludert som standard i de fleste programmeringsspråk.
Hvilke operatorer og infiksnotasjoner kan jeg bruke når jeg skriver uttrykksbegrensninger?
Tabellen nedenfor viser operatorene og infix-notasjonene som du kan bruke når du skriver en uttrykksrestriksjon for en komponent i en produktkonfigurasjonsmodell. I eksemplene i den første tabellen kan du se hvordan du skriver inn et uttrykk med infiksnotasjon eller operatorer.
Operator | Beskrivelse | Syntaks | Eksempler |
---|---|---|---|
Implies | Hvis betingelsen er true, bruker du begrensning b. | Implies[a, b], infix: a -: b |
|
Og | Dette gjelder bare hvis alle betingelsene er oppfylt. Hvis antallet betingelser er 0 (null), gir den True. | And[args], infix: a & b & ... & z |
|
Eller | Dette er tilfelle hvis en betingelse er Sann. Hvis antallet betingelser er 0 (null), gir den False. | Or[argumenter], infix: a | b | ... | z |
|
Pluss | Det summerer betingelsene. Hvis antallet betingelser er 0 (null), gir den 0. | Plus[argumenter], infix: a + b + ... + z |
|
Minus | Dette opphever argumentet. Dette må ha nøyaktig én betingelse. | Minus[uttrykk], infiks: -uttrykk |
|
Abs | Dette krever absoluttverdien til betingelsen. Dette må ha nøyaktig én betingelse. | Abs[expr] | Operator: Abs[x] |
Klokkeslett | Dette tar produktet for betingelsene. Hvis antallet betingelser er 0 (null), gir den 1. | Times[argumenter], infix: a * b * ... * z |
|
Styrke | Dette krever en eksponentiell verdi. Dette gjelder eksponentiering fra høyre mot venstre. (Med andre ord er den høyre-assosiativ.) Derfor tilsvarer Power[a, b, c] Power[a, Power[b, c]]. Styrke kan bare brukes med en positiv konstant som eksponent. | Styrke[argumenter], infix: a ^ b ^ ... ^ z |
|
Maks. | Dette gir den største betingelsen. Hvis antallet betingelser er 0 (null), gir den Infinity. | Max[argumenter] | Operator: Max[x, y, 2] == z |
Min. | Dette gir den minste betingelsen. Hvis antallet betingelser er 0 (null), gir den Infinity. | Min[argumenter] | Operator: Min[x, y, 2] == z |
Ikke | Dette gir det logisk motsatte av betingelsen. Dette må ha nøyaktig én betingelse. | Not[uttrykk], infiks: !uttrykk |
|
Eksemplene i den neste tabellen viser hvordan du skriver en infix-notasjon.
Infiksnotasjon | Beskrivelse |
---|---|
x + y + z | Tillegg |
x * y * z | Multiplikasjon |
x - y | Binær subtraksjon oversettes på samme måte som binær addisjon med en negert andreverdi. |
x ^ y ^ z | Eksponentiering med høyre-assosiativitet |
!x | Boolsk ikke |
x -: y | Boolsk implikasjon |
x | y |
x & y & z | Boolsk og |
x == y == z | Likhet |
x != y != z | Spesifikk |
x < y < z | Mindre enn |
x > y > z | Større enn |
x <= y <= z | Mindre eller lik |
x >= y >= z | Større enn eller lik |
(x) | Parenteser overstyrer standardprioritet. |
Hvorfor valideres ikke uttrykksbegrensningene mine riktig?
Du kan ikke bruke reserverte nøkkelord som problemløsernavn for attributter, komponenter eller delkomponenter i en produktkonfigurasjonsmodell. Her er en liste over de reserverte nøkkelordene du ikke kan bruke:
- Tak
- Element
- Lik
- Gulv
- Hvis
- Mindre
- Større
- Implies
- Logg
- Maks.
- Min.
- Minus
- Pluss
- Styrke
- Tider
- Spor
- Modell
- Beslutningsprofil
- Mål