Hola a todos,
Tengo un modelo en el generador de perfiles y me gustaría guardar varias configuraciones diferentes. Por lo general, uso la configuración Recordar parámetro en Profiler para hacer esto. Sin embargo, en este caso particular quiero guardar todas las combinaciones de los parámetros X1 a X4 de -1 a +1 en pasos de 0,1.
Necesito ayuda con el siguiente código JSL para hacer esto:
Profiler(
Y( :Y ),
Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
:"X1"n( 0, Lock( 0 ), Show( 1 ) ),
:"X2"n( 0, Lock( 0 ), Show( 1 ) ),
:"X3"n( 0, Lock( 0 ), Show( 1 ) ),
:"X4"n( 0, Lock( 0 ), Show( 1 ) )
),
<FONT color="#FF0000">Recordar configuración( "Configuración 1", Informe de diferencias( 1 ) ), Valor del término( :"X1"n( 0, Bloquear( 0 ), Mostrar( 1 ) ), :"X2"n( 0, Bloquear( 0 ), Mostrar( 1 ) ), :"X3"n( 0, Bloquear( 0 ), Mostrar( 1 ) ), :"X4"n( 0, Bloquear( 0 ), Mostrar( 1 ) ) ) )</FONT>
);
Sería fantástico si alguien pudiera modificar el código existente.
¡Gracias de antemano!
No estoy seguro de qué tan feliz estaría JMP al agregar tantas opciones diferentes al generador de perfiles (20*20*20*20 o ¿me estoy perdiendo algo?).
Pero puede agregar una nueva fila a su tabla que actualiza con sus valores y luego realizar un bucle tantas veces como tenga configuraciones diferentes mientras la actualiza y usa << Establecer datos en fila
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Tiretread.jmp", Invisible);
obj = dt << Contour Profiler(
Y(
:Pred Formula ABRASION, :Pred Formula MODULUS,
:Pred Formula ELONG, :Pred Formula HARDNESS
),
Invisible
);
settings = As List(Repeat(-1::1::0.1, 3)`);
dt << Add Rows(1);
max_row = N Rows(dt);
For Each({setting}, settings,
dt[max_row, {"SILICA", "SILANE", "SULFUR"}] = setting;
obj << Set to Data in Row(max_row);
obj << Remember Settings;
);
dt << Delete Rows(max_row);
obj << show window;
@jthi
Muchas gracias por proporcionar el código. El código me proporciona 21 configuraciones recordadas de -1 a +1 en pasos de 0,1 para todos los factores, pero sin combinaciones entre ellos. En realidad, esto es casi lo que quiero. Pensé que sería una tontería que JMP tuviera 21*21*21*21 opciones, pero realmente me gustaría intentarlo. ¿Podrías modificar el código para que eso sea posible?
Debería poder utilizar el diseño factorial completo para crear todas las combinaciones posibles.
Sugeriría NO ejecutar esto con todas las combinaciones posibles.
Names Default To Here(1);
Clear Log();
// Calculate combinations - START
doe_platform = DOE(
Full Factorial Design,
{Add Response(Maximize, "Y", ., ., .), Add Factor(
Continuous,
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21},
"X1",
0
), Add Factor(
Continuous,
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21},
"X2",
0
), Add Factor(
Continuous,
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21},
"X3",
0
), Add Factor(
Continuous,
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21},
"X4",
0
), Set Random Seed(6613116), Make Design, Simulate Responses(0),
Set Run Order(Sort Left to Right)},
Invisible
);
dt = doe_platform << Make Table(Invisible);
doe_platform << Close Window;
m = dt[0, 2::5];
Close(dt, no save);
Show(N Items(m), Dim(m), N Row(m) == 21^4); // N Items(m) = 777924; Dim(m) = [194481 4]; N Row(m) == 21 ^ 4 = 1;
settings = As List((m - 11) / 10);
m = Empty();
// Calculate combinations - END
dt = Open("$SAMPLE_DATA/Tiretread.jmp", Invisible);
dt << New Column("A", Numeric, Continuous, Formula(
:SILICA * :SILANE * :SULFUR * :ELONG
));
obj = dt << Contour Profiler(
Y(A),
Invisible
);
dt << Add Rows(1);
max_row = N Rows(dt);
For Each({setting}, settings[1::100],
dt[max_row, {"SILICA", "SILANE", "SULFUR", "ELONG"}] = setting;
obj << Set to Data in Row(max_row);
obj << Remember Settings;
);
dt << Delete Rows(max_row);
obj << show window;
Write();