Automatice la optimización (secuencia de comandos) para "cada fila" mediante el Generador de perfiles personalizadoHola, tengo un cliente @Solvay que usa Custom Profiler.
Su objetivo es revisar cada fila para la que el rendimiento está por debajo de la especificación, obtener los valores de los factores, bloquear los factores sobre los que no tiene control y optimizar el rendimiento utilizando los factores sobre los que tiene control, luego guardar la nueva configuración y el rendimiento esperado. .
Esto se puede hacer manualmente, pero lamentablemente el Registro no guarda el código correspondiente.
Como tiene una gran tabla de datos, le gustaría escribir el proceso para automatizarlo.
¿Alguien sabe el código correspondiente?
nota: esto debería aparecer en la comunidad JMP en los próximos días, supongo.
emmanuel
Re: Automatizar la optimización (secuencia de comandos) para "cada fila" mediante el Generador de perfiles personalizadoAquí hay un script para hacer esto bloqueando solo una variable. Para pasar por el bloqueo de múltiples variables, necesitaría anidar más bucles For:
dt = open ("$SAMPLE_DATA\Body Fat.jmp");
dt << New Column ("Formula", Set Formula (109.665262588823 + 0.329339426252964 * :"Weight (lbs)"n +
-1.47623913006859 * :"Height (inches)"n + -0.492211525467987 *
:"Neck circumference (cm)"n + -1.41262250197006 *
:"Wrist circumference (cm)"n + (:"Height (inches)"n
-70.1488095238095) * ((:"Height (inches)"n - 70.1488095238095) *
-0.0306978267773712) + (:"Height (inches)"n - 70.1488095238095) * ((
:"Neck circumference (cm)"n - 37.9920634920635) * -0.121564139238233)
+ (:"Neck circumference (cm)"n - 37.9920634920635) * ((
:"Neck circumference (cm)"n - 37.9920634920635) * -0.127296845579246)));
dt:Formula << Set Property ("Response Limits", {Goal( Match Target ), Lower (20, .05), Middle (25, 1), Upper (30, .05)});
prof = dt << Profiler ( Y(:Formula));
for (i = 60, i <= 74, i++,
prof << Term Value ("Height (inches)" (i, Lock (1)) );
prof << Maximize and Remember;
);
Re: Automatizar la optimización (secuencia de comandos) para "cada fila" mediante el Generador de perfiles personalizadoEn lugar de anidar bucles y usar "Mazimizar y recordar", también existe el mensaje "Maximizar para cada punto de cuadrícula" que podría explorarse.
Re: Automatizar la optimización (secuencia de comandos) para "cada fila" mediante el Generador de perfiles personalizadoEstaba jugando con una idea para hacer algo así.
Names Default To Here( 1 );
// comment out the nexct line if the script is pasted into a table
dt = Open( "AutoProfiler Tiretread.jmp" );
// uncomment the next line if the script is pasted into a table
//dt=current data table();
//This is where your profiler script goes
obj = dt << Profiler(
Y(
:Pred Formula ABRASION,
:Pred Formula MODULUS,
:Pred Formula ELONG,
:Pred Formula HARDNESS
),
Profiler(
1,
Term Value(
SILICA( 1.25, Lock( 0 ), Show( 1 ) ),
SILANE( 50, Lock( 0 ), Show( 1 ) ),
SULFUR( 2.25, Lock( 0 ), Show( 1 ) )
),
Simulator(
1,
Factors(
SILICA << Random( Normal( 1.25, 0.3266 ) ),
SILANE << Random( Normal( 50, 6.532 ) ),
SULFUR << Random( Normal( 2.25, 0.3266 ) )
),
Automatic Histogram Update( 1 )
)
)
);
//your profiler goes above here
obj << Simulator( 1 );
obj2 = obj << Get Simulator;
obj2 << Automatic Histogram Update( 1 );
For( i = 1, i <= N Rows( dt ), i++,
obj << Set to Data in Row( i );
obj << Remember Settings(Column(1)[i]); //"Column(1)[i]" is the firtst column of the table, ith row
);//end of for loop
obj<<DISPATCH></DISPATCH>
Ejecuta el generador de perfiles y guarda la configuración de todas las filas de la tabla. Su cliente tendría que crear un subconjunto de las filas de defectos y luego ejecutar un script como este.

Re: Automatizar la optimización (secuencia de comandos) para "cada fila" mediante el Generador de perfiles personalizadoGracias a los dos 