En el Soporte técnico, recibimos con frecuencia preguntas relacionadas con el uso de restricciones de factores en las plataformas de Diseño de experimentos de JMP. Tres opciones (restricciones lineales, el filtro de combinaciones no permitidas y el script de combinaciones no permitidas) ofrecen la posibilidad de restringir su espacio de diseño. Sin embargo, a veces los usuarios se comunican con nosotros para informarnos que el diseño resultante no respeta las restricciones que definieron.
Esta publicación del blog cubrirá específicamente el uso del script de combinaciones no permitidas, al que generalmente dirigimos a los usuarios, ya que es más fácil de usar que el filtro de combinaciones no permitidas. La opción de restricciones lineales es bastante sencilla, pero puede encontrar orientación al respecto.aquíSi es necesario.
La opción de script de combinaciones no permitidas le permite definir restricciones en su espacio de diseño mediante un script JSL. El aspecto clave a tener en cuenta es especificar qué combinaciones de niveles de factor sonnoPermitido en el diseño. El script JSL ingresado debe evaluarse como una expresión booleana. Cuando la expresión es verdadera, no permite que esa combinación ocurra en el diseño. El script no tiene que tener una forma lineal, por lo que existe el beneficio adicional de poder especificar restricciones no lineales. También puede usar funciones (las funciones indicadoras pueden ser especialmente útiles, como se ilustra en uno de los ejemplos más adelante en esta publicación).
Se puede utilizar un script de combinaciones no permitidas junto con factores numéricos continuos, discretos y categóricos, pero no es compatible con factores de mezcla o de bloqueo. En ejemplos posteriores se describen formas alternativas de definir restricciones en escenarios de mezcla.
En la expresión, los niveles de los factores numéricos continuos y discretos se referencian por sus valores numéricos. Los niveles de los factores categóricos se pueden referenciar por sus valores ordinales asociados (1, 2, 3, etc.) o por los valores de nivel nombrados.
Considere un diseño personalizado con dos factores continuos, un factor numérico discreto de cuatro niveles y un factor categórico de tres niveles.
El script para reproducir el cuadro de diálogo inicial del DOE con los factores descritos anteriormente es:
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ),
Add Factor( Continuous, -1, 1, "X1", 0 ),
Add Factor( Continuous, 100, 105, "X2", 0 ),
Add Factor( Discrete Numeric, {10, 20, 30, 40}, "X3", 0 ),
Add Factor( Categorical, {"A", "B", "C"}, "X4", 0 ),
Add Term( {1, 0} ), Add Term( {1, 1} ),
Add Term( {2, 1} ), Add Term( {3, 1} ), Add Potential Term( {3, 2} ),
Add Potential Term( {3, 3} ), Add Term( {4, 1} ),
Add Alias Term( {1, 1}, {2, 1} ), Add Alias Term( {1, 1}, {3, 1} ),
Add Alias Term( {1, 1}, {4, 1} ), Add Alias Term( {2, 1}, {3, 1} ),
Add Alias Term( {2, 1}, {4, 1} ), Add Alias Term( {3, 1}, {4, 1} ),
Set Sample Size( 12 ), Simulate Responses( 1 ), Save X Matrix( 0 )}
);
A modo de ejemplo, supongamos que no se puede realizar ninguna ejecución en su diseño donde el factor X1 toma un valor de 1 al mismo tiempo que el factor X4 toma un valor de A. Este sencillo script de combinaciones no permitidas se escribiría de la siguiente manera:
X1 == 1 & X4 == 1
o
X1 == 1 & X4 == "A"
La primera expresión utiliza el valor ordinal asociado a un valor de X4 = A y la segunda expresión simplemente hace referencia al valor del carácter. Cualquiera de las dos es aceptable. Esta expresión evita que cualquier ejecución tenga X1 = 1 y X4 = A simultáneamente.
Después de ejecutar el script, seleccione el botón de opción junto a Usar script de combinaciones no permitidas en la sección Definir restricciones de factores e ingrese una de las expresiones anteriores.
Para agregar restricciones de espacio de diseño adicionales al script, utilice el operador OR (|), que es necesario para separar expresiones cuando un diseño no puede contener ejecuciones que cumplan con los criterios de la expresión 1.oexpresión 2,oexpresión 3, etc.
Supongamos que, en el mismo diseño, la suma de los factores X1 y X2 no puede ser mayor que un valor de 102 cuando el factor X3 toma un valor de 3. Esta combinación no permitida se escribiría como:
((X1 + X2) > 102 & X3 == 30)
Usando el operador |, el script completo de combinaciones no permitidas se escribiría así:
(X1 == 1 & X4 == 1) |
((X1 + X2) > 102 & X3 == 30)
Después de realizar el diseño, notarás que JMP puede reformatear el script como se muestra a continuación, representando niveles de factores categóricos con el valor del carácter y eliminando paréntesis innecesarios mediante el análisis.

Algunos escenarios comunes que nos presentan los usuarios son:
1) ¿Cómo puedo especificar restricciones en el espacio de diseño en un diseño de mezcla, ya que las combinaciones no permitidas no son compatibles con los factores de mezcla?
Existen varias formas de manejar este problema si se utilizan factores numéricos discretos o continuos en lugar de factores de mezcla. En primer lugar, podríamos imponer una restricción de igualdad en el script de combinaciones no permitidas (y agregar cualquier otra restricción necesaria). Es probable que JMP no pueda encontrar un diseño factible utilizando una restricción de igualdad estricta (por ejemplo, utilizando el operador != o utilizando desigualdades estrictas < y > en una condición). Por lo tanto, debemos utilizar una expresión que especifique que la suma de los valores de los factores escerca de1.
Supongamos que tenemos tres factores de mezcla y que la suma de la mezcla es uno. Sabemos que uno de los factores (X1) solo puede tomar niveles discretos de 0, 0,25, 0,5, 0,75 y 1. Los otros dos factores (X2 y X3) pueden tomar cualquier valor entre 0 y 1, ambos inclusive. Por lo tanto, tiene más sentido definir el primero como un factor numérico discreto de cinco niveles y los otros dos como factores continuos.Para que los tres factores sumen aproximadamente uno, podemos especificar la restricción de pseudoigualdad como:
X1 + X2 + X3 > 1.001 | X1 + X2 + X3 < 0.999
que restringe la suma a una milésima de uno. Considerando que la fuerza impulsora de esta pregunta es poder especificar restricciones de factores en el contexto de un diseño de mezcla, supongamos que también queremos evitar que el valor de X3 sea mayor que el valor de X2 en el diseño. La expresión completa para ingresar en el campo de script de combinaciones no permitidas en este caso sería:
X1 + X2 + X3 > 1.001 | X1 + X2 + X3 < 0.999 | X3 > X2
Ejecute el siguiente script JSL para crear un ejemplo de este diseño.
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ),
Add Factor( Discrete Numeric, {0, 0.25, 0.5, 0.75, 1}, "X1", 0 ),
Add Factor( Continuous, 0, 1, "X2", 0 ), Add Factor( Continuous, 0, 1, "X3", 0 ),
Set Random Seed( 12345 ), Number of Starts( 1000 ), Add Term( {1, 1} ),
Add Term( {1, 2} ), Add Term( {1, 3} ), Add Term( {1, 4} ), Add Term( {2, 1} ),
Add Term( {3, 1} ), Add Alias Term( {1, 1}, {2, 1} ), Add Alias Term( {1, 1}, {3, 1} ),
Add Alias Term( {2, 1}, {3, 1} ), Set Sample Size( 20 ),
Disallowed Combinations( X1 + X2 + X3 > 1.001 | X1 + X2 + X3 < 0.999 | X3 > X2 ),
Make Design}
);
Como los valores de los tres factores no suman exactamente uno, tendrás que ajustar ligeramente el valor de uno de los factores continuos en la tabla de diseño resultante.
Un segundo enfoque más claro para la pregunta original es ingresar solo los factores X1 (el factor numérico discreto de cinco niveles) y X2 (factor continuo que va de 0 a 1) en el cuadro de diálogo inicial de Diseño personalizado. Los valores para X3 se pueden generar fácilmente en la tabla de diseño utilizando la fórmula 1 - X1 - X2. En la configuración de diseño inicial con solo los factores X1 y X2, utilizaremos un script de combinaciones no permitidas para asegurarnos de que la suma de X1 y X2 no sea menor que cero ni mayor que 1. Además, nuevamente agregaremos la restricción de que X3 no puede ser mayor que X2. Dado que X3 = 1 - X1 - X2, podemos reescribir la restricción X3 > X2 como 2*X2 + X1 < 1 e incluirla en la expresión con un operador OR.
En este escenario, el script completo de combinaciones no permitidas sería:
X1 + X2 > 1 | X1 + X2 < 0 | 2 * X2 + X1 < 1
Un script completo para crear este diseño de ejemplo es:
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ), Add Factor(
Discrete Numeric,
{0, 0.25, 0.5, 0.75, 1},
"X1",
0
), Add Factor( Continuous, 0, 1, "X2", 0 ),
Number of Starts( 1000 ), Add Term( {1, 0} ), Add Term( {1, 1} ), Add Potential Term( {1, 2} ),
Add Potential Term( {1, 3} ), Add Potential Term( {1, 4} ), Add Term( {2, 1} ),
Add Alias Term( {1, 1}, {2, 1} ), Set Sample Size( 20 ),
Disallowed Combinations( X1 + X2 > 1 | X1 + X2 < 0 | 2 * X2 + X1 < 1 ),
Simulate Responses( 1 ), Save X Matrix( 0 ), Make Design}
);
En ambos enfoques anteriores, las propiedades de columna de los factores en la tabla de diseño deben modificarse al final para reflejar las características reales de la mezcla del diseño. Puede agregar las propiedades manualmente según la guíaAquí en nuestra documentaciónSin embargo, un método más rápido es crear otro diseño personalizado utilizando factores de mezcla reales (sin necesidad de combinaciones no permitidas) y crear la tabla (como plantilla). Luego, copie su diseño en esa tabla de "plantilla". Al hacerlo, se asegura de que estén presentes las propiedades de columna adecuadas para los factores de mezcla.
2) ¿Cómo puedo especificar que un número máximo de factores pueden estar “activos” en un solo experimento? Supongamos que hay seis factores, pero como máximo tres de ellos pueden tomar un valor mayor que cero en cualquier ejecución experimental. Elegimos definir seis factores numéricos discretos (X1 - X6) con diferentes cantidades de niveles.
Una herramienta esencial que hay que recordar es que el script de combinaciones no permitidas acepta funciones. Las funciones indicadoras son clave en este escenario. Por ejemplo, la función indicadora (X1 > 0) se resuelve en 1 si X1 es mayor que cero y se resuelve en 0 si no lo es. Por lo tanto, sumar las funciones indicadoras para los seis factores y luego excluir los casos en los que la suma sea mayor que 3 restringirá el espacio de diseño de modo que no haya más de tres factores activos en una sola ejecución. El script de combinaciones no permitidas se escribe de la siguiente manera:
(X1 > 0) + (X2 > 0) + (X3 > 0) + (X4 > 0) + (X5 > 0) + (X6 > 0) > 3
Y este diseño de ejemplo se puede crear con el siguiente script JSL:
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ), Add Factor( Discrete Numeric, {0, 1, 2, 3}, "X1", 0 ),
Add Factor( Discrete Numeric, {0, 1, 2, 3}, "X2", 0 ), Add Factor( Discrete Numeric, {0, 1}, "X3", 0 ),
Add Factor( Discrete Numeric, {0, 1, 2, 3}, "X4", 0 ), Add Factor( Discrete Numeric, {0, 1, 5}, "X5", 0 ),
Add Factor( Discrete Numeric, {0, 1, 2, 3}, "X6", 0 ), Add Term( {1, 0} ), Add Term( {1, 1} ), Add Potential Term( {1, 2} ),
Add Potential Term( {1, 3} ), Add Term( {2, 1} ), Add Potential Term( {2, 2} ), Add Potential Term( {2, 3} ),
Add Term( {3, 1} ), Add Term( {4, 1} ), Add Potential Term( {4, 2} ), Add Potential Term( {4, 3} ), Add Term( {5, 1} ),
Add Potential Term( {5, 2} ), Add Term( {6, 1} ), Add Potential Term( {6, 2} ), Add Potential Term( {6, 3} ),
Add Alias Term( {1, 1}, {2, 1} ), Add Alias Term( {1, 1}, {3, 1} ), Add Alias Term( {1, 1}, {4, 1} ),
Add Alias Term( {1, 1}, {5, 1} ), Add Alias Term( {1, 1}, {6, 1} ), Add Alias Term( {2, 1}, {3, 1} ),
Add Alias Term( {2, 1}, {4, 1} ), Add Alias Term( {2, 1}, {5, 1} ), Add Alias Term( {2, 1}, {6, 1} ),
Add Alias Term( {3, 1}, {4, 1} ), Add Alias Term( {3, 1}, {5, 1} ), Add Alias Term( {3, 1}, {6, 1} ),
Add Alias Term( {4, 1}, {5, 1} ), Add Alias Term( {4, 1}, {6, 1} ), Add Alias Term( {5, 1}, {6, 1} ), Set Sample Size( 16 ),
Disallowed Combinations( (X1 > 0) + (X2 > 0) + (X3 > 0) + (X4 > 0) + (X5 > 0) + (X6 > 0) > 3 ),
Save X Matrix( 0 ), Make Design}
);
Después de ejecutar el script, tenga en cuenta que al menos tres factores toman un valor de cero para cada ejecución del diseño.
En cualquiera de estos escenarios, si aparece la alerta JMP “El diseñador óptimo no logró converger”, es posible que sus restricciones sean demasiado restrictivas. Si es posible, relaje las restricciones para daralgoritmo de intercambio de coordenadasuna mayor probabilidad de encontrar un diseño. También podrías intentar aumentar laNúmero de arranquesy/o cambiar la estimabilidad de los términos en el modelo asumido aSi es posibleen lugar deNecesariopara ver si se puede lograr la convergencia.
Como siempre, no dude en comunicarse con el Soporte técnico si tiene preguntas sobre el uso de las opciones de restricción de espacio de diseño en JMP, o si su diseño está produciendo ejecuciones que no son sensatas dadas las restricciones previstas.