Ciao a tutti,
Ho un modello nel profiler e vorrei salvare una serie di impostazioni diverse. Di solito, per farlo utilizzo l'impostazione Ricorda parametro nel Profiler. Tuttavia, in questo caso particolare voglio salvare tutte le combinazioni per i parametri da X1 a X4 da -1 a +1 in passi di 0,1.
Ho bisogno di aiuto con il seguente codice JSL per fare questo:
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">Ricorda impostazioni( "Impostazione 1", Rapporto differenze( 1 ) ), Valore termine( :"X1"n( 0, Blocca( 0 ), Mostra( 1 ) ), :"X2"n( 0, Blocca( 0 ), Mostra( 1 ) ), :"X3"n( 0, Blocca( 0 ), Mostra( 1 ) ), :"X4"n( 0, Blocca( 0 ), Mostra( 1 ) ) ) )</FONT>
);
Sarebbe fantastico se qualcuno potesse modificare il codice esistente.
Grazie in anticipo!
Non sono sicuro di quanto sarebbe felice JMP di aggiungere così tante opzioni diverse al profiler (20*20*20*20 o mi sto perdendo qualcosa?).
Ma potresti aggiungere una nuova riga alla tua tabella con cui aggiorni con i tuoi valori e poi ripetere tutte le volte che hai impostazioni diverse mentre la aggiorni e usando << Imposta su dati nella riga
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
Grazie mille per aver fornito il codice. Il codice mi fornisce 21 impostazioni memorizzate da -1 a +1 in passaggi di 0,1 per tutti i fattori ma nessuna combinazione tra di loro. Questo in realtà è quasi quello che voglio. Ho pensato che sarebbe stato banale per JMP avere 21*21*21*21 opzioni, ma mi piacerebbe davvero provarlo. Potresti modificare il codice per renderlo possibile?
Dovresti essere in grado di utilizzare il disegno fattoriale completo per creare tutte le combinazioni possibili.
Suggerirei di NON eseguirlo con tutte le combinazioni possibili
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();