Partilhar via


Restrições de expressão e restrições de tabela nos modelos de configuração do produto

Este artigo descreve a utilização de restrições de expressão e de tabela. As restrições controlam os valores de atributo que podem ser selecionados quando configura produtos para uma ordem de venda, cotação de venda, nota de encomenda ou uma ordem de produção. É possível utilizar restrições de expressão ou de tabela, dependendo de como preferir criar as restrições.

As restrições são utilizadas para controlar os valores de atributo que podem ser selecionados quando configura produtos para uma ordem de venda, cotação de venda, nota de encomenda ou uma ordem de produção. É possível utilizar restrições de expressão ou de tabela, dependendo de como preferir criar as restrições.

O que são as restrições de expressão?

As restrições de expressão são caraterizadas por uma expressão que utiliza operadores aritméticos e booleanos e funções. Uma restrição de expressão será criado para um determinado componente num modelo de configuração de produto. Não pode ser reutilizada ou partilhada com outro componente. No entanto, as restrições de expressão para um componente podem 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 configura um produto. As definições de restrição de tabela podem ser utilizadas genericamente. Ao criar uma restrição de tabela para um componente num 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 pode limitar a configuração de um altifalante para especificar partes frontais e acabamentos dos armários. A primeira tabela mostra as partes frontais e acabamentos dos armários que geralmente estão disponíveis para a configuração. Os valores são definidos para os tipos de atributos Acabamento do armário e Grelha frontal.

Tipo de atributo Valores
Acabamento do armário Preto, carvalho, pau-rosa, branco
Grelha frontal Preto, metal, branco

A tabela a seguir mostra as combinações que são definidas pela restrição da tabela Cor e acabamento. Utilizando a restrição de tabela, pode configurar um altifalante com o acabamento de carvalho e uma grelha preta, um acabamento de pau-rosa e uma grelha branca, e assim por diante.

Concluir Grelha
Carvalho Preto
Pau-rosa Branco
Branco Preto
Branco Branco
Preto Preto
Preto Metal

É possível criar restrições de tabela definidas pelo sistema e pelo utilizador. Para obter mais informações, consulte Restrições de tabela definidas pelo sistema e pelo utilizador.

Qual sintaxe deve ser utilizada para escrever restrições?

Deve utilizar a sintaxe da OML (Optimization Modeling Language) ao escrever restrições. O sistema utiliza o solucionador de restrição do Microsoft Solver Foundation para resolver as restrições.

Devo utilizar as restrições de tabela ou as restrições de expressão?

É possível utilizar restrições de expressão ou de tabela, dependendo de como prefere criar as restrições. Cria uma restrição de tabela como uma matriz, enquanto uma restrição de expressão é uma afirmação individual. Ao configurar um produto, não importa o tipo de restrição que está a ser utilizado. O exemplo a seguir mostra como os dois métodos diferem.

Quando configura um produto utilizando as seguintes configurações de restrição, estas 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 utilizar operadores ou a notação de infixo quando escrevo restrições de expressão?

É possível escrever uma restrição de expressão utilizando os operadores de prefixo disponíveis ou utilizando a notação de infixo. Para os operadores Mín., Máx. e Abs, não pode utilizar 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 utilizar ao escrever restrições de expressão?

As tabelas a seguir listam os operadores e as notações de infixo que pode utilizar ao criar uma restrição de expressão para um componente num modelo de configuração de produto. Os exemplos da primeira tabela mostram como escrever uma expressão utilizando os operadores ou a notação de infixo.

Operador Descrição Sintaxe Exemplos
Implica Se a condição a for verdadeira, aplique a restrição b. Implies[a, b], infix: a -: b
  • Operador: Implies[x != 0, y >= 0]
  • Notação de infixo: x != 0 -: y >= 0
E Isto ocorre apenas se todas as condições forem verdadeiras. Se o número de condições for 0 (zero), produz True. E[args], infixo: a & b & ... & z
  • Operador: And[x == 2, y <= 2]
  • Notação infixa: x == 2 & y <= 2
Ou Isto será verdadeiro se qualquer condição for verdadeira. Se o número de condições for 0, produzirá False. Or[args], infixo: a | b | ... | z
  • Operador: Or[x == 2, y <= 2]
  • Notação de infixo: x == 2 | y <= 2
Mais Isto soma as condições. Se o número de condições for 0, produzirá 0. Plus[args], infix: a + b + ... + z
  • Operador: Plus[x, y, 2] == z
  • Notação de infixo: x + y + 2 == z
Menos Isto nega o argumento. Deve ter exatamente uma condição. Minus[expr], infix: -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, produzirá 1. Times[args], infix: a * b * ... * z
  • Operador: Times[x, y, 2] == z
  • Notação de infixo: x * y * 2 == z
Potência Leva um exponencial. 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 utilizada apenas se o expoente for uma constante positiva. Power[args], infix: a ^ b ^ ... ^ z
  • Operador: Power[x, 2] == y
  • Notação de infixo: x ^ 2 == y
Máx. Isto produz a maior condição. Se o número de condições for 0, produzirá Infinito. Max[args] Operador: Max[x, y, 2] == z
Mín. Isto produz a menor condição. Se o número de condições for 0, produzirá Infinito. Min[args] Operador: Min[x, y, 2] == z
Não Isto produz a inversão lógica da condição. Deve ter exatamente uma condição. Not[expr], infix: !expr
  • Operador: Not[x] & Not[y == 3]
  • Notação de infixo: !x!(y == 3)

Os exemplos na tabela a seguir mostram como escrever 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 que uma adição binária onde há um segundo binário.
x ^ y ^ z Exponenciação com associabilidade direta
!x Não booleano
x -: y Implicação booleana
x y
x & y & z Booleano e
x == y == z Igualdade
x != y != z Distinto
x < y < z Less than
x > y > z Greater than
x <= y <= z Menor que ou igual a
x >= y >= z Maior que ou igual a
(x) Precedência predefinida de sobreposição de parênteses.

Por que as minhas restrições de expressão não são validadas corretamente?

Não é possível utilizar palavras-chave reservadas como nomes de atributos, componentes ou subcomponentes num modelo de configuração de produto. Veja uma lista das palavras-chave reservadas que não pode utilizar:

  • Teto
  • Elemento
  • Equal
  • Chão
  • Se
  • Menos
  • Maior
  • Implica
  • Registo
  • Máx.
  • Mín.
  • Menos
  • Mais
  • Potência
  • Horas
  • Intervalo de tempo
  • Modelo
  • Decisão
  • Objetivo

Recursos adicionais

Criar uma restrição de expressão

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