Restricciones de expresión y tabla en modelos de configuración de productos
En este artículo se describe el uso de las restricciones de expresión y las restricciones de tabla. Las restricciones controlan los valores de atributo que puede seleccionar al configurar los productos para un pedido de ventas, un presupuesto de ventas, un pedido de compra o un pedido de producción. Puede usar las restricciones de expresión o las restricciones de tablas, en función de cómo prefiere crear las restricciones.
Las restricciones se usan para controlar los valores de atributo que puede seleccionar al configurar los productos para un pedido de ventas, un presupuesto de ventas, un pedido de compra o un pedido de producción. Puede usar las restricciones de expresión o las restricciones de tablas, en función de cómo prefiere crear las restricciones.
¿Qué son las restricciones de expresión?
Las restricciones de expresión se caracterizan por una expresión que utiliza operadores y funciones aritméticas y booleano. Una restricción de expresión para un componente concreto se escribe en un modelo de configuración de productos. No puede volver a utilizarse ni compartirse con otro componente. Sin embargo, las restricciones de expresión de un componente pueden hacer referencia a los atributos de los subcomponentes del componente.
¿Qué son las restricciones de tabla?
Las restricciones de tabla muestran las combinaciones de valores permitidas para los atributos cuando configura un producto. Las definiciones de la restricción de tabla se pueden usar genéricamente. Cuando se crea una restricción de tabla para un componente en un modelo de configuración de productos, selecciona una definición de restricción de tabla. Para crear las combinaciones permitidas, agrega atributos de tipos específicos a los componentes. Cada tipo de atributo tiene un valor específico.
Ejemplo de una restricción de tablas
Este ejemplo muestra cómo puede limitar la configuración de un altavoz según acabados de caja y frontales específicos. La primera tabla muestra los acabados de caja y frontales que suelen estar disponibles para la configuración. Hay valores definidos para los tipos de atributos Acabado de la caja y Rejilla delantera.
Tipo de atributo | Valores |
---|---|
Acabado de la caja | Negro, roble, palo de rosa y blanco |
Rejilla delantera | Negro, metálico y blanco |
La tabla siguiente muestra las combinaciones definidas por la restricción de tabla Color y acabado. Con esta restricción de tabla puede configurar un altavoz que tenga un acabado de roble y una rejilla negra, un acabado de palisandro y una rejilla blanca, etc.
Finalizar | Rejilla |
---|---|
Roble | Negro |
Palisandro | Blanco |
Blanco | Negro |
Blanco | Blanco |
Negro | Negro |
Negro | Metálico |
Puede crear restricciones de tablas definidas por el sistema y definidas por el usuario. Para obtener más información, consulte Restricciones de tablas definidas por el usuario o definidas por el sistema.
¿Qué sintaxis debe usarse para resolver restricciones de escritura?
Debe utilizar la sintaxis del lenguaje de modelado de optimización (OML) para escribir las restricciones. El sistema utiliza Microsoft Solver Foundation para solucionar las restricciones.
¿Se deben usar restricciones de tablas o restricciones de expresión?
Puede usar restricciones de expresión o restricciones de tablas, en función de cómo prefiere crear las restricciones. Una restricción de tabla se crea como una matriz, mientras que una restricción de expresión es una sentencia individual. Si configura un producto, no importa qué tipo de restricción se usa. El ejemplo siguiente muestra en qué se diferencian los dos métodos.
Si configura un producto mediante las configuraciones de restricciones siguientes, podrá hacer uso de estas combinaciones:
- Un producto de color negro y de tamaño 30 o 50
- Un producto de color rojo y de tamaño 20
Configuración de restricciones de tabla
Color | Tamaño |
---|---|
Negro | 30 |
Negro | 50 |
Rojo | 20 |
Configuración de restricciones de expresión
(Color == "Negro" & (size == "30" | size == "50")) | (color == "Rojo" & size = "20")
¿Se deben usar operadores o una notación de infijo al escribir las restricciones de expresión?
Se puede escribir una restricción de expresión mediante los operadores de prefijo disponibles, o bien mediante la notación de infijo. Para los operadores Min, Max y Abs no puede usar una notación de infijo. Estos operadores se incluyen como operadores estándar en la mayoría de los lenguajes de programación.
¿Qué operadores o notaciones de infijo se pueden usar al escribir restricciones de expresión?
En las tablas siguientes se enumeran los operadores y la notación de infijo que se pueden utilizar al escribir la restricción de expresión de un componente en un modelo de configuración de productos. Los ejemplos de la primera tabla muestran cómo escribir una expresión mediante la notación de infijo o los operadores.
Operador | Description | Sintaxis | Ejemplo |
---|---|---|---|
Implica | Si la condición a es verdadera, aplique la restricción b. | Implies[a, b], infix: a -: b |
|
Y | Se aplica solo si todas las condiciones son verdaderas. Si el número de condiciones es 0 (cero), da lugar a True. | And[args], infix: a & b & ... & z |
|
O | Se aplica si cualquier condición es verdadera. Si el número de condiciones es 0 (cero), da lugar a False. | Or[args], infix: a | b | ... | z |
|
Más | Esto suma sus condiciones. Si el número de condiciones es 0 (cero), da lugar a 0. | Plus[args], infix: a + b + ... + z |
|
Menos | Esto establece su argumento como negativo. Debe tener exactamente una condición. | Minus[expr], infix: -expr |
|
Abs | Toma el valor absoluto de la condición. Debe tener exactamente una condición. | Abs[expr] | Operador: Abs[x] |
Horas | Toma el producto de sus condiciones. Si el número de condiciones es 0 (cero), da lugar a 1. | Times[args], infix: a * b * ... * z |
|
Inicio/apagado | Toma un exponencial. Aplica la potencia de derecha a izquierda. (Es decir, es asociativo a la derecha). Por tanto, Power[a, b, c] es equivalente Power[a, Power[b, c]]. Power solo se puede usar si el exponente es una constante positiva. | Power[args], infix: a ^ b ^ ... ^ z |
|
Máx. | Produce la condición mayor. Si el número de condiciones es 0 (cero), produce Infinity. | Max[args] | Operador: Max[x, y, 2] == z |
Mín. | Produce la condición más pequeña. Si el número de condiciones es 0 (cero), produce Infinity. | Min[args] | Operador: Min[x, y, 2] == z |
No | Produce el contrario lógico de la condición. Debe tener exactamente una condición. | Not[expr], infix: !expr |
|
Los ejemplos en la siguiente tabla muestran cómo escribir una notación de infijo.
Notación de infijo | Description |
---|---|
x + y + z | Suma |
x * y * z | Multiplicación |
x - y | La resta binaria se traduce de la misma forma que la adición binaria donde hay un segundo negativo. |
x ^ y ^ z | Exponenciación con asociación a la derecha |
!x | No booleano |
x -: y | Implicación booleano |
x | y |
x & y & z | Booleano y |
x == y == z | Igualdad |
x != y != z | Distinto |
x < y < z | Menor que |
x > y > z | Mayor que |
x <= y <= z | Inferior a o igual a |
x >= y >= z | Superior a o igual a |
(x) | El paréntesis anula la prioridad predeterminada. |
¿Por qué las restricciones de expresión no se validan correctamente?
No se pueden usar palabras clave reservadas como nombres del solucionador de atributos, componentes o subcomponentes en un modelo de configuración de productos. A continuación se muestra una lista de palabras clave reservadas que no se pueden usar:
- Techo
- Elemento
- Igual
- Piso
- Si
- Menor
- Mayor
- Implica
- Registro
- Máx.
- Mín.
- Menos
- Más
- Potencia
- Tiempos
- Ranura
- Modelo
- Decisión
- Objetivo