Come passare una variabile nella formula del profiler personalizzatoPossiamo definire una formula personalizzata nel profiler personalizzato ed è abbastanza semplice, come mostra l'esempio seguente
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Tiretread.jmp" );
obj = Custom Profiler( Y( :Pred Formula ABRASION, :Pred Formula MODULUS ) );
obj << Objective Formula(
:Pred Formula ABRASION + .5 * :Pred Formula MODULUS
);
obj << Optimize;
Ora, diciamo che vorrei cambiare il valore del coefficiente da 0,5 a un'altra impostazione. Quindi definisco la seguente formula:
coef=4;
myFormula=Parse(eval(EvalExpr(":Pred Formula ABRASION + "||Char(coef)||" * :Pred Formula MODULUS")));
il risultato nel registro è ok:
:Pred Formula ABRASIONE + 4 * :Pred Formula MODULO
ma, se uso la stessa frase nell'affermazione precedente, non riesco ad avere il risultato atteso:
obj << Objective Formula(Parse(eval(EvalExpr(":Pred Formula ABRASION + "||Char(coef)||" * :Pred Formula MODULUS"))));

Probabilmente ho commesso un errore di base, ma ho problemi con esso. e vorrei adattare questo metodo a una situazione più complessa (cambiare i coefficienti di desiderabilità nell'espressione nativa)
Grazie per i vostri suggerimenti
Re: Come passare una variabile nella formula del profiler personalizzatoFirenze,
In generale, è preferibile trattare expression come espressioni piuttosto che come stringhe di testo da valutare. Questo funzionerà:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Tiretread.jmp" );
obj = Custom Profiler( Y( :Pred Formula ABRASION, :Pred Formula MODULUS ) );
cVal = 4;
Eval(Substitute(
Expr(
obj << Objective Formula(
:Pred Formula ABRASION + coefVal * :Pred Formula MODULUS
)
),
Expr(coefVal),cVal
));
obj << Optimize;
Assistente
Re: Come passare una variabile nella formula del profiler personalizzatoCiao Don,
Grazie mille per la tua risposta.
In questo esempio di base, funziona abbastanza bene, poiché la mia formula è semplice.
Nella vita reale, ho una situazione più complessa. Voglio essere in grado di impostare il contenuto delle desiderabilità che catturerò da una tabella di dati.
y1_target_value=175;
y1_min=150;
y1_max=200;
y2_target=500;
y2_min=450;
y2_max=550;
Eval(Substitute(
Expr(
obj << Objective Formula(
Exp((0.25 * Log(Desirability([100, y1_target, 200], [0.0183, 1, 0.0183], Pred Formula Abrasion)) + 0.25 * Log(Desirability([400, 475, 550], [0.0183, 1, 0.0183], Pred Formula Elongation))) / 0.5)
)
),
Expr(y1_target),y1_target_value
));
obj << Optimize;
se applico il sostituto in questo caso, ho un errore.

e sì.... Voglio cambiare il contenuto delle 6 variabili (target e spec per le due Y)!!
Grazie per i vostri suggerimenti,
Firenze
Re: Come passare una variabile nella formula del profiler personalizzatoFirenze,
Il problema ha a che fare con il modo in cui funziona l'operatore di matrice (le parentesi quadre aperte e chiuse). L'approccio più semplice a cui riesco a pensare è creare le matrici in anticipo e trattarle nel loro insieme, piuttosto che cercare di costruirle in Sostituire . Questo dovrebbe funzionare
y1_target_value=175;
y1_min=150;
y1_max=200;
y2_target=500;
y2_min=450;
y2_max=550;
y1Mat = Matrix({y1_min,y1_target_value,y1_max});
y2Mat = Matrix({y2_min,y2_target,y1_max});
Eval(Substitute(
Expr(
obj << Objective Formula(
Exp((0.25 * Log(Desirability(y1Mat, [0.0183, 1, 0.0183], Pred Formula Abrasion)) + 0.25 * Log(Desirability(y2Mat, [0.0183, 1, 0.0183], Pred Formula Elongation))) / 0.5)
)
),
Expr(y1Mat),y1Mat,
Expr(y2Mat),y2Mat,
));
obj << Optimize;
Re: Come passare una variabile nella formula del profiler personalizzatoMi sento come se mi mancasse qualcosa qui. Perché usare Expr/Eval, ecc. Invece di inserire solo la formula?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Tiretread.jmp" );
y1_target_value = 175;
y1_min = 150;
y1_max = 200;
y2_target = 500;
y2_min = 450;
y2_max = 550;
y1Mat = Matrix( {y1_min, y1_target_value, y1_max} );
y2Mat = Matrix( {y2_min, y2_target, y1_max} );
obj = Custom Profiler( Y( :Pred Formula ABRASION, :Pred Formula MODULUS ) );
obj << Objective Formula(
Exp(
(0.25 * Log( Desirability( y1Mat, [0.0183, 1, 0.0183], :Pred Formula Abrasion ) ) + 0.25 * Log(
Desirability( y2Mat, [0.0183, 1, 0.0183], :Pred Formula Elongation )
)) / 0.5
)
);
obj << Optimize;
Re: Come passare una variabile nella formula del profiler personalizzatoSe guardi l'espressione in Formula contorno, i valori per y1Mat E y2Mat appaiono non valutati, cioè come variabili:
Exp((0.25 * Log(Desirability(<FONT color="#FF0000">y1Mat</FONT>, [0.0183, 1, 0.0183], :Pred Formula Abrasion)) + 0.25 * Log(Desirability(<FONT color="#FF0000">y2Mat</FONT>, [0.0183, 1, 0.0183], :Pred Formula Elongation))) / 0.5)
A proposito, sembra che ho avuto alcuni errori nel codice precedente. Ecco la versione corretta
y1_target_value=175;
y1_min=150;
y1_max=200;
y2_target=500;
y2_min=450;
y2_max=550;
y1Mat = Matrix({y1_min,y1_target_value,y1_max});
y2Mat = Matrix({y2_min,y2_target,y2_max});
Eval(Substitute(
Expr(
obj << Objective Formula(
Exp((0.25 * Log(Desirability(y1Mat, [0.0183, 1, 0.0183], :Pred Formula Abrasion)) + 0.25 * Log(Desirability(y2Mat, [0.0183, 1, 0.0183], :Pred Formula Elongation))) / 0.5)
)
),
Expr(y1Mat),y1Mat,
Expr(y2Mat),y2Mat,
));
obj << Optimize;
Detto questo, non sono sicuro che questo sia il modo per implementare limiti diversi per le funzioni di desiderabilità. La formula sembra corretta, ma manca il valore oggettivo.
Re: Come passare una variabile nella formula del profiler personalizzatoGrazie per i consigli! funziona
Per quanto riguarda la formula, è quella definita da JMP quando lancio il profiler personalizzato con la formula di previsione generata dalla piattaforma Fit Model.
L'impostazione predefinita è la seguente:

con questo tipo di formula di previsione:

Verificherò se ho gli stessi risultati rispetto alla piattaforma di Model Fitting nativa.
Grazie ancora!
Re: Come passare una variabile nella formula del profiler personalizzatoGrazie Firenze,
Ho trovato il problema. ero solito ABRASIONE E MODULO In Profilo personalizzato ma usato ABRASIONE E ALLUNGAMENTO nel Formula oggettiva .
Ecco il (si spera) codice privo di errori:
obj = Custom Profiler( Y( :Pred Formula ABRASION, :Pred Formula MODULUS ) );
y1_target_value=175;
y1_min=150;
y1_max=200;
y2_target=500;
y2_min=450;
y2_max=550;
y1Mat = Matrix({y1_min,y1_target_value,y1_max});
y2Mat = Matrix({y2_min,y2_target,y2_max});
Eval(Substitute(
Expr(
obj << Objective Formula(
Exp((0.25 * Log(Desirability(y1Mat, [0.0183, 1, 0.0183], :Pred Formula Abrasion)) + 0.25 * Log(Desirability(y2Mat, [0.0183, 1, 0.0183], :Pred Formula Modulus))) / 0.5)
)
),
Expr(y1Mat),y1Mat,
Expr(y2Mat),y2Mat,
));
obj << Optimize;