Restrições de expressão e restrições de tabela nos modelos de configuração do produto
Este artigo descreve o uso de restrições de expressão e de tabela. As restrições controlam os valores de atributo que podem ser selecionados quando você configura produtos para uma ordem de venda, cotação de venda, ordem de compra, ou uma ordem de produção. É possível usar restrições de expressão ou de tabela, dependendo de como você preferir criar as restrições.
As restrições são usadas para controlar os valores de atributo que podem ser selecionados quando você configura produtos para uma ordem de venda, cotação de venda, ordem de compra ou uma ordem de produção. É possível usar restrições de expressão ou de tabela, dependendo de como você preferir criar as restrições.
O que são as restrições de expressão?
As restrições de expressão são caracterizadas por uma expressão que usa operadores e funções aritméticos e boolianos. Uma restrição de expressão será criado para um determinado componente em um modelo de configuração de produto. Não pode ser reutilizada ou compartilhada com outro componente. No entanto, as restrições de expressão para um componente pode fazer referência a atributos dos subcomponentes do componente.
O que são as restrições de tabela?
As restrições de tabela listam as combinações de valores que são permitidas para os atributos quando você configura um produto. As definições de restrição de tabela podem ser usadas genericamente. Ao criar uma restrição de tabela para um componente em um modelo de configuração de produto, selecione uma definição de restrição de tabela. Para criar combinações que são permitidas, adicione tipos de atributos específicos aos componentes. Cada tipo de atributo possui um valor específico.
Exemplo de uma restrição de tabela
Este exemplo mostra como você pode limitar a configuração de um orador para especificar partes frontais e acabamentos do gabinete. A primeira tabela mostra as partes frontais e acabamentos dos gabinetes que geralmente estão disponíveis para a configuração. Os valores são definidos para os tipos de atributos Acabamento do gabinete e Grade frontal.
Tipo de atributo | Valores |
---|---|
Acabamento do gabinete | Preto, carvalho, branco, jacarandá |
Grade frontal | Preto, metal, branco |
A tabela a seguir mostra as combinações que são definidas pela restrição da tabela Cor e acabamento. Usando a restrição de tabela, você pode configurar um alto-falante com o acabamento de de carvalho e uma grade preta, um acabamento de jacarandá e uma grade branca, e assim por diante.
Concluir | Grade |
---|---|
Carvalho | Preto |
Jacarandá | Branco |
Branco | Preto |
Branco | Branco |
Preto | Preto |
Preto | Metal |
É possível criar restrições de tabela definidas pelo sistema e pelo usuário. Para obter mais informações, consulte Restrições de tabela definidas pelo sistema e pelo usuário.
Qual sintaxe deve ser usada para gravar restrições?
Você deve usar a sintaxe do OML (Optimization Modeling Language) ao gravar restrições. O sistema usa o solver de restrição do Microsoft Solver Foundation para resolver as restrições.
Devo usar as restrições de tabela ou restrições de expressão?
É possível usar restrições de expressão ou de tabela, dependendo de como você prefere criar as restrições. Você cria uma restrição de tabela como uma matriz, enquanto uma restrição da expressão é um demonstrativo individual. Ao configurar um produto, não importa o tipo de restrição que está sendo usado. O exemplo a seguir mostra como os dois métodos diferem.
Quando você configura um produto usando as seguintes configurações de restrição, essas combinações são permitidas:
- Um produto na cor preta com o tamanho 30 ou 50
- Um produto na cor vermelha com o tamanho 20
Configuração da restrição de tabela
Cor | Tamanho |
---|---|
Preto | 30 |
Preto | 50 |
Vermelho | 20 |
Configuração de restrição de expressão
(Cor == "Preto" & (tamanho == "30" | tamanho == "50")) | (cor == "Vermelho" & tamanho = "20")
Devo usar operadores ou notação de infixo quando escrevo restrições de expressão?
É possível gravar uma restrição de expressão usando os operadores de prefixo disponíveis ou usando a notação de infixo. Para os operadores Mín., Máx. e Abs, você não pode usar a notação de infixo. Estes operadores estão incluídos como operadores padrão na maioria das linguagens de programação.
Quais operadores e notação de infixo posso usar ao gravar restrições de expressão?
As tabelas a seguir listam os operadores e as notações de infixo que você pode usar ao criar uma restrição de expressão para um componente em um modelo de configuração de produto. Os exemplos da primeira tabela mostram como gravar uma expressão usando os operadores ou a notação de infixo.
Operador | Descrição | Sintaxe | Exemplos |
---|---|---|---|
Implies | Se a condição A for verdadeira, aplique a restrição B. | Implies[a, b], infixo: a -: b |
|
E | Isso ocorre apenas se todas as condições forem verdadeiras. If the number of conditions is 0 (zero), ele produzirá Verdadeiro. | And[args], infixo: a & b & ... & z |
|
Ou | Isso será verdadeiro se qualquer condição for verdadeira. Se o número de condições for 0, ele produzirá Falso. | Or[args], infixo: a | b | ... | z |
|
Mais | Isso soma as condições. Se o número de condições for 0, ele produzirá 0. | Plus[args], infixo: a + b + ... + z |
|
Menos | Isso nega o argumento. Deve ter exatamente uma condição. | Minus[expr], infixo: -expr |
|
Abs | Leva o valor absoluto da condição. Deve ter exatamente uma condição. | Abs[expr] | Operador: Abs[x] |
Horas | Leva o produto das condições. Se o número de condições for 0, ele produzirá 1. | Times[args], infixo: a * b * ... * z |
|
Energia | Leva um exponencial. Ele aplica a exponenciação da direita para a esquerda. (Ou seja, é associativo à direita). Consequentemente, Power[a, b, c] é equivalente a Power[a, Power[b, c]]. Potência pode ser usada somente se o expoente for uma constante positiva. | Power[args], infixo: a ^ b ^ ... ^ z |
|
Máx. | Isso gera a condição a maior. Se o número de condições for 0, ele produzirá Infinito. | Max[args] | Operador: Max[x, y, 2] == z |
Mín. | Isso gera a condição menor. Se o número de condições for 0, ele produzirá Infinito. | Min[args] | Operador: Min[x, y, 2] == z |
Não | Isso gera a inversão lógica da condição. Deve ter exatamente uma condição. | Not[expr], infixo: !expr |
|
Os exemplos na tabela a seguir mostram como gravar uma notação de infixo.
Notação de infixo | descrição |
---|---|
x + y + z | Adição |
x * y * z | Multiplicação |
x - y | A subtração binária é traduzida da mesma forma de uma adição binária onde há um segundo binário. |
x ^ y ^ z | Exponenciação com associabilidade direta |
!x | Não booliano |
x -: y | Implicação booliana |
x | y |
x & y & z | E booliano |
x == y == z | Igualdade |
x != y != z | Distinto |
x < y < z | Menor que |
x > y > z | Maior que |
x <= y <= z | Menor que ou igual a |
x >= y >= z | Maior que ou igual a |
(x) | Precedência padrão de sobreposição de parênteses. |
Por que minhas restrições de expressão não são validadas corretamente?
Não é possível usar palavras-chave reservadas como nomes de atributos, componentes ou subcomponentes em um modelo de configuração de produto. Veja uma lista das palavras-chave reservadas que você não pode usar:
- Teto
- Elemento
- Equivalente
- Piso
- Se
- Menos
- Maior
- Implies
- Log
- Máx
- Min.
- Menos
- Mais
- Potência
- Tempos
- Slot
- Modelo
- Decisão
- Meta