Compartilhar via


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
  • Operador: Implies[x != 0, y >= 0]
  • Notação de infixo: x != 0 -: y >= 0
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
  • Operador: And[x == 2, y <= 2]
  • Notação de infixo: x == 2 & y <= 2
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
  • Operador: Or[x == 2, y <= 2]
  • Notação de infixo: x == 2 | y <= 2
Mais Isso soma as condições. Se o número de condições for 0, ele produzirá 0. Plus[args], infixo: a + b + ... + z
  • Operador: Plus[x, y, 2] == z
  • Notação de infixo: x + y + 2 == z
Menos Isso nega o argumento. Deve ter exatamente uma condição. Minus[expr], infixo: -expr
  • Operador: Minus[x] == y
  • Notação de infixo: -x == y
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
  • Operador: Times[x, y, 2] == z
  • Notação de infixo: x * y * 2 == 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
  • Operador: Power[x, 2] == y
  • Notação de infixo: x ^ 2 == y
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
  • operador: Not[x] & Not[y == 3]
  • Notação de infixo: !x!(y == 3)

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

Recursos adicionais

Criar uma restrição de expressão

Adicionar um cálculo a um modelo de configuração de produto